اطلاعیه

Collapse
No announcement yet.

ساخت تستر قطعات الکترونیکی با AVR

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #61
    پاسخ : ساخت تستر قطعات الکترونیکی با AVR

    این هم شماتیک این مدار (مدل قدیمیشه) :
    معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

    دیدگاه


      #62
      پاسخ : ساخت تستر قطعات الکترونیکی با AVR

      خیلی عالی بود دست گلت درد نکنه :biggrin:
      راستی من یه پروگرمر دست ساز دارم و با اون پروگرم کردم ایا مشل از این پروگرم نباشه..لطفا کمک کنید.
      اینم لینک پروگرم دست سازم
      http://s7.picofile.com/file/8233018842/New_

      واین پروگرمر دست ساز فقط برنامهPonyProgرو میشناسه :sad:

      دیدگاه


        #63
        پاسخ : ساخت تستر قطعات الکترونیکی با AVR

        نه مشکل از پروگرمر نمیتونه باشه.
        اگه از نوع stk200 هستش با نرم افزار PROGISP کار کنید و یا کدویژن.
        اگه با کدویژن کار میکنید توی تنظیمات پروگرمر stk300/200 رو انتخاب کنید و Ok کنید.
        بعد قسمت پروگرم رو باز کنید از منوی فایل گزینه Load flash کلیک کنید و بعد از تنظیم کردن فیوز بیت و تیک کردن Program fuse bit روی کلید program all کلیک کنید.
        در هنگام پروگرم کردن پیغامی میده که شما توی تنظیمات فیوز بیت حافظه ی eeprom رو فعال کردید و بعد یه پنجراه باز میشه تا فایل eep رو باز کنید.
        من کار های بالا رو انجام دادم و حالا هم درست کار میکنه.فقط حواستون باشه که فیبری که میزنید باکیفیت و بدون روغن لحیم باشه.
        سوالی بود در خدمتیم.
        معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

        دیدگاه


          #64
          پاسخ : ساخت تستر قطعات الکترونیکی با AVR

          با سلام
          دوستان امروز با مراجعه به این سایت :
          http://www.banggood.com/DIY-M12864-Graphics-Version-Transistor-Tester-Kit-LCR-ESR-PWM-p-986954.html
          ورژن دیگری از تستر قطعات دیدم که بسیار شبیه همین پروژه مطرح شده در اینجاست منتها با امکانات بیشتر و دیسپلی گرافیکی حال اگر ممکن است دوستان زحمت کشیده روی این مدل کار کنیم که دارای امکانات بیشتری است با تشکر

          دیدگاه


            #65
            پاسخ : ساخت تستر قطعات الکترونیکی با AVR

            نوشته اصلی توسط nimdar
            با سلام
            دوستان امروز با مراجعه به این سایت :
            http://www.banggood.com/DIY-M12864-Graphics-Version-Transistor-Tester-Kit-LCR-ESR-PWM-p-986954.html
            ورژن دیگری از تستر قطعات دیدم که بسیار شبیه همین پروژه مطرح شده در اینجاست منتها با امکانات بیشتر و دیسپلی گرافیکی حال اگر ممکن است دوستان زحمت کشیده روی این مدل کار کنیم که دارای امکانات بیشتری است با تشکر
            این ها فروشگاه هستند گه میخوای یه سری با آمازون وebay برن بنویس component tester کلی از اینها بهترش رو میاره :cry2:
            از دو چیز بسیار زیاد یاد گرفتم (1) نمونه مدارهای موجود در سایت های خارجی (2) مهندسی معکوس بردهای غیر ایرانی. به نقل از آقای مرتضی امانی
            --------------------------------------------------------
            تمام دنیا ما را تحریم کرده اند؛ حداقل خودمان همدیگر را تحریم نکنیم. به نقل از pencil
            --------------------------------------------------------
            اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است. mehran901

            دیدگاه


              #66
              پاسخ : ساخت تستر قطعات الکترونیکی با AVR

              ممنون از دوست عزیز اقای علی دهغان که راهنمای کردید

              وضمنا اگه میشه تنظیم فیوز بیت در کدویژن و Progispرو بزارید :agree:

              منظور یه عکس از هر کدومش

              دیدگاه


                #67
                پاسخ : ساخت تستر قطعات الکترونیکی با AVR

                سلام مجدد
                دوستان کسی اطلاع داره که این بهترین نمونه رایگانه؟
                اگه ازین بهتر پیدا نمیشه که به همین راضی هستیم ولی اگه بهتر از این نمونه هست (امکانات بیشتر) لطفا لینک بدید...
                من خودمم جستجو میکنم اگه به نتیجه ای رسیدم قرار میدم.

                دیدگاه


                  #68
                  پاسخ : ساخت تستر قطعات الکترونیکی با AVR

                  نوشته اصلی توسط AVR-MEGA8
                  سلام مجدد
                  دوستان کسی اطلاع داره که این بهترین نمونه رایگانه؟
                  اگه ازین بهتر پیدا نمیشه که به همین راضی هستیم ولی اگه بهتر از این نمونه هست (امکانات بیشتر) لطفا لینک بدید...
                  من خودمم جستجو میکنم اگه به نتیجه ای رسیدم قرار میدم.
                  درست که بهترین ورایگان هستش.
                  اما دوست عزیز شما که در پست قبلی گفتی قطعات اش رو میگیرم میسازم پس چی شد :biggrin:

                  دیدگاه


                    #69
                    پاسخ : ساخت تستر قطعات الکترونیکی با AVR

                    با سلام
                    دوستان عزیز اون مدلی را هم که من لینکش را گذاشتم یعنی این :
                    http://www.banggood.com/DIY-M12864-Graphics-Version-Transistor-Tester-Kit-LCR-ESR-PWM-p-986954.html

                    رایگانه اطلاعات بیشتر راجع به اون را میتوانید در اینجا ببینید :
                    https://www.mikrocontroller.net/articles/AVR_Transistortester#Downloads_.28your-language.29

                    در بخش Downloads (english میتوانید آخرین ورژن را که 1.11K را ببینید این ورژن همان است که در لینک اول بصورت تجاری با دیسپلی گرافیکی 7920 ارائه شده منظور من کار روی این مدل بود که کاملتر از مدلهای دیگر است

                    دیدگاه


                      #70
                      پاسخ : ساخت تستر قطعات الکترونیکی با AVR

                      نوشته اصلی توسط bahmangholami
                      ممنون از دوست عزیز اقای علی دهغان که راهنمای کردید

                      وضمنا اگه میشه تنظیم فیوز بیت در کدویژن و Progispرو بزارید :agree:

                      منظور یه عکس از هر کدومش
                      سلام این تصویر از کدویژن:


                      این هم از progisp (چون پروگرمرتون سریال هست از نسخه 6 استفاده کنید):
                      معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

                      دیدگاه


                        #71
                        پاسخ : ساخت تستر قطعات الکترونیکی با AVR

                        دوستان اگر می خوان شروع کنیم به تحلیل کد های نسخه قدیمی این دستگاه و خط به خط
                        ببینیم هر کدوم برای چی هستم آخه خوب نیست که یه نفر زحمت بکشه این همه کد بنویسه
                        و ما فقط استفاده کنیم.بعد از تحلیل کد ها میتونیم از میکروی mega128 و tftlcd رنگی استفاده
                        کنیم.و حتی تمام این امکانات پیشرفته رو بهش اضافه کنیم.

                        برای شروع این پروژه کامپایل شده atmel studio این دستگاه:
                        http://up.electro2014.ir/up/electro2014/AVR/Tester.rar

                        این هم لینک دانلود atmel studio 7:
                        http://www.atmel.com/System/BaseForm.aspx?target=tcm:26-77367
                        بعد از ثبت نام لینک دانلود کاملا رایگان در اختیارتون قرار میگیره.

                        خوب حالا کد ها ی مهم رو تحلیل میکنیم:
                        [code=c]#define ADC_PORT PORTC
                        #define ADC_DDR DDRC
                        #define ADC_PIN PINC
                        #define TP1 PC0
                        #define TP2 PC1
                        #define TP3 PC2[/code]
                        این کدها پورت و پین هایی که مستقیم به سیم های 1 و2و3 وصل شده رو تعریف کرده و باید adc باشد.

                        [code=c]#if defined(GERMAN) //deutsch
                        unsigned char TestRunning[] EEMEM = "Test lلuft...¤¤¤¤";
                        unsigned char Bat[] EEMEM = "Batterie ";
                        unsigned char BatWeak[] EEMEM = "schwach";
                        unsigned char BatEmpty[] EEMEM = "leer!¤¤¤";
                        unsigned char TestFailed1[] EEMEM = "Kein,unbek. oder";
                        unsigned char TestFailed2[] EEMEM = "defektes ¤¤¤";
                        unsigned char Bauteil[] EEMEM = "Bauteil¤¤¤";
                        unsigned char Unknown[] EEMEM = " unbek.¤¤";
                        unsigned char Diode[] EEMEM = "Diode: ";
                        unsigned char DualDiode[] EEMEM = "Doppeldiode ¤¤";
                        unsigned char TwoDiodes[] EEMEM = "2 Dioden";
                        unsigned char Antiparallel[] EEMEM = "antiparallel¤";
                        unsigned char InSeries[] EEMEM = "in Serie A=";
                        unsigned char K1[] EEMEM = ";K1=";
                        unsigned char K2[] EEMEM = ";K2=";
                        unsigned char GAK[] EEMEM = "GAK=";
                        unsigned char NextK[] EEMEM = ";K=";
                        unsigned char K[] EEMEM = "K=";
                        unsigned char Triac[] EEMEM = "Triac";
                        unsigned char Thyristor[] EEMEM = "Thyristor";


                        #ifdef UseM8
                        unsigned char OrBroken[] EEMEM = "oder defekt ¤";
                        unsigned char Resistor[] EEMEM = "Widerstand: ";
                        unsigned char Capacitor[] EEMEM = "Kondensator: ";
                        #endif

                        #elif defined(ENGLISH) //englisch
                        unsigned char TestRunning[] EEMEM = "Pleas Wait ...¤¤";
                        unsigned char Bat[] EEMEM = "Battery ¤";
                        unsigned char BatWeak[] EEMEM = "weak¤¤¤";
                        unsigned char BatEmpty[] EEMEM = "empty!¤¤";
                        unsigned char TestFailed1[] EEMEM = "No, unknown, or¤";
                        unsigned char TestFailed2[] EEMEM = "damaged ¤¤¤¤";
                        unsigned char Bauteil[] EEMEM = "part¤¤¤¤¤¤";
                        unsigned char Unknown[] EEMEM = " unknown¤";
                        unsigned char Diode[] EEMEM = "Diode: ";
                        unsigned char DualDiode[] EEMEM = "Double diode ¤";
                        unsigned char TwoDiodes[] EEMEM = "2 diodes";
                        unsigned char Antiparallel[] EEMEM = "anti-parallel";
                        unsigned char InSeries[] EEMEM = "serial A=¤¤";
                        unsigned char K1[] EEMEM = ";C1=";
                        unsigned char K2[] EEMEM = ";C2=";
                        unsigned char GAK[] EEMEM = "GAC=";
                        unsigned char NextK[] EEMEM = ";C=";
                        unsigned char K[] EEMEM = "C=";
                        unsigned char Triac[] EEMEM = "Triac";
                        unsigned char Thyristor[] EEMEM = "Thyristor";


                        #ifdef UseM8
                        unsigned char OrBroken[] EEMEM = "or damaged ¤¤";
                        unsigned char Resistor[] EEMEM = "Resistor: ¤¤";
                        unsigned char Capacitor[] EEMEM = "Capacitor: ¤¤";
                        #endif
                        #elif defined(POLISH) //polnisch
                        unsigned char TestRunning[] EEMEM = "Testowanie...¤¤¤¤";
                        unsigned char Bat[] EEMEM = "Bateria¤¤";
                        unsigned char BatWeak[] EEMEM = "slaba¤¤";
                        unsigned char BatEmpty[] EEMEM = "za slaba";
                        unsigned char TestFailed1[] EEMEM = "brak elementu¤¤¤";
                        unsigned char TestFailed2[] EEMEM = "lub uszkodz.";
                        unsigned char Bauteil[] EEMEM = "Element¤¤¤";
                        unsigned char Unknown[] EEMEM = " nieznany";
                        unsigned char Diode[] EEMEM = "Dioda: ";
                        unsigned char DualDiode[] EEMEM = "Duodioda ¤¤¤¤¤";
                        unsigned char TwoDiodes[] EEMEM = "2 diody¤";
                        unsigned char Antiparallel[] EEMEM = "przeciwsobnie";
                        unsigned char InSeries[] EEMEM = "Szereg. A=¤";
                        unsigned char K1[] EEMEM = ";K1=";
                        unsigned char K2[] EEMEM = ";K2=";
                        unsigned char GAK[] EEMEM = "GAK=";
                        unsigned char NextK[] EEMEM = ";K=";
                        unsigned char K[] EEMEM = "K=";
                        unsigned char Triac[] EEMEM = "Triak";
                        unsigned char Thyristor[] EEMEM = "Tyrystor¤";


                        #ifdef UseM8
                        unsigned char OrBroken[] EEMEM = "lub uszkodz. ";
                        unsigned char Resistor[] EEMEM = "Opornosc: ¤¤";
                        unsigned char Capacitor[] EEMEM = "Pojemnosc: ¤¤";
                        #endif

                        #elif defined(CZECH) //tschechisch
                        unsigned char TestRunning[] EEMEM = "Probiha mereni...";
                        unsigned char Bat[] EEMEM = "Baterie ¤";
                        unsigned char BatWeak[] EEMEM = "slaba¤¤";
                        unsigned char BatEmpty[] EEMEM = "prazdna!";
                        unsigned char TestFailed1[] EEMEM = "Zadna, neznama¤¤";
                        unsigned char TestFailed2[] EEMEM = "vadna ¤¤¤¤¤¤";
                        unsigned char Bauteil[] EEMEM = "soucastka¤";
                        unsigned char Unknown[] EEMEM = " neznama¤";
                        unsigned char Diode[] EEMEM = "Dioda: ";
                        unsigned char DualDiode[] EEMEM = "Dvojita dioda ";
                        unsigned char TwoDiodes[] EEMEM = "2 Diody¤";
                        unsigned char Antiparallel[] EEMEM = "antiparalelni";
                        unsigned char InSeries[] EEMEM = "v serii A=¤";
                        unsigned char K1[] EEMEM = ";K1=";
                        unsigned char K2[] EEMEM = ";K2=";
                        unsigned char GAK[] EEMEM = "GAK=";
                        unsigned char NextK[] EEMEM = ";K=";
                        unsigned char K[] EEMEM = "K=";
                        unsigned char Triac[] EEMEM = "Triak";
                        unsigned char Thyristor[] EEMEM = "Tyristor¤";


                        #ifdef UseM8
                        unsigned char OrBroken[] EEMEM = "nebo vadna ¤¤";
                        unsigned char Resistor[] EEMEM = "Rezistor: ¤¤";
                        unsigned char Capacitor[] EEMEM = "Kondenzator: ";
                        #endif

                        #elif defined(SLOVAK) //slowakisch
                        unsigned char TestRunning[] EEMEM = "PREBIEHA TEST¤¤¤¤";
                        unsigned char Bat[] EEMEM = "Bateria ¤";
                        unsigned char BatWeak[] EEMEM = "slaba¤¤";
                        unsigned char BatEmpty[] EEMEM = "prazdna!";
                        unsigned char TestFailed1[] EEMEM = "Ziadna, neznama¤";
                        unsigned char TestFailed2[] EEMEM = "vadna ¤¤¤¤¤¤";
                        unsigned char Bauteil[] EEMEM = "suciastka!";
                        unsigned char Unknown[] EEMEM = " neznama¤";
                        unsigned char Diode[] EEMEM = "Dioda: ";
                        unsigned char DualDiode[] EEMEM = "Dvojdioda ¤¤¤¤";
                        unsigned char TwoDiodes[] EEMEM = "2 Diody¤";
                        unsigned char Antiparallel[] EEMEM = "antiparalelne";
                        unsigned char InSeries[] EEMEM = "v Serii A=¤";
                        unsigned char K1[] EEMEM = ";K1=";
                        unsigned char K2[] EEMEM = ";K2=";
                        unsigned char GAK[] EEMEM = "GAK=";
                        unsigned char NextK[] EEMEM = ";K=";
                        unsigned char K[] EEMEM = "K=";
                        unsigned char Triac[] EEMEM = "Triak";
                        unsigned char Thyristor[] EEMEM = "Tyristor¤";


                        #ifdef UseM8
                        unsigned char OrBroken[] EEMEM = "alebo vadna ¤";
                        unsigned char Resistor[] EEMEM = "Rezistor: ¤¤";
                        unsigned char Capacitor[] EEMEM = "Kondenzator: ";
                        #endif
                        #endif



                        //Sprachunabhنngige EEPROM-Strings
                        unsigned char mosfet[] EEMEM = "-MOS";
                        unsigned char emode[] EEMEM = "-E";
                        unsigned char dmode[] EEMEM = "-D";
                        unsigned char jfet[] EEMEM = "-JFET";
                        unsigned char A1[] EEMEM = ";A1=";
                        unsigned char A2[] EEMEM = ";A2=";
                        unsigned char NullDot[] EEMEM = "0,";
                        unsigned char GateCap[] EEMEM = " C=";
                        unsigned char hfestr[] EEMEM ="hFE=";
                        unsigned char NPN[] EEMEM = "NPN";
                        unsigned char PNP[] EEMEM = "PNP";
                        unsigned char bstr[] EEMEM = " B=";
                        unsigned char cstr[] EEMEM = ";C=";
                        unsigned char estr[] EEMEM = ";E=";
                        unsigned char gds[] EEMEM = "GDS=";
                        unsigned char Uf[] EEMEM = "Uf=";
                        unsigned char vt[] EEMEM = "Vt=";
                        unsigned char mV[] EEMEM = "mV";
                        unsigned char Anode[] EEMEM = "A=";
                        unsigned char Gate[] EEMEM = "G=";
                        unsigned char CA[] EEMEM = "CA";
                        unsigned char CC[] EEMEM = "CC";
                        unsigned char TestTimedOut[] EEMEM = "Timeout!";

                        unsigned char DiodeIcon[] EEMEM = {4,31,31,14,14,4,31,4}; //Dioden-Icon

                        #ifdef LCD_CYRILLIC //Omega- und µ-Zeichen als Custom-Zeichen erzeugen, weil diese Zeichen im kyrillischen Zeichensatz nicht enthalten sind
                        unsigned char CyrillicOmegaIcon[] EEMEM = {0,0,14,17,17,10,27,0}; //Omega
                        unsigned char CyrillicMuIcon[] EEMEM = {0,17,17,17,19,29,16,16}; //µ
                        #endif[/code]
                        این کد های متن ها و اشکالی هست که روی lcd به نمایش در میاد و EEMEM به معنای این است که این ها در حافظه eeprom ذخیره شود.

                        [code=c]void CheckPins(uint8_t HighPin, uint8_t LowPin, uint8_t TristatePin);
                        void DischargePin(uint8_t PinToDischarge, uint8_t DischargeDirection);
                        unsigned int ReadADC(uint8_t mux);
                        void lcd_show_format_cap(char outval[], uint8_t strlength, uint8_t CommaPos);

                        #ifdef UseM8
                        void ReadCapacity(uint8_t HighPin, uint8_t LowPin); //Kapazitنtsmessung nur auf Mega8 verfügbar
                        #endif[/code]
                        این برنامه دارای چند تا تابع هست که در بالا به کامپایلر معرفی شدند.

                        [code=c]#define R_DDR DDRB
                        #define R_PORT PORTB[/code]
                        این کد ها پورتی که به مقاومت ها وصل شده رو تعریف میکنه پس در ادامه کد هر جایی به R_PORT رسیدیم یعنی PORTB.

                        [code=c]#define ON_DDR DDRD
                        #define ON_PORT PORTD
                        #define ON_PIN_REG PIND
                        #define ON_PIN PD6
                        #define RST_PIN PD7[/code]
                        این کد هم اسم پایه ای که به کلید وصل هست رو به RST_PIN تغیر میده.

                        [code=c]#define PART_NONE 0
                        #define PART_DIODE 1
                        #define PART_TRANSISTOR 2
                        #define PART_FET 3
                        #define PART_TRIAC 4
                        #define PART_THYRISTOR 5
                        #define PART_RESISTOR 6
                        #define PART_CAPACITOR 7[/code]
                        توی این کد ها هم به هر قطعه ای یه عددی اختصاص داده شده تا برنامه قابل فهم شود.

                        [code=c]#define PART_MODE_N_E_MOS 1
                        #define PART_MODE_P_E_MOS 2
                        #define PART_MODE_N_D_MOS 3
                        #define PART_MODE_P_D_MOS 4
                        #define PART_MODE_N_JFET 5
                        #define PART_MODE_P_JFET 6

                        #define PART_MODE_NPN 1
                        #define PART_MODE_PNP 2[/code]
                        این هم برای انواع ترانزیستور ها یه عددی اختصاص داده.

                        [code=c]struct Diode {
                        uint8_t Anode;
                        uint8_t Cathode;
                        int Voltage;
                        };

                        struct Diode diodes[6];
                        uint8_t NumOfDiodes;

                        uint8_t b,c,e; //Anschlüsse des Transistors
                        unsigned long lhfe; //Verstنrkungsfaktor
                        uint8_t PartReady; //Bauteil fertig erkannt
                        unsigned int hfe[2]; //Verstنrkungsfaktoren
                        unsigned int uBE[2]; //B-E-Spannung für Transistoren
                        uint8_t PartMode;
                        uint8_t tmpval, tmpval2;
                        #ifdef UseM8 //Widerstands- und Kondensatormessung nur auf dem Mega8 verfügbar
                        uint8_t ra, rb; //Widerstands-Pins
                        unsigned int rv[2]; //Spannungsabfall am Widerstand
                        unsigned int radcmax[2]; //Maximal erreichbarer ADC-Wert (geringer als 1023, weil Spannung am Low-Pin bei Widerstandsmessung über Null liegt)
                        uint8_t ca, cb; //Kondensator-Pins
                        uint8_t cp1, cp2; //Zu testende Kondensator-Pins, wenn Messung für einzelne Pins gewنhlt
                        uint8_t ctmode; //Kondensator-Test-Modus (siehe ab Zeile 40)
                        #ifdef SWUART_INVERT
                        #define TXD_VAL 0
                        #else
                        #define TXD_VAL (1<<TxD)
                        #endif
                        #endif

                        unsigned long cv;

                        uint8_t PartFound, tmpPartFound; //das gefundene Bauteil
                        char outval[8];
                        unsigned int adcv[4];
                        unsigned int gthvoltage; //Gate-Schwellspannung
                        uint8_t tmpval, tmpval2;

                        #ifdef UseM8
                        char outval2[6];
                        #endif[/code]
                        این ها هم یه سری متفیر ها هستند که تو برنامه استفاده شده.

                        خوب کد هایی که تنها کارشون تغیر دادن نام کد های اصلی بود و معرفی متغیر ها بود تمام شدند و در ادامه به کد های حلقه main
                        میریم و اونا رو توضیح میدم.
                        سوالی بود در خدمتم.
                        معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

                        دیدگاه


                          #72
                          پاسخ : ساخت تستر قطعات الکترونیکی با AVR

                          نوشته اصلی توسط alidehghan288
                          سلام این تصویر از کدویژن:


                          این هم از progisp (چون پروگرمرتون سریال هست از نسخه 6 استفاده کنید):
                          با سلام.
                          دوست عزیز این کدویژن پروگرم من رو نشناخت .ایا میشه من این رو از سریال به usbدر بیارم؟
                          وضمنا اون تیک ها در کدویژن صفر اند یا یک ؟چون با این برنامه ها کار نکردم :redface:

                          دیدگاه


                            #73
                            پاسخ : ساخت تستر قطعات الکترونیکی با AVR

                            نوشته اصلی توسط bahmangholami
                            درست که بهترین ورایگان هستش.
                            اما دوست عزیز شما که در پست قبلی گفتی قطعات اش رو میگیرم میسازم پس چی شد :biggrin:
                            سلام مجدد
                            من امشب رفتم سعدی قطعات همین رو گرفتم.
                            میسازم عکسش رو هم میزارم :icon_razz:

                            دیدگاه


                              #74
                              پاسخ : ساخت تستر قطعات الکترونیکی با AVR

                              نوشته اصلی توسط alidehghan288
                              دوستان اگر می خوان شروع کنیم به تحلیل کد های نسخه قدیمی این دستگاه و خط به خط
                              ببینیم هر کدوم برای چی هستم آخه خوب نیست که یه نفر زحمت بکشه این همه کد بنویسه
                              و ما فقط استفاده کنیم.بعد از تحلیل کد ها میتونیم از میکروی mega128 و tftlcd رنگی استفاده
                              کنیم.و حتی تمام این امکانات پیشرفته رو بهش اضافه کنیم.

                              برای شروع این پروژه کامپایل شده atmel studio این دستگاه:
                              http://up.electro2014.ir/up/electro2014/AVR/Tester.rar

                              این هم لینک دانلود atmel studio 7:
                              http://www.atmel.com/System/BaseForm.aspx?target=tcm:26-77367
                              بعد از ثبت نام لینک دانلود کاملا رایگان در اختیارتون قرار میگیره.

                              خوب حالا کد ها ی مهم رو تحلیل میکنیم:
                              [code=c]#define ADC_PORT PORTC
                              #define ADC_DDR DDRC
                              #define ADC_PIN PINC
                              #define TP1 PC0
                              #define TP2 PC1
                              #define TP3 PC2[/code]
                              این کدها پورت و پین هایی که مستقیم به سیم های 1 و2و3 وصل شده رو تعریف کرده و باید adc باشد.

                              [code=c]#if defined(GERMAN) //deutsch
                              unsigned char TestRunning[] EEMEM = "Test lلuft...¤¤¤¤";
                              unsigned char Bat[] EEMEM = "Batterie ";
                              unsigned char BatWeak[] EEMEM = "schwach";
                              unsigned char BatEmpty[] EEMEM = "leer!¤¤¤";
                              unsigned char TestFailed1[] EEMEM = "Kein,unbek. oder";
                              unsigned char TestFailed2[] EEMEM = "defektes ¤¤¤";
                              unsigned char Bauteil[] EEMEM = "Bauteil¤¤¤";
                              unsigned char Unknown[] EEMEM = " unbek.¤¤";
                              unsigned char Diode[] EEMEM = "Diode: ";
                              unsigned char DualDiode[] EEMEM = "Doppeldiode ¤¤";
                              unsigned char TwoDiodes[] EEMEM = "2 Dioden";
                              unsigned char Antiparallel[] EEMEM = "antiparallel¤";
                              unsigned char InSeries[] EEMEM = "in Serie A=";
                              unsigned char K1[] EEMEM = ";K1=";
                              unsigned char K2[] EEMEM = ";K2=";
                              unsigned char GAK[] EEMEM = "GAK=";
                              unsigned char NextK[] EEMEM = ";K=";
                              unsigned char K[] EEMEM = "K=";
                              unsigned char Triac[] EEMEM = "Triac";
                              unsigned char Thyristor[] EEMEM = "Thyristor";


                              #ifdef UseM8
                              unsigned char OrBroken[] EEMEM = "oder defekt ¤";
                              unsigned char Resistor[] EEMEM = "Widerstand: ";
                              unsigned char Capacitor[] EEMEM = "Kondensator: ";
                              #endif

                              #elif defined(ENGLISH) //englisch
                              unsigned char TestRunning[] EEMEM = "Pleas Wait ...¤¤";
                              unsigned char Bat[] EEMEM = "Battery ¤";
                              unsigned char BatWeak[] EEMEM = "weak¤¤¤";
                              unsigned char BatEmpty[] EEMEM = "empty!¤¤";
                              unsigned char TestFailed1[] EEMEM = "No, unknown, or¤";
                              unsigned char TestFailed2[] EEMEM = "damaged ¤¤¤¤";
                              unsigned char Bauteil[] EEMEM = "part¤¤¤¤¤¤";
                              unsigned char Unknown[] EEMEM = " unknown¤";
                              unsigned char Diode[] EEMEM = "Diode: ";
                              unsigned char DualDiode[] EEMEM = "Double diode ¤";
                              unsigned char TwoDiodes[] EEMEM = "2 diodes";
                              unsigned char Antiparallel[] EEMEM = "anti-parallel";
                              unsigned char InSeries[] EEMEM = "serial A=¤¤";
                              unsigned char K1[] EEMEM = ";C1=";
                              unsigned char K2[] EEMEM = ";C2=";
                              unsigned char GAK[] EEMEM = "GAC=";
                              unsigned char NextK[] EEMEM = ";C=";
                              unsigned char K[] EEMEM = "C=";
                              unsigned char Triac[] EEMEM = "Triac";
                              unsigned char Thyristor[] EEMEM = "Thyristor";


                              #ifdef UseM8
                              unsigned char OrBroken[] EEMEM = "or damaged ¤¤";
                              unsigned char Resistor[] EEMEM = "Resistor: ¤¤";
                              unsigned char Capacitor[] EEMEM = "Capacitor: ¤¤";
                              #endif
                              #elif defined(POLISH) //polnisch
                              unsigned char TestRunning[] EEMEM = "Testowanie...¤¤¤¤";
                              unsigned char Bat[] EEMEM = "Bateria¤¤";
                              unsigned char BatWeak[] EEMEM = "slaba¤¤";
                              unsigned char BatEmpty[] EEMEM = "za slaba";
                              unsigned char TestFailed1[] EEMEM = "brak elementu¤¤¤";
                              unsigned char TestFailed2[] EEMEM = "lub uszkodz.";
                              unsigned char Bauteil[] EEMEM = "Element¤¤¤";
                              unsigned char Unknown[] EEMEM = " nieznany";
                              unsigned char Diode[] EEMEM = "Dioda: ";
                              unsigned char DualDiode[] EEMEM = "Duodioda ¤¤¤¤¤";
                              unsigned char TwoDiodes[] EEMEM = "2 diody¤";
                              unsigned char Antiparallel[] EEMEM = "przeciwsobnie";
                              unsigned char InSeries[] EEMEM = "Szereg. A=¤";
                              unsigned char K1[] EEMEM = ";K1=";
                              unsigned char K2[] EEMEM = ";K2=";
                              unsigned char GAK[] EEMEM = "GAK=";
                              unsigned char NextK[] EEMEM = ";K=";
                              unsigned char K[] EEMEM = "K=";
                              unsigned char Triac[] EEMEM = "Triak";
                              unsigned char Thyristor[] EEMEM = "Tyrystor¤";


                              #ifdef UseM8
                              unsigned char OrBroken[] EEMEM = "lub uszkodz. ";
                              unsigned char Resistor[] EEMEM = "Opornosc: ¤¤";
                              unsigned char Capacitor[] EEMEM = "Pojemnosc: ¤¤";
                              #endif

                              #elif defined(CZECH) //tschechisch
                              unsigned char TestRunning[] EEMEM = "Probiha mereni...";
                              unsigned char Bat[] EEMEM = "Baterie ¤";
                              unsigned char BatWeak[] EEMEM = "slaba¤¤";
                              unsigned char BatEmpty[] EEMEM = "prazdna!";
                              unsigned char TestFailed1[] EEMEM = "Zadna, neznama¤¤";
                              unsigned char TestFailed2[] EEMEM = "vadna ¤¤¤¤¤¤";
                              unsigned char Bauteil[] EEMEM = "soucastka¤";
                              unsigned char Unknown[] EEMEM = " neznama¤";
                              unsigned char Diode[] EEMEM = "Dioda: ";
                              unsigned char DualDiode[] EEMEM = "Dvojita dioda ";
                              unsigned char TwoDiodes[] EEMEM = "2 Diody¤";
                              unsigned char Antiparallel[] EEMEM = "antiparalelni";
                              unsigned char InSeries[] EEMEM = "v serii A=¤";
                              unsigned char K1[] EEMEM = ";K1=";
                              unsigned char K2[] EEMEM = ";K2=";
                              unsigned char GAK[] EEMEM = "GAK=";
                              unsigned char NextK[] EEMEM = ";K=";
                              unsigned char K[] EEMEM = "K=";
                              unsigned char Triac[] EEMEM = "Triak";
                              unsigned char Thyristor[] EEMEM = "Tyristor¤";


                              #ifdef UseM8
                              unsigned char OrBroken[] EEMEM = "nebo vadna ¤¤";
                              unsigned char Resistor[] EEMEM = "Rezistor: ¤¤";
                              unsigned char Capacitor[] EEMEM = "Kondenzator: ";
                              #endif

                              #elif defined(SLOVAK) //slowakisch
                              unsigned char TestRunning[] EEMEM = "PREBIEHA TEST¤¤¤¤";
                              unsigned char Bat[] EEMEM = "Bateria ¤";
                              unsigned char BatWeak[] EEMEM = "slaba¤¤";
                              unsigned char BatEmpty[] EEMEM = "prazdna!";
                              unsigned char TestFailed1[] EEMEM = "Ziadna, neznama¤";
                              unsigned char TestFailed2[] EEMEM = "vadna ¤¤¤¤¤¤";
                              unsigned char Bauteil[] EEMEM = "suciastka!";
                              unsigned char Unknown[] EEMEM = " neznama¤";
                              unsigned char Diode[] EEMEM = "Dioda: ";
                              unsigned char DualDiode[] EEMEM = "Dvojdioda ¤¤¤¤";
                              unsigned char TwoDiodes[] EEMEM = "2 Diody¤";
                              unsigned char Antiparallel[] EEMEM = "antiparalelne";
                              unsigned char InSeries[] EEMEM = "v Serii A=¤";
                              unsigned char K1[] EEMEM = ";K1=";
                              unsigned char K2[] EEMEM = ";K2=";
                              unsigned char GAK[] EEMEM = "GAK=";
                              unsigned char NextK[] EEMEM = ";K=";
                              unsigned char K[] EEMEM = "K=";
                              unsigned char Triac[] EEMEM = "Triak";
                              unsigned char Thyristor[] EEMEM = "Tyristor¤";


                              #ifdef UseM8
                              unsigned char OrBroken[] EEMEM = "alebo vadna ¤";
                              unsigned char Resistor[] EEMEM = "Rezistor: ¤¤";
                              unsigned char Capacitor[] EEMEM = "Kondenzator: ";
                              #endif
                              #endif



                              //Sprachunabhنngige EEPROM-Strings
                              unsigned char mosfet[] EEMEM = "-MOS";
                              unsigned char emode[] EEMEM = "-E";
                              unsigned char dmode[] EEMEM = "-D";
                              unsigned char jfet[] EEMEM = "-JFET";
                              unsigned char A1[] EEMEM = ";A1=";
                              unsigned char A2[] EEMEM = ";A2=";
                              unsigned char NullDot[] EEMEM = "0,";
                              unsigned char GateCap[] EEMEM = " C=";
                              unsigned char hfestr[] EEMEM ="hFE=";
                              unsigned char NPN[] EEMEM = "NPN";
                              unsigned char PNP[] EEMEM = "PNP";
                              unsigned char bstr[] EEMEM = " B=";
                              unsigned char cstr[] EEMEM = ";C=";
                              unsigned char estr[] EEMEM = ";E=";
                              unsigned char gds[] EEMEM = "GDS=";
                              unsigned char Uf[] EEMEM = "Uf=";
                              unsigned char vt[] EEMEM = "Vt=";
                              unsigned char mV[] EEMEM = "mV";
                              unsigned char Anode[] EEMEM = "A=";
                              unsigned char Gate[] EEMEM = "G=";
                              unsigned char CA[] EEMEM = "CA";
                              unsigned char CC[] EEMEM = "CC";
                              unsigned char TestTimedOut[] EEMEM = "Timeout!";

                              unsigned char DiodeIcon[] EEMEM = {4,31,31,14,14,4,31,4}; //Dioden-Icon

                              #ifdef LCD_CYRILLIC //Omega- und µ-Zeichen als Custom-Zeichen erzeugen, weil diese Zeichen im kyrillischen Zeichensatz nicht enthalten sind
                              unsigned char CyrillicOmegaIcon[] EEMEM = {0,0,14,17,17,10,27,0}; //Omega
                              unsigned char CyrillicMuIcon[] EEMEM = {0,17,17,17,19,29,16,16}; //µ
                              #endif[/code]
                              این کد های متن ها و اشکالی هست که روی lcd به نمایش در میاد و EEMEM به معنای این است که این ها در حافظه eeprom ذخیره شود.

                              [code=c]void CheckPins(uint8_t HighPin, uint8_t LowPin, uint8_t TristatePin);
                              void DischargePin(uint8_t PinToDischarge, uint8_t DischargeDirection);
                              unsigned int ReadADC(uint8_t mux);
                              void lcd_show_format_cap(char outval[], uint8_t strlength, uint8_t CommaPos);

                              #ifdef UseM8
                              void ReadCapacity(uint8_t HighPin, uint8_t LowPin); //Kapazitنtsmessung nur auf Mega8 verfügbar
                              #endif[/code]
                              این برنامه دارای چند تا تابع هست که در بالا به کامپایلر معرفی شدند.

                              [code=c]#define R_DDR DDRB
                              #define R_PORT PORTB[/code]
                              این کد ها پورتی که به مقاومت ها وصل شده رو تعریف میکنه پس در ادامه کد هر جایی به R_PORT رسیدیم یعنی PORTB.

                              [code=c]#define ON_DDR DDRD
                              #define ON_PORT PORTD
                              #define ON_PIN_REG PIND
                              #define ON_PIN PD6
                              #define RST_PIN PD7[/code]
                              این کد هم اسم پایه ای که به کلید وصل هست رو به RST_PIN تغیر میده.

                              [code=c]#define PART_NONE 0
                              #define PART_DIODE 1
                              #define PART_TRANSISTOR 2
                              #define PART_FET 3
                              #define PART_TRIAC 4
                              #define PART_THYRISTOR 5
                              #define PART_RESISTOR 6
                              #define PART_CAPACITOR 7[/code]
                              توی این کد ها هم به هر قطعه ای یه عددی اختصاص داده شده تا برنامه قابل فهم شود.

                              [code=c]#define PART_MODE_N_E_MOS 1
                              #define PART_MODE_P_E_MOS 2
                              #define PART_MODE_N_D_MOS 3
                              #define PART_MODE_P_D_MOS 4
                              #define PART_MODE_N_JFET 5
                              #define PART_MODE_P_JFET 6

                              #define PART_MODE_NPN 1
                              #define PART_MODE_PNP 2[/code]
                              این هم برای انواع ترانزیستور ها یه عددی اختصاص داده.

                              [code=c]struct Diode {
                              uint8_t Anode;
                              uint8_t Cathode;
                              int Voltage;
                              };

                              struct Diode diodes[6];
                              uint8_t NumOfDiodes;

                              uint8_t b,c,e; //Anschlüsse des Transistors
                              unsigned long lhfe; //Verstنrkungsfaktor
                              uint8_t PartReady; //Bauteil fertig erkannt
                              unsigned int hfe[2]; //Verstنrkungsfaktoren
                              unsigned int uBE[2]; //B-E-Spannung für Transistoren
                              uint8_t PartMode;
                              uint8_t tmpval, tmpval2;
                              #ifdef UseM8 //Widerstands- und Kondensatormessung nur auf dem Mega8 verfügbar
                              uint8_t ra, rb; //Widerstands-Pins
                              unsigned int rv[2]; //Spannungsabfall am Widerstand
                              unsigned int radcmax[2]; //Maximal erreichbarer ADC-Wert (geringer als 1023, weil Spannung am Low-Pin bei Widerstandsmessung über Null liegt)
                              uint8_t ca, cb; //Kondensator-Pins
                              uint8_t cp1, cp2; //Zu testende Kondensator-Pins, wenn Messung für einzelne Pins gewنhlt
                              uint8_t ctmode; //Kondensator-Test-Modus (siehe ab Zeile 40)
                              #ifdef SWUART_INVERT
                              #define TXD_VAL 0
                              #else
                              #define TXD_VAL (1<<TxD)
                              #endif
                              #endif

                              unsigned long cv;

                              uint8_t PartFound, tmpPartFound; //das gefundene Bauteil
                              char outval[8];
                              unsigned int adcv[4];
                              unsigned int gthvoltage; //Gate-Schwellspannung
                              uint8_t tmpval, tmpval2;

                              #ifdef UseM8
                              char outval2[6];
                              #endif[/code]
                              این ها هم یه سری متفیر ها هستند که تو برنامه استفاده شده.

                              خوب کد هایی که تنها کارشون تغیر دادن نام کد های اصلی بود و معرفی متغیر ها بود تمام شدند و در ادامه به کد های حلقه main
                              میریم و اونا رو توضیح میدم.
                              سوالی بود در خدمتم.

                              با سلام خدمت دوست عزیز علی دهغان :bye
                              من میخواستم بپرسم که ایا این دستگاه.سلف رو هم میتونیم اندازه بگیریم .
                              از انجای که من اطلاع دارم این مورد رو تو هیچ ویدیو ای ندیدم اندازه بگیرن :smile:
                              به نظر من. اگه اول روی این مورد کار کنیم بهتره.

                              دیدگاه


                                #75
                                پاسخ : ساخت تستر قطعات الکترونیکی با AVR

                                با سلام خدمت دوست عزیز علی دهغان :bye
                                سلام اولا که فامیل ما دهقان هست :mrgreen:
                                بعدشم اگر دوستان مشکلی ندارن میکرو رو به atmega128
                                تغیر بدیم تا در آینده برای اضافه کردن tft کمبود حافظه نداشته باشیم.

                                در مورد سلف هم این پروژه پشتیبانی نمیکنه اما میشه پروژه زیر رو با اون ترکیب کرد:
                                http://www.electro2014.ir/%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%D9%87-%DA%AF%DB%8C%D8%B1%DB%8C-%D8%B8%D8%B1%D9%81%DB%8C%D8%AA-%D8%AE%D8%A7%D8%B2%D9%86-%D9%88-%D8%B3%D9%84%D9%81-%D8%A8%D8%A7-avr.html

                                معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

                                دیدگاه

                                لطفا صبر کنید...
                                X