سلام دوستان
من دارم یه مدار می بندم که توی اون از adc atmega8 استفاده میکنم ولی نمیدونم چرا مقدار Adc که میده بین 100 تا 1023 هست و از 0 تا 1023 نمیده...
چیکار باید بکنم؟
این از atmega میتونه باشه یا تنظیمات خاصی میخاد....
سلام دوستان
من دارم یه مدار می بندم که توی اون از adc atmega8 استفاده میکنم ولی نمیدونم چرا مقدار Adc که میده بین 100 تا 1023 هست و از 0 تا 1023 نمیده...
چیکار باید بکنم؟
این از atmega میتونه باشه یا تنظیمات خاصی میخاد....
سلام
شما پایه ورودی adc رو به زمین متصل کنید ببینید باز هم عدد 100 نمایش میده؟
سلام آره صفر نشون میده...
یه برنامه نوشتم که فقط مقدار adcرو روی lcd نشون بده واینجوری نشون میده
کمتر از 100 رو دوباره برمیگرده روی 1023
من متوجه منظورتون نشدم!
اگه موقعی که adc رو وصل کردید به زمین 0 نشون میده که دیگه تقریبا مشکل سخت افزاری ندارید!
اگر برنامه ای که تست میکنید رو قرار بدید بهتر میشه شما رو راهنمایی کرد
$regfile = "m8def.dat"
$crystal = 4000000
'-------------------------------------------------------------------------------
Config Lcdpin = Pin , Rs = Portd.0 , E = Portd.1 , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , _
Db7 = Portd.5
Config Lcd = 16 * 2
Cursor Off
Config Portc = Input
Config Adc = Single , Prescaler = Auto , Reference = Off
'-------------------------------------------------------------------------------
Start Adc
Dim X As Word , Y As Word
X = 0
Cls
Waitms 50
Do
X = Getadc(3)
Y = Getadc(0)
Locate 1 , 1
Lcd Y
Locate 2 , 1
Lcd X
Waitms 20
Loop
End
هرچی فاصلم از یه جسم بیشتر میشه مقدار کمتری رو نشون میده(دارم با سنسورir کار میکنم)
ولی وقتی مقدار adcبه 100 میرسه دوباره برمیگرده از حداکثر رو نشون میده
به Adc(0) زمین رو وصل کردم
ویرایش توسط azadmard : 31-01-2014 در ساعت 13:20
بهتره که رفرنس رو به جای off یه چیز دیگه بزارید (تو help بسکام چیزی از مگا 8 و رفرنس off ننوشته واسه بقیه میکرو ها هست ولی اسمی از مگا 8 برده نشده!!)مثلا بزارید avcc
و دوم اینکه خط:
[PHP]LCD Y[/PHP]
رو به خط زیر تغییر بدید:
[PHP]LCD Y;" "[/PHP]
و سوم اینکه نتیجه رو بگید
دوباره همون اوضاع برقرار بود و زیر 100 رو دوباره برمیگرده بالا
internul هم گذاشتم که اصلا میکرو کار نکرد
با avcc هم تست کنید!
پایه های تغذیه adc رو وصل کردید؟
یه خازن 104 هم بین vcc و gnd قرار بدید
بازم همون اوضاع....
تنظیم فیوزبیتی چیزی نمیخواد؟
شما یه کاری کن:
سر وسط یه پتانسیومتر (مقدارش مهم نیست) به پایه 3 adc و یه سر دیگه به vcc و سر دیگه به gnd!
بعد با تغییر پتانسیومتر ببین مقدار نمایش داده شده روی lcd بازم مشکل داره؟
کاملا درسته
میدونی کجای کار ایراد داشت؟
مقدار Adc بین 0 تا 1023 بود ولی موقع نمایش وقتی کمتر از 100 میشد و دورقمی میشد،رقم سوم ثابت باقی میموند و من فکر میکردم که برگشته به 900 نگو رقم آخر ثابت بود و فهمیدم نباید نمایش ثابت بدم و باید قبل از هربار نمایش روی lcd ، cls بکنم تا اگه وارد دورقمی شد،رقم سوم رو پاک بکنه...این راه دیگه ای نداره؟
ممنون از کمکهاتون...
چرا انجام دادم ولی نه جلوی این adc جلوی اون پایه که زمین کرده بودم گذاشتم...من که تو پست شماره 6 بهتون گفتم مگه شما اون تغییر رو ندادید تو برنامتون
مرسی از کمکهاتون