سلام
من دارم رو یه پروژه کار می کنم که نیاز دارم ولتاژ یه ترمیستور رو بخونم و بر اساس اون یه با pid یه موج pwm بسازم جهت کنترل دما.
اما adc ولتاژ ترمیستور رو نمی خونه. , pwm با همون مقدار اولیه که دادم کار می کنه.
برنامه به این شکله که تو بدنه اصلی برنامه اول pwm با یه مقدار اولیه راه می افته. adc پیکره بندی میشه و وقفه ی اتمام adc فعال می شه-سپس خود adc استارت میشه.
تو وقفه اتمام adc مقدار جدید ocr بر اساس مقدار خوانده شده محاسبه شده و ذخیره می شه. سپس وقفه تطابق تایمر(برای pwm) فعال میشه.
تو وقفه تطابق تایمر مقدار جدید ocr اعمال شده ، وقفه تطابق تایمر غیر فعال میشه.
ولتاژ مرجع adc رو avcc انتخاب کردم که با سلف و خازن از vcc وصل شده.
نکته قابل ذکر اینه که ولتاژ آنالوگ بین 2 تا 5 ولته- آمما جریانی که می تونه به adc بده زیر یک میلی آمپره. چون ترمیستور 10کیلو اهمه که ولتاژ 5 ولت روشه. یعنی جریانش حدود نیم میلی آمپره.
اگه کسی میتونه راهنمایی کنه ممنون می شم.
اینهم کد من:
من دارم رو یه پروژه کار می کنم که نیاز دارم ولتاژ یه ترمیستور رو بخونم و بر اساس اون یه با pid یه موج pwm بسازم جهت کنترل دما.
اما adc ولتاژ ترمیستور رو نمی خونه. , pwm با همون مقدار اولیه که دادم کار می کنه.
برنامه به این شکله که تو بدنه اصلی برنامه اول pwm با یه مقدار اولیه راه می افته. adc پیکره بندی میشه و وقفه ی اتمام adc فعال می شه-سپس خود adc استارت میشه.
تو وقفه اتمام adc مقدار جدید ocr بر اساس مقدار خوانده شده محاسبه شده و ذخیره می شه. سپس وقفه تطابق تایمر(برای pwm) فعال میشه.
تو وقفه تطابق تایمر مقدار جدید ocr اعمال شده ، وقفه تطابق تایمر غیر فعال میشه.
ولتاژ مرجع adc رو avcc انتخاب کردم که با سلف و خازن از vcc وصل شده.
نکته قابل ذکر اینه که ولتاژ آنالوگ بین 2 تا 5 ولته- آمما جریانی که می تونه به adc بده زیر یک میلی آمپره. چون ترمیستور 10کیلو اهمه که ولتاژ 5 ولت روشه. یعنی جریانش حدود نیم میلی آمپره.
اگه کسی میتونه راهنمایی کنه ممنون می شم.
اینهم کد من:
دیدگاه