PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل با adc



stinkor
30-03-2013, 17:57
سلام دوستان
من واسه استفاده از 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 ولت اعمال کنم باز هم این اتفاق میافته...
کسی از دوستان میتونه بگه ایراد کار از کجاست؟

beroz
30-03-2013, 20:13
خوب باید هم همینطور باشه چون به احتمال زیاد ولتاژ رفرنس رو به پایه 3.3 ولت وصل کردین و adc هر مقداری و بالاتر از ۳.۳ بتون ۱۰۲۳ میده

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

mahdi_j61
09-10-2014, 01:03
من سیگنال dc از power supply به adc میکرو arm دادم ولی دقت مورد نظر منو نداره تو صدم ولت تغییرات دارم که این تغییرات واسم خیلی مهمه واقعا موندم چیکار کنم نمیدونم مشکل از adc میکرو هستش یا نه، من ریت sampling رو حداقل و حداکثر کردم ولی بازم مشکلم حل نشد کمک کنید

Doloop
09-10-2014, 01:50
سلام


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

اگه ممکنه اطلاعات بیشتری برید
ترجیها پروژه رو قرار بدید
یا در مورد شیوه اندازه گیریتون ..؟
کانفیگ adc ??
نوع میکرو ؟
و...

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

البته برنامه کلی من یه چیز دیگس فعلا دارم adc میکرو راتست میکنم البته این برنامه رو با دو روش دیگه تست کردم ولی جوابهای پرتی گرفتم هدفم اینه که بتونم ولتاژ ورودی رو تا صدم ولت دقیق بخونم تو برنامه main2 اومدم 1000 سمپل از ورودی گرفتم و با استفاده از وقفه تایمر صفر به ازای هر 500ms ، از این 1000 سمپل میانگین گیری کردم و حاصلرو در ال سی دی نمایش دادم ولی نمیدونم چرا جواب پرت مگیرم البته تعداد سمپل ها رو به 10 تا هم رسوندم باز مشکل داشت فایل main2 بهمراه هدر tc ضمیمه شده است
در برنامه main3 روش خودمو عوض کردم و اومدم از وقفه تایمر صفر استفاده کردم به این صورت که به ازای هر 5ms وارد روتین وقفه شدم و این کار رو تا وارد کردن 100 سمپل ادامه داده و در نهایت میانگین گیری کردم ولی باز به جواب پرت رسیدم واقعا گیج شدم امیدوارم کمکم کنید

mahdi_j61
09-10-2014, 04:20
البته بگم در main3 به ازای هر 5ms یک سمپل وارد وقفه خواهد شد

abbasalifix
09-10-2014, 10:09
سلام
من برنامه هایی برای کار با این میکرو و ال سی دی 3.2 و حتی ارتبات سریال گذاشتم
اگه پیدا کردنش سخته لینک از وبلاگم میدم
هر برنامه ای جدا و مشخض هست با توضیحات مختصر
"درضمن دقت کنید که پایه REF میکرو تون وصل باشه"
اینم لینک وبلاگ ، قسمت میکروهای ARM
الکترونیک+میکروکنترولر+سوئ یچینگ - میکروکنترول های ARM (You can see links before reply)

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