NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3489 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 8 از 8

موضوع: مشکل با adc

  1. #1
    عضو جدید
    تاریخ عضویت
    Jul 2011
    نام
    محمد شوشتری
    نوشته ها
    8
    تشکر
    3
    تشکر شده 1 بار در 1 پست

    پیش فرض مشکل با adc

    سلام دوستان
    من واسه استفاده از ADC کد زیر رو استفاده میکنم :
    کد:
    #include <AT91SAM7X256.h> 
    #include <stdio.h>
    #include <delay.h> 
    #include <adc.h> 
    #define  LCD_PORT_B 
    #define LCD_RS 8 
    #define LCD_E 10 
    #define LCD_DB4 12 
    #define LCD_DB5 13 
    #define LCD_DB6 14 
    #define LCD_DB7 15 
    #include <lcd.h> 
    int main (void){ 
    float a , b; 
    char lcd_buffer[10];
    config_adc( 0xc0); 
    lcd_init(); 
    
    while(1) 
    { 
    lcd_clear();
    cursor_off();
    lcd_gotoxy(1,1); 
    lcd_putsf( "adc="); 
    start_adc();
    a = read_adc(6); 
    a=(a*3.3)/1023;
    b = read_adc(7); 
    b=(b*3.3)/1023;
    lcd_gotoxy(2,1); 
    sprintf(lcd_buffer,"a=%4.3f   b=%4.3f",a,b);
    lcd_putsf(lcd_buffer);	
    delay_ms(200);	
    }}
    وقتی ولتاژ هیچ کدوم از پورت های ADC بیشتر از 3.3 نیست همه چیز خوب کار میکنه ولی موقعی که به پورت 7 ولتاژ 5 ولت میدم مقدار خروجی ADC نه تنها واسه پورت 7 بلکه واسه پورت 6 هم 1023 میشه (فارغ از اینکه مقدار ولتاژ اعمالی به پورت 6 چیه )
    جالب اینجاست که حتی اگه به پرت 4 ADC که اصلا تو برنامه کاری باهاش نداشتم هم 5 ولت اعمال کنم باز هم این اتفاق میافته...
    کسی از دوستان میتونه بگه ایراد کار از کجاست؟

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    کاربر فعال beroz آواتار ها
    تاریخ عضویت
    May 2009
    نام
    بهروز
    نوشته ها
    285
    تشکر
    204
    تشکر شده 299 بار در 116 پست

    پیش فرض

    خوب باید هم همینطور باشه چون به احتمال زیاد ولتاژ رفرنس رو به پایه 3.3 ولت وصل کردین و adc هر مقداری و بالاتر از ۳.۳ بتون ۱۰۲۳ میده

    شما باید پایه ولتاژ رفرنس رو به مثلا ۵ ولت وصل کنید تا از ۰ تا ۵ قابل خوندن باشه

  4. تشکرها از این نوشته :


  5. #3
    عضو جدید
    تاریخ عضویت
    Jan 2014
    نوشته ها
    15
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    من سیگنال dc از power supply به adc میکرو arm دادم ولی دقت مورد نظر منو نداره تو صدم ولت تغییرات دارم که این تغییرات واسم خیلی مهمه واقعا موندم چیکار کنم نمیدونم مشکل از adc میکرو هستش یا نه، من ریت sampling رو حداقل و حداکثر کردم ولی بازم مشکلم حل نشد کمک کنید

  6. #4
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام

    من سیگنال dc از power supply به adc میکرو arm دادم ولی دقت مورد نظر منو نداره تو صدم ولت تغییرات دارم که این تغییرات واسم خیلی مهمه واقعا موندم چیکار کنم نمیدونم مشکل از adc میکرو هستش یا نه، من ریت sampling رو حداقل و حداکثر کردم ولی بازم مشکلم حل نشد کمک کنید
    اگه ممکنه اطلاعات بیشتری برید
    ترجیها پروژه رو قرار بدید
    یا در مورد شیوه اندازه گیریتون ..؟
    کانفیگ adc ??
    نوع میکرو ؟
    و...
    *** اللّهم عجّل لولیک الفرج ***

  7. #5
    عضو جدید
    تاریخ عضویت
    Jan 2014
    نوشته ها
    15
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نوع میکرو: at91sam7x256
    adc-mr=0x0f1f0900
    برنامه اصلی من به اسم main و هدر adc آن هم پیوست شده است .

    البته برنامه کلی من یه چیز دیگس فعلا دارم adc میکرو راتست میکنم البته این برنامه رو با دو روش دیگه تست کردم ولی جوابهای پرتی گرفتم هدفم اینه که بتونم ولتاژ ورودی رو تا صدم ولت دقیق بخونم تو برنامه main2 اومدم 1000 سمپل از ورودی گرفتم و با استفاده از وقفه تایمر صفر به ازای هر 500ms ، از این 1000 سمپل میانگین گیری کردم و حاصلرو در ال سی دی نمایش دادم ولی نمیدونم چرا جواب پرت مگیرم البته تعداد سمپل ها رو به 10 تا هم رسوندم باز مشکل داشت فایل main2 بهمراه هدر tc ضمیمه شده است
    در برنامه main3 روش خودمو عوض کردم و اومدم از وقفه تایمر صفر استفاده کردم به این صورت که به ازای هر 5ms وارد روتین وقفه شدم و این کار رو تا وارد کردن 100 سمپل ادامه داده و در نهایت میانگین گیری کردم ولی باز به جواب پرت رسیدم واقعا گیج شدم امیدوارم کمکم کنید
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: txt tcc.txt (5.6 کیلو بایت, 12 نمايش)
    • نوع فایل: txt tc.txt (2.8 کیلو بایت, 14 نمايش)
    • نوع فایل: txt main2.txt (867 بایت, 12 نمايش)
    • نوع فایل: txt adc.txt (2.2 کیلو بایت, 12 نمايش)
    • نوع فایل: txt main.txt (412 بایت, 15 نمايش)

  8. #6
    عضو جدید
    تاریخ عضویت
    Jan 2014
    نوشته ها
    15
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    البته بگم در main3 به ازای هر 5ms یک سمپل وارد وقفه خواهد شد
    فايل هاي پيوست شده فايل هاي پيوست شده

  9. #7
    کاربر فعال abbasalifix آواتار ها
    تاریخ عضویت
    Apr 2011
    نام
    عباسعلی محمدنیا
    نوشته ها
    187
    تشکر
    266
    تشکر شده 139 بار در 80 پست

    پیش فرض

    سلام
    من برنامه هایی برای کار با این میکرو و ال سی دی 3.2 و حتی ارتبات سریال گذاشتم
    اگه پیدا کردنش سخته لینک از وبلاگم میدم
    هر برنامه ای جدا و مشخض هست با توضیحات مختصر
    "درضمن دقت کنید که پایه REF میکرو تون وصل باشه"
    اینم لینک وبلاگ ، قسمت میکروهای ARM
    الکترونیک+میکروکنترولر+سوئ یچینگ - میکروکنترول های ARM

  10. تشکرها از این نوشته :


  11. #8
    عضو جدید
    تاریخ عضویت
    Jan 2014
    نوشته ها
    15
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    از اینکه به درخواستم جواب دادین ممنونم ولی خب برنامه شمامثل برنامه منه (فایل main که ضمیمه شده) و من هم جواب گرفتم ولی طبق صحبتهایی که شد گفتم که تو صدم ولت تلرانس دارم که این تلرانس واسه کاری که میخوام کنم معزله من اومدم یه سیگنال از power supply مستقیم به adc وصل کردم که مثلا باید 1.4 نشون بده ولی مثلا گاهی اوقات 1.6 یا 1.3 ویا حتی 1.9 نشون میده

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •