امیرحسین فرنوش
سلام
یک برنامه در نرم افزار کدویژن می خوام که یک atmega8 دما رو از یک سنسور lm35 بخواند (از پایه ADC) و با استفاده از تایمر در پایه خروجی تایمر (مثلا oco) pwm ای با فرکانس ۱۰۰ هرتز و دیوتی سایکل متغییر تولید کنه
بدین صورت که قبل دمای ۳۷ دیوتی سایکل صفر
دمای بین ۳۷ تا ۵۵ ، دیوتی سایکل بین ۳۰% تا ۱۰۰% به صورت خطی تغییر کند(با افزایش دما دیوتی سایکل افزایش و با کاهش دما دیوتی سایکل کاهش یابد)
و دمای بالای ۵۵ دیوتی سایکل ۱۰۰% ثابت بماند.
حتما این کار با استفاده از تایمر باید انجام شود و ورودی تایمر پایه ADC (سنسور lm35) میکرو باید باشد و خروجی هم همان خروجی تایمر مثلا oco یا غیره که pwm تولید کند.
کنترل pwm با توابع delay مانند برنامه زیر:
PORTD.0=0 )DELAY(1-DUTY CYCLE/100)×T))O PORTD.0=1 DELAY(DUTY CYCLE/100×T)
قابل انجام نیست و حتما باید از تایمر استفاده بشه
یا اگر تایمر بذارید و با ifهای فراوان به ازای هر درجه OCRO(دیوتی سایکل) را زیاد کنید:
T=READ_ADC(0) ;200=IF (T=37) OCRO ;210=IF (T=38) OCRO
در این پروژه جواب نخواهد داد.
من خودم تا تا حد متوسط کدنویسی می کنم و برنامه ای میخوام که تایمر به شکل اصولی با ADC لینک بشه و ورودی تایمر پایه ADC بشود.
همچنین آخر برنامه هم یه putchar بنویسید تا از طریق ارتباط سریال نرخ دما و درصد دیوتی سایکل رو با هر بار فشردن کلید T در صفحه کلید به کامپیوتر ارسال کند.
در کنار کدهای برنامه توضیحات جامع خط به خط لطفا بنویسید. این استادمون خیلی گیره و آدم رو سوال پیچ میکنه
ممنون میشم اگر زودتر جواب بدید
لطفا تخفیف دانشجویی فراموش نشود
باتشکر