اطلاعیه

Collapse
No announcement yet.

مشکل در adc اتمگا8

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

    مشکل در adc اتمگا8

    سلام دوستان .
    من adc اتمگا 8 راه اندازی کردم و 5 ولت به avcc و aref دادم و agnd به زمین مدار وصل کردم . مشکل اینجاست که وقتی ولتاژ آنالوگ ( حدود 2.5 ولت ) به هر کدوم از پایه های adc میدم ولتاژ پایه میره روی 5.5 ولت و مقدار adc 1023 میده .حتی توی برنامه پایه ولتاژ رفرنس هم عوض کردم ( یک بار روی avcc و یکبار روی aref) ولی خوب نشد . نکته دیگه اینکه در حالت عادی روی پایه های آنالوگ 2.5 ولت هست .
    ممنون میشم راهنمایی کنید

    #2
    پاسخ : مشکل در adc اتمگا8

    نوشته اصلی توسط rasool1370 نمایش پست ها
    سلام دوستان .
    من adc اتمگا 8 راه اندازی کردم و 5 ولت به avcc و aref دادم و agnd به زمین مدار وصل کردم . مشکل اینجاست که وقتی ولتاژ آنالوگ ( حدود 2.5 ولت ) به هر کدوم از پایه های adc میدم ولتاژ پایه میره روی 5.5 ولت و مقدار adc 1023 میده .حتی توی برنامه پایه ولتاژ رفرنس هم عوض کردم ( یک بار روی avcc و یکبار روی aref) ولی خوب نشد . نکته دیگه اینکه در حالت عادی روی پایه های آنالوگ 2.5 ولت هست .
    ممنون میشم راهنمایی کنید
    سلام لطفا کد رو قرار بدید






    امیرحسین ضیا

    دیدگاه


      #3
      پاسخ : مشکل در adc اتمگا8

      سلام ممنون

      قسمت کانفیگ adc
      // ADC initialization
      // ADC Clock frequency: 62.500 kHz
      // ADC Voltage Reference: AVCC pin
      ADMUX=ADC_VREF_TYPE;
      ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
      SFIOR=(0<<ACME);


      قسمت تابع قرائت adc
      // Voltage Reference: AVCC pin
      #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))


      // Read the AD conversion result
      unsigned int read_adc(unsigned char adc_input)
      {
      ADMUX=adc_input | ADC_VREF_TYPE;
      // Delay needed for the stabilization of the ADC input voltage
      delay_us(10);
      // Start the AD conversion
      ADCSRA|=(1<<ADSC);
      // Wait for the AD conversion to complete
      while ((ADCSRA & (1<<ADIF))==0);
      ADCSRA|=(1<<ADIF);
      }return ADCW;


      داخل حلقه while
       adc=read_adc(4); 
      sprintf(lcd,"%u",adc);
      lcd_clear();
      lcd_puts(lcd);
      delay_ms(100);

      دیدگاه


        #4
        پاسخ : مشکل در adc اتمگا8

        نوشته اصلی توسط rasool1370 نمایش پست ها
        سلام ممنون

        قسمت کانفیگ adc
        // ADC initialization
        // ADC Clock frequency: 62.500 kHz
        // ADC Voltage Reference: AVCC pin
        ADMUX=ADC_VREF_TYPE;
        ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
        SFIOR=(0<<ACME);


        قسمت تابع قرائت adc
        // Voltage Reference: AVCC pin
        #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))


        // Read the AD conversion result
        unsigned int read_adc(unsigned char adc_input)
        {
        ADMUX=adc_input | ADC_VREF_TYPE;
        // Delay needed for the stabilization of the ADC input voltage
        delay_us(10);
        // Start the AD conversion
        ADCSRA|=(1<<ADSC);
        // Wait for the AD conversion to complete
        while ((ADCSRA & (1<<ADIF))==0);
        ADCSRA|=(1<<ADIF);
        }return ADCW;


        داخل حلقه while
         adc=read_adc(4); 
        sprintf(lcd,"%u",adc);
        lcd_clear();
        lcd_puts(lcd);
        delay_ms(100);
        سلام
        فکر نمیکنم مشکل شما نرم افزاری باشه. این سیگنالی که میگید مال چیه و از کجا میاد؟

        دیدگاه


          #5
          پاسخ : مشکل در adc اتمگا8

          نوشته اصلی توسط rasool1370 نمایش پست ها
          سلام ممنون

          قسمت کانفیگ adc
          // ADC initialization
          // ADC Clock frequency: 62.500 kHz
          // ADC Voltage Reference: AVCC pin
          ADMUX=ADC_VREF_TYPE;
          ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
          SFIOR=(0<<ACME);


          قسمت تابع قرائت adc
          // Voltage Reference: AVCC pin
          #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))


          // Read the AD conversion result
          unsigned int read_adc(unsigned char adc_input)
          {
          ADMUX=adc_input | ADC_VREF_TYPE;
          // Delay needed for the stabilization of the ADC input voltage
          delay_us(10);
          // Start the AD conversion
          ADCSRA|=(1<<ADSC);
          // Wait for the AD conversion to complete
          while ((ADCSRA & (1<<ADIF))==0);
          ADCSRA|=(1<<ADIF);
          }return ADCW;


          داخل حلقه while
           adc=read_adc(4); 
          sprintf(lcd,"%u",adc);
          lcd_clear();
          lcd_puts(lcd);
          delay_ms(100);

          درود

          میکرو ولتاژ آنالوگ اعمالی به پایه های ADC رو که بین 0 تا 5 باید باشه رو به عددی بین 0 تا 1023 تبدیل میکنه.
          شما برای اینکه دوباره به حالات 0 تا 5 برگردونید باید مقدار adc که داخل کدتون تعریف کردین رو ابتدا در 5 ضرب کنید سپس تقسیم به 1023 بکنید و سپس اون رو روی lcd نمایش بدین.

          دیدگاه


            #6
            پاسخ : مشکل در adc اتمگا8

            نوشته اصلی توسط hossein.m98 نمایش پست ها
            سلام
            فکر نمیکنم مشکل شما نرم افزاری باشه. این سیگنالی که میگید مال چیه و از کجا میاد؟
            سلام ممنون
            سیگنال ورودی با OP07 تقویت میکنم و میدم به میکرو . علت استفاده از دیود در خروجی OP07 اینه که ممکنه سیگنال ورودی منفی بشه و دیود اجازه نده که ولتاژ منفی به ADC بره.

            وقتی خروجی اپامپ از میکرو جدا میکنم و با ولت متر اندازه گیری میکنم حدود 2.5 ولته ولی وقتی وصل میکنم به میکرو میره روی 5.7 ولت .

            [IMG][/IMG]

            دیدگاه


              #7
              پاسخ : مشکل در adc اتمگا8

              نوشته اصلی توسط rasool1370 نمایش پست ها
              سلام ممنون
              سیگنال ورودی با OP07 تقویت میکنم و میدم به میکرو . علت استفاده از دیود در خروجی OP07 اینه که ممکنه سیگنال ورودی منفی بشه و دیود اجازه نده که ولتاژ منفی به ADC بره.

              وقتی خروجی اپامپ از میکرو جدا میکنم و با ولت متر اندازه گیری میکنم حدود 2.5 ولته ولی وقتی وصل میکنم به میکرو میره روی 5.7 ولت .

              [IMG][/IMG]
              خوب این 5.7 ولت مطمئنا از سمت میکروکنترلر نمیتونه باشه! پس این تقویت کننده یه مشکلی داره. منم الآن ذهنم یاری نمیکنه که راهنمایی کنم.

              دیدگاه


                #8
                پاسخ : مشکل در adc اتمگا8

                نوشته اصلی توسط hossein.m98 نمایش پست ها
                خوب این 5.7 ولت مطمئنا از سمت میکروکنترلر نمیتونه باشه! پس این تقویت کننده یه مشکلی داره. منم الآن ذهنم یاری نمیکنه که راهنمایی کنم.
                درسته به نکته خوبی اشاره کردید اصلا حواسم به این نبود که تغذیه میکرو 5 و نمیتونه 5.7 ایجاد کنه .
                الان من خروجی ها دوباره اندازه گیری کردم و روی مقاومت 1 کیلو بعد از دیو 3.8 ولت افت میکنه یعنی پین میکرو 3.8 میلی جریان میکشه این طبیعه؟؟؟؟

                دیدگاه


                  #9
                  پاسخ : مشکل در adc اتمگا8

                  نوشته اصلی توسط rasool1370 نمایش پست ها
                  درسته به نکته خوبی اشاره کردید اصلا حواسم به این نبود که تغذیه میکرو 5 و نمیتونه 5.7 ایجاد کنه .
                  الان من خروجی ها دوباره اندازه گیری کردم و روی مقاومت 1 کیلو بعد از دیو 3.8 ولت افت میکنه یعنی پین میکرو 3.8 میلی جریان میکشه این طبیعه؟؟؟؟
                  اگر هم جریان بکشه یک لحظه هستش. داخل ADC یک خازن قرار گرفته که توی یک لحظه با نمونه سیگنال شارژ میشه و بعد از اون دیگه جریانی نمیکشه.

                  دیدگاه


                    #10
                    پاسخ : مشکل در adc اتمگا8

                    نوشته اصلی توسط hossein.m98 نمایش پست ها
                    اگر هم جریان بکشه یک لحظه هستش. داخل ADC یک خازن قرار گرفته که توی یک لحظه با نمونه سیگنال شارژ میشه و بعد از اون دیگه جریانی نمیکشه.
                    من الان عیب متوجه شدم . این مدار برای درایو کردن pt100 هست من یک جریان 2.5 میلی آمپر دارم و یک ولتاژ 0.227- که جریان به pt100 وارد میشه و یک سر دیگه pt100 به 0.227- هست .
                    الان مشکل اینه که با وصل میکرو به مدار ولتاژ 0.227- افزایش پیدا میکنه و با خروج میکرو از مدار مشکل حل میشه .
                    ممنون میشم راهنمایی کنید.

                    [IMG][/IMG]

                    دیدگاه


                      #11
                      پاسخ : مشکل در adc اتمگا8

                      نوشته اصلی توسط rasool1370 نمایش پست ها
                      من الان عیب متوجه شدم . این مدار برای درایو کردن pt100 هست من یک جریان 2.5 میلی آمپر دارم و یک ولتاژ 0.227- که جریان به pt100 وارد میشه و یک سر دیگه pt100 به 0.227- هست .
                      الان مشکل اینه که با وصل میکرو به مدار ولتاژ 0.227- افزایش پیدا میکنه و با خروج میکرو از مدار مشکل حل میشه .
                      ممنون میشم راهنمایی کنید.

                      [IMG][/IMG]
                      سلام
                      ببخشید من از این مدار سر در نیاوردم که چکار قراره بکنه!

                      دیدگاه


                        #12
                        پاسخ : مشکل در adc اتمگا8

                        نوشته اصلی توسط rasool1370 نمایش پست ها
                        سلام ممنون
                        سیگنال ورودی با OP07 تقویت میکنم و میدم به میکرو . علت استفاده از دیود در خروجی OP07 اینه که ممکنه سیگنال ورودی منفی بشه و دیود اجازه نده که ولتاژ منفی به ADC بره.

                        وقتی خروجی اپامپ از میکرو جدا میکنم و با ولت متر اندازه گیری میکنم حدود 2.5 ولته ولی وقتی وصل میکنم به میکرو میره روی 5.7 ولت .

                        [IMG][/IMG]
                        سلام. در مداری که شماتیکش رو قرار دادید محدوده ی تغییرات سیگنال ورودی چقدر هست؟ چون تقویت کننده ی شما در حدود 58 برابر سیگنال رو تقویت می کنه!!
                        *** يا راهي خواهم يافت، يا راهي خواهم ساخت ... ***

                        دیدگاه


                          #13
                          پاسخ : مشکل در adc اتمگا8

                          نوشته اصلی توسط K1.IEEE نمایش پست ها
                          سلام. در مداری که شماتیکش رو قرار دادید محدوده ی تغییرات سیگنال ورودی چقدر هست؟ چون تقویت کننده ی شما در حدود 58 برابر سیگنال رو تقویت می کنه!!
                          سلام بله در همین حد تقویت میکنه چوم بازه تغیرات سیگنال از 0 تا 0.85 ولت هست.

                          دلیل: ادغام دو پست برای جلوگیری از اسپم

                          نوشته اصلی توسط hossein.m98 نمایش پست ها
                          سلام
                          ببخشید من از این مدار سر در نیاوردم که چکار قراره بکنه!
                          این مدار یک ولتاژ 0.227- ولت میسازه .
                          و وقتی من میکرو روشن میکنم ولتاژ خروجی این مدار میشه 0.117- در صورتی که هیچ ریطی بین میکرو و این مدار نیست !!!!

                          دیدگاه


                            #14
                            پاسخ : مشکل در adc اتمگا8

                            نوشته اصلی توسط rasool1370 نمایش پست ها
                            این مدار یک ولتاژ 0.227- ولت میسازه .
                            و وقتی من میکرو روشن میکنم ولتاژ خروجی این مدار میشه 0.117- در صورتی که هیچ ریطی بین میکرو و این مدار نیست !!!!
                            مطمئنید این مدار برای همین طراحی شده؟
                            این طور که من فهمیدم یه وارونگره که با ورودی 5 ولت و نسبت مقاومت هایی که داره، چیزی حدود منفی 113 ولت باید توی خروجی قرار بده که البته نشدنیه!

                            دیدگاه


                              #15
                              پاسخ : مشکل در adc اتمگا8

                              نوشته اصلی توسط hossein.m98 نمایش پست ها
                              مطمئنید این مدار برای همین طراحی شده؟
                              این طور که من فهمیدم یه وارونگره که با ورودی 5 ولت و نسبت مقاومت هایی که داره، چیزی حدود منفی 113 ولت باید توی خروجی قرار بده که البته نشدنیه!
                              بله شما درست میگید . ولی من تو شماتیک جای مقاومت ها اشتباها گذاشتم . باید جای 3.3 و 75 کیلو عوض بشه

                              دیدگاه

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