اطلاعیه

Collapse
No announcement yet.

مروری بر تراشه AD7191

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

    مروری بر تراشه AD7191

    بسم الله الرحمن الرحیم

    برای اندازه گیری های دقیق ولتاژ، تا کنون تراشه های زیادی به بازار آمده است.
    شرکت Analog Devices بعنوان شرکت پیشرو در این صنعت، تراشه های گوناگونی به بازار عرضه کرده است. تراشه های معمول بازار ایران، AD7730 و AD7780 , AD7190 است.

    تراشه 7730 نسبتا نا دقیق و گران قیمت هست. 7780 دقت خوبی دارد اما سرعت کم و تک کاناله است.
    دقیق ترین و پرسرعت ترین هم AD7190 است که از 7780 گران تر و از 7730 ارزانتر است. چهارپورت میکرو را اشغال می کند.

    شرکت آنالوگ طی موفقیتی که در تراشه ی AD7780 داشت، تراشه ای با دقت 7190 و قیمتی ارزان تر 7780 ارائه نموده است. البته این قیمت، مربوط به بازار امریکاست.


    تراشه ی AD7191 دو پورت میکرو را اشغال می کند، دو ورودی دارد و تنظیم گین های متنوع تری نسبت به AD7780 دارد. همچنین مقابل نویزهای محیطی مقاوم تر است.



    و برنامه ای که مقدار خروجی تراشه را در متغیر sum نشان می دهد.
    [img]http://www.eca.ir/************************************************** *****
    This program was created by the
    CodeWizardAVR V3.12 Advanced
    Automatic Program Generator
    © Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 3/10/2015
    Author :
    Company :
    Comments:


    Chip type : ATmega88V
    Program type : Application
    AVR Core Clock frequency: 4.915200 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256
    ************************************************** *****/

    #include <mega48.h>

    // Declare your global variables here
    #define Dout PINC.3
    #define Chan PORTC.2
    #define SCLK PORTC.1


    unsigned char ADCspi(void)
    {
    unsigned char j,outvar;
    outvar=0;
    j=128;
    while(j>0)
    {
    SCLK=0;
    SCLK=1;
    if(Dout) outvar|=j;
    j>>=1;
    }
    return(outvar);
    }

    unsigned int READ_ADC(void)
    {
    unsigned int adc_val;
    adc_val=ADCspi();
    adc_val= adc_val*256 + ADCspi();
    ADCspi();
    return(adc_val);
    }


    void main(void)
    {
    unsigned int sum;

    // Crystal Oscillator division factor: 1
    #pragma optsize-
    CLKPR=(1<<CLKPCE);
    CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
    #ifdef _OPTIMIZE_SIZE_
    #pragma optsize+
    #endif

    // Input/Output Ports initialization
    // Port B initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
    DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
    PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

    // Port C initialization
    // Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=Out Bit1=Out Bit0=In
    DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (1<<DDC2) | (1<<DDC1) | (0<<DDC0);
    // State: Bit6=T Bit5=T Bit4=T Bit3=P Bit2=0 Bit1=0 Bit0=T
    PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (1<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

    // Port D initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
    DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
    PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=0xFF
    // OC0A output: Disconnected
    // OC0B output: Disconnected
    TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
    TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (0<<CS00);
    TCNT0=0x00;
    OCR0A=0x00;
    OCR0B=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Disconnected
    // OC1B output: Disconnected
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
    TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=0xFF
    // OC2A output: Disconnected
    // OC2B output: Disconnected
    ASSR=(0<<EXCLK) | (0<<AS2);
    TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (0<<WGM21) | (0<<WGM20);
    TCCR2B=(0<<WGM22) | (0<<CS22) | (0<<CS21) | (0<<CS20);
    TCNT2=0x00;
    OCR2A=0x00;
    OCR2B=0x00;

    // Timer/Counter 0 Interrupt(s) initialization
    TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0);

    // Timer/Counter 1 Interrupt(s) initialization
    TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1);

    // Timer/Counter 2 Interrupt(s) initialization
    TIMSK2=(0<<OCIE2B) | (0<<OCIE2A) | (0<<TOIE2);

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // Interrupt on any change on pins PCINT0-7: Off
    // Interrupt on any change on pins PCINT8-14: Off
    // Interrupt on any change on pins PCINT16-23: Off
    EICRA=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
    EIMSK=(0<<INT1) | (0<<INT0);
    PCICR=(0<<PCIE2) | (0<<PCIE1) | (0<<PCIE0);

    // USART initialization
    // USART disabled
    UCSR0B=(0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (0<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80);

    // Analog Comparator initialization
    // Analog Comparator: Off
    // The Analog Comparator's positive input is
    // connected to the AIN0 pin
    // The Analog Comparator's negative input is
    // connected to the AIN1 pin
    ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
    ADCSRB=(0<<ACME);
    // Digital input buffer on AIN0: On
    // Digital input buffer on AIN1: On
    DIDR1=(0<<AIN0D) | (0<<AIN1D);


    // ADC initialization
    // ADC disabled
    ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);



    // SPI initialization
    // SPI disabled
    SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

    // TWI initialization
    // TWI disabled
    TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);


    SCLK=0;
    SCLK=1;
    delay_ms(2000);

    Chan=0; // Channal 2 ADC AD7191

    while (1)
    {
    if (Dout==0)
    {
    delay_ms(1);
    sum=READ_ADC();
    }
    }
    }[/img]


    این تاپیک هم مطالعه کنید، نکات خوبی درونش مرور شده است.
    http://www.eca.ir/forum2/index.php?topic=100295.0
    برای کاری در حوزه اربعین نیاز به نیروی داوطلب هستیم.
    http://hosseinwalkingday.com

    #2
    پاسخ : مروری بر تراشه AD7191

    این هم نمونه کد. خلاصه شده
    کد:
    [CPP]
    //*************AD7191******************
    //*************PIN Defines*************
    #define     Dout      PINC.5
    #define     SCLK      PORTC.4
    
    //**************************************
    //*********AD7191_readADC***************
    unsigned char ADCspi(void) 
    {
      unsigned char j,outvar;
      outvar=0;
      j=128; 
      while(j>0)
        {     
        SCLK=0;
        SCLK=1;
        if(Dout) outvar|=j;        
        j>>=1;    
        }
      return(outvar);
    }
    
    unsigned int AD7191_DATA(void)
      {
      unsigned long adc_val, offset;
      offset = 32768;
      adc_val=ADCspi();
      adc_val= adc_val*256 + ADCspi();
      ADCspi();     
      if (adc_val > offset) 
        {
        adc_val -=offset;
        }
      else
        {
        adc_val = offset - adc_val;
        }
      
      
      return(adc_val);
      } 
    
    [/CPP]


    و داخل حلقه main

    [code=c]
    while (Dout == 1);
    Data = AD7191_DATA();
    [/CODE]
    جدیدترین ویرایش توسط اشکان غفارزاده; ۱۲:۴۱ ۱۳۹۶/۰۵/۱۷.
    برای کاری در حوزه اربعین نیاز به نیروی داوطلب هستیم.
    http://hosseinwalkingday.com

    دیدگاه


      #3
      پاسخ : مروری بر تراشه AD7191

      توی شماتیک بالا بنظر میرسه این قطعه 4 ورودی داره که 2تا از اونها به GND وصل شده (پایه 12,14) . میشه از هر 4 ورودی استفاده کرد ؟

      دیدگاه


        #4
        پاسخ : مروری بر تراشه AD7191

        نوشته اصلی توسط saeiddiod
        توی شماتیک بالا بنظر میرسه این قطعه 4 ورودی داره که 2تا از اونها به GND وصل شده (پایه 12,14) . میشه از هر 4 ورودی استفاده کرد ؟
        این قطعه دو ورودی تفاضلی داره
        یعنی اختلاف ولتاژ ورودی هایش رو اندازه می گیره. تو شماتیک بالا هدف این بود که دو ولتاژ رو نسبت به زمین مدار اندازه بگیریم، برای همین ورودی های منفی به زمین وصل شده بود.
        برای کاری در حوزه اربعین نیاز به نیروی داوطلب هستیم.
        http://hosseinwalkingday.com

        دیدگاه


          #5
          پاسخ : مروری بر تراشه AD7191

          سلام آقا مرتضی وقت بخیر
          آقا چرا تو این کد فقط از شونزده بیت استفاده شده دلیل خاصی داره ؟ آخه تو دیتا شیت یه فرمولی داده که میگه تا بیست و چهار بیتو میتونید بگیرید!
          ممنون

          دیدگاه


            #6
            پاسخ : مروری بر تراشه AD7191

            نوشته اصلی توسط digiboy
            سلام آقا مرتضی وقت بخیر
            آقا چرا تو این کد فقط از شونزده بیت استفاده شده دلیل خاصی داره ؟ آخه تو دیتا شیت یه فرمولی داده که میگه تا بیست و چهار بیتو میتونید بگیرید!
            ممنون
            سلام
            تو دیتاشیت که برای هر سرعت خوندن، دقت رو بیان کرده. تو عمل همون 16 بیت پایداری هم نمی رسیم.
            برای کاری در حوزه اربعین نیاز به نیروی داوطلب هستیم.
            http://hosseinwalkingday.com

            دیدگاه


              #7
              پاسخ : مروری بر تراشه AD7191

              سلام
              ابتدا ممنون از پست ارزشمند جناب مرتضی م. :applause:

              و اما بعد:

              من با ad7191 میخوام یه نمایشگر لودسل بسازم 2mv/v
              تغذیه لودسل 0 و +5
              میکرو atmega48p با کریستال داخلی و خروجی ckout برای ad7191
              و اساس مدار هم شماتیکی که جناب مرتضی م. زحمتشو کشیدند

              و بعد تر ، چند تا سوال از خدمت اساتید دارم :

              اول اینکه مدار رو راه انداختم و خروجی هم داره میده ولی پایداریش خیلی کم هست و در حد دهم کیلو گرم رفرش داره چطوری پایدارش کنم ؟
              و دوم : اگه ممکنه در مورد این خط ها از برنامه یه توضیحی بدبد:
              در روتین ADCspi(void) شما j=128 گذاشتید یعنی 8 رقم معتبر برای هر پکیج دیتا ؟
              چرا offset = 32768

              و همینطور لطفا توضیح در مورد
              کد:
               adc_val= adc_val*256 + ADCspi();
                ADCspi();     
                if (adc_val > offset) 
                  {
                  adc_val -=offset;
                  }
                else
                  {
                  adc_val = offset - adc_val;
                  }



              متشکرم
              چه دعایی کنمت بهترازاین ،که کنار پسر فاطمه هنگام اذان ، سحر جمعه ای پشت دیوار بقیع قامتت قد بکشد در دو رکعت به نمازی که نثار حرم و گنبد برپا شده ی حضرت زهرا بکنی ... انشاالله

              دیدگاه


                #8
                پاسخ : مروری بر تراشه AD7191

                سلام
                قسمت برنامه رو متوجه شدم که به چه صورت هست :
                دیتاهای خروجی adc به صورت 8 بیت 8بیت خونده میشه و در adc_val ریخته میشه
                یعنی اگر بخوایم 24 بیت رو بخونیم :
                adc1=ADCspi
                adc2=ADCspi
                adc3=ADCspi
                adc_val=adc1*65536+adc2*256+adc3

                ولی هنوز دیتاهای دریافت شده رفرش دارند مثلا:
                10665218
                10662344
                10661080
                10658886
                ...
                :sad: :sad:
                چه دعایی کنمت بهترازاین ،که کنار پسر فاطمه هنگام اذان ، سحر جمعه ای پشت دیوار بقیع قامتت قد بکشد در دو رکعت به نمازی که نثار حرم و گنبد برپا شده ی حضرت زهرا بکنی ... انشاالله

                دیدگاه


                  #9
                  پاسخ : مروری بر تراشه AD7191

                  اگر برداشتم درست باشه عدد آفست به علت داشتن ورودی +-Ain هست
                  یعنی برای 24 بیت عدد آفست باید برابر 8388608 = 0x 800000 قرار داده بشه ؟

                  حالا وقتی آفست رو برابر 0x 800000 میزارم چرا وقتی ولتاژ ورودی صفر هست عدد نمایشگر به جای صفر بین عدد های زیر 1000 رفرش نشون میده
                  یعنی همون سه رقم آخر که تو بیشینه ورودی (20 میلی ولت با رفرنس 2.5 ولت و گین 128 ) رفرش داره تو کمترین ولتاژ ورودی هم رفرش داره
                  :sad:
                  چه دعایی کنمت بهترازاین ،که کنار پسر فاطمه هنگام اذان ، سحر جمعه ای پشت دیوار بقیع قامتت قد بکشد در دو رکعت به نمازی که نثار حرم و گنبد برپا شده ی حضرت زهرا بکنی ... انشاالله

                  دیدگاه


                    #10
                    پاسخ : مروری بر تراشه AD7191

                    سلام

                    این تراشه به ازای صفر میلی ولت عدد 32768 برمی گرداند.

                    لودسل چیه ؟
                    پرش لودسل وابسته به حداکثر مقدار اندازه گیری اش هم هست. مثلا اگر لودسل تون ده تن باشه، یک دهم کیلو پرش خیلی عالیه!!
                    هرچند تغییرات کم خروجی اش نشون می ده لودسل ظریفیه.


                    مدار تون برای خوندن لودسل مگه رفرنس داره ؟ لودسل خوندن نیازی به رفرنس نداره
                    برای کاری در حوزه اربعین نیاز به نیروی داوطلب هستیم.
                    http://hosseinwalkingday.com

                    دیدگاه


                      #11
                      پاسخ : مروری بر تراشه AD7191

                      سلام
                      ممنون از حضورتون بابت حل مشکل :agree:

                      نوشته اصلی توسط مرتضی م.
                      سلام

                      این تراشه به ازای صفر میلی ولت عدد 32768 برمی گرداند.
                      الان که دقت کردم (معما چو حل گشت آسان شود :mrgreenاگه تو فرمول بزاریم وقتی vin برابر صفر هست
                      2 به توان 23 برابر 8388608 میشه
                      و اگر از سه رقم آخر صرف نظر بشه 2 به توان 15 برابر 32768

                      لودسل من 2 تنی هست 2mv/V
                      تغذیه لودسل رو به 0 و +5 دادم با گین 128

                      فعلا دارم با یه مولتی ترن و تقسیم ولتاژ تا ولتاژ 10 میلی ولت به کانکتور ورودی به جای لودسل میدم تا وضعیت پایداری و ... مدار رو ببینم . هنوز لودسل و به مدار وصل نکردم
                      مطابق محاسبه :
                      اگر رفرنس برابر2.5 ولت باشه برای 10mv (حداکثر ولتاژ لودسل ) عدد adc برابر 4294967 باید بشه اگر از سه رقم آخرش صرف نظر کنم هر عدد adc برابر 0.465 کیلوگرم :
                      2000kg / 4294 = 0.465

                      و اگر رفرنس برابر5 ولت باشه برای 10mv (حداکثر ولتاژ لودسل ) عدد adc برابر 2147484 باید بشه اگر از سه رقم آخرش صرف نظر کنم هر عدد adc برابر 0.931 کیلوگرم :
                      2000kg / 2147= 0.931

                      بنابراین با استفاده از رفرنس 2.5 باید جواب دقیق تری برسم
                      سوالم اینه که اگر دقت تغذیه و ولتاژ رفرنس رو هم در نظر بگیریم آیا استفاده از رفرنس 2.5 دقت رو پایین میاره؟

                      طبق تجربه شما پایداری تا چند بیت امکان پذیر هست ؟

                      من برای این لودسل به 0.1 کیلوگرم پایداری احتیاج دارم به نظرتون برای بهبودش چه چیزی رو باید در نظر بگیرم؟

                      چه دعایی کنمت بهترازاین ،که کنار پسر فاطمه هنگام اذان ، سحر جمعه ای پشت دیوار بقیع قامتت قد بکشد در دو رکعت به نمازی که نثار حرم و گنبد برپا شده ی حضرت زهرا بکنی ... انشاالله

                      دیدگاه


                        #12
                        پاسخ : مروری بر تراشه AD7191

                        نوشته اصلی توسط eca.user
                        سلام
                        ممنون از حضورتون بابت حل مشکل :agree:

                        الان که دقت کردم (معما چو حل گشت آسان شود :mrgreenاگه تو فرمول بزاریم وقتی vin برابر صفر هست
                        2 به توان 23 برابر 8388608 میشه
                        و اگر از سه رقم آخر صرف نظر بشه 2 به توان 15 برابر 32768

                        لودسل من 2 تنی هست 2mv/V
                        تغذیه لودسل رو به 0 و +5 دادم با گین 128

                        فعلا دارم با یه مولتی ترن و تقسیم ولتاژ تا ولتاژ 10 میلی ولت به کانکتور ورودی به جای لودسل میدم تا وضعیت پایداری و ... مدار رو ببینم . هنوز لودسل و به مدار وصل نکردم
                        مطابق محاسبه :
                        اگر رفرنس برابر2.5 ولت باشه برای 10mv (حداکثر ولتاژ لودسل ) عدد adc برابر 4294967 باید بشه اگر از سه رقم آخرش صرف نظر کنم هر عدد adc برابر 0.465 کیلوگرم :
                        2000kg / 4294 = 0.465

                        و اگر رفرنس برابر5 ولت باشه برای 10mv (حداکثر ولتاژ لودسل ) عدد adc برابر 2147484 باید بشه اگر از سه رقم آخرش صرف نظر کنم هر عدد adc برابر 0.931 کیلوگرم :
                        2000kg / 2147= 0.931

                        بنابراین با استفاده از رفرنس 2.5 باید جواب دقیق تری برسم
                        سوالم اینه که اگر دقت تغذیه و ولتاژ رفرنس رو هم در نظر بگیریم آیا استفاده از رفرنس 2.5 دقت رو پایین میاره؟

                        طبق تجربه شما پایداری تا چند بیت امکان پذیر هست ؟

                        من برای این لودسل به 0.1 کیلوگرم پایداری احتیاج دارم به نظرتون برای بهبودش چه چیزی رو باید در نظر بگیرم؟
                        سلام
                        استفاده از رفرنس خارجی قطعا دقت رو پایین میاره.

                        پیشنهادم اینه بجای استفاده از مولتی ترن، یه لودسل سبک استفاده کنید و تغییرات خروجی اش رو با تغییر وزن ببینید.


                        برای رسیدن به دقت 0.1 کیلو کارتون کمی سخته. ولی برای رسیدن به پایداری 0.2 کیلو رعایت همین مسائلی که تو این تاپیک و تاپیک راه اندازی ad7190 گفته ام، رعایت کنید کافیه.
                        برای کاری در حوزه اربعین نیاز به نیروی داوطلب هستیم.
                        http://hosseinwalkingday.com

                        دیدگاه


                          #13
                          پاسخ : مروری بر تراشه AD7191

                          آقا این آی سی انصافا خوبه
                          فقط حواستون باشه که برای اینکه بخواید از کانالای AIN استفاده کنید پایه ی TEMP حتما باید زمین بشه
                          البته تو دیتا شیت نوشته ولی عدم توجه بنده باعث شد چند ساعت الاف بشم
                          واسه رفرنس هم AD780 خوبه

                          کد:
                          [VB]
                          
                          Cls
                          
                          
                          
                          
                          Reset P_down
                          Do
                          
                          
                             Locate 2 , 1 : Lcd "WEll Come"
                             Waitms 200
                             Toggle Ok_led
                          
                          
                             Bitwait Dout , Set
                          
                          
                             Adc_data
                          
                          
                             Locate 3 , 1 : Lcd Outvar1 ; "   "
                             Locate 4 , 1 : Lcd Outvar2 ; "   "
                             Locate 5 , 1 : Lcd Outvar3 ; "   "
                             Locate 6 , 1 : Lcd Outvar4 ; "   "
                          
                          
                          
                          
                             Locate 10 , 1 : Lcd Adc_val ; "   "
                          
                          
                             Waitms 200
                          
                          
                          
                          
                          Loop
                          '*******************************************************************************************
                          
                          
                          Sub Adc_spi
                          
                          
                            Outvar = 0
                            J = 128
                            Do
                          
                          
                              Sck = 0
                              Sck = 1
                              If Dout = 1 Then Outvar = Outvar Or J
                              Shift J , Right , 1
                          
                          
                            Loop Until J = 0
                          
                          
                            Return
                          
                          
                          End Sub
                          
                          
                          Sub Adc_data
                          
                          
                          
                          
                             Adc_spi
                             Outvar1 = Outvar
                             Adc_spi
                             Outvar2 = Outvar
                             Adc_spi
                             Outvar3 = Outvar
                             Adc_spi
                             Outvar4 = Outvar
                          
                          
                             Adc_val = Outvar1 * 65536
                             Adc_val2 = Outvar2 * 256
                             Adc_val = Adc_val + Adc_val2
                              Adc_val = Adc_val + Outvar3
                              Adc_val = Adc_val - 16769021
                          
                          
                          
                          
                             Return
                          
                          
                          End Sub
                          
                          [/VB]

                          اینم برنامه بسکام
                          جدیدترین ویرایش توسط اشکان غفارزاده; ۱۲:۴۰ ۱۳۹۶/۰۵/۱۷.

                          دیدگاه

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