موتور پله ای
در این بخش پروژه بسیار جالبی با عنوان ساخت ساعت عقربه ای با موتور پله ای و میکروکنترلر AVR, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر AVR آماده شده است. در این پروژه, از یک موتور پله ای با دقت 1/8 درجه برای ساخت ساعت عقربه ای استفاده شده است و در حقیقت به عنوان موتور ساعت عقربه ای در نظر گرفته می شود و در هر ثانیه یک دور کامل می زند.
با توجه به اینکه دقت این موتور 1/8 درجه است, باید 200 پله بچرخد تا یک دور کامل بزند, به عبارتی باید هر 5ms یک پله بچرخد تا در هر ثانیه یک دور کامل بزند. مدار پروژه از یک تراشه ULN2803 تشکیل شده که از سویی به میکروکنترلر ATmega8 و از سوی دیگر به یک موتور پله ای وصل شده است. همچنین توجه داشته باشید که به جای تراشه ULN2803 می توانید از آی سی های مشابه مانند L293 یا چند ترانزیستور استفاده کنید.
قطعات مورد نیاز
:: میکروکنترلر ATmega8 | خرید
:: تراشه ULN2803 | خرید
:: موتور پله ای | خرید
برنامه در محیط نرم افزار Code Vision AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include #include void main(void) { // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out // State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0 PORTD=0x00; DDRD=0x0F; PORTD=1; while (1) { if (PORTD==8) PORTD=1; else PORTD=PORTD*2; delay_ms(5); }; } |
برای شروع برنامه نویسی کافی است که پایه های 1 تا 4 پورت D به صورت خروجی پیکربندی شوند. همچنین دقت داشته باشید که در زبانه Chip در محیط Code Wizard AVR, نوع میکروکنترلر را ATmega8 با فرکانس کاری 4MHz انتخاب کنید.
برنامه در محیط نرم افزار BASCOM-AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$regfile = “m8def.dat” $crystal = 8000000 Config Portd = Output Portd = 1 Do If Portd = 8 Then Portd = 1 Else Portd = Portd * 2 End If Waitms 5 Loop End ‘end program |
شرح عملکرد برنامه در محیط BASCOM-AVR به زبان بیسیک BASIC
در این برنامه از روش موجی برای راه اندازی موتور پله ای استفاده می شود, در نتیجه در هر مرحله باید یکی از سیم پیچ های موتور پله ای تحریک شود. از آنجا که هر کدام از این سیم پیچ ها به ترتیب به پایه های D0 تا D3 میکروکنترلر وصل شده اند, در هر مرحله باید یکی از پایه ها یک باشد. حال به جای مقدار دهی به یک پایه از پورت D, کل پورت D را مقدار دهی می کنیم. برای مثال اگر بخواهیم فقط D0 برابر با یک شود, کافی است که پورت D به صورت 00000001 در مبانی دو (یا 1 در مبنای ده) مقداردهی می شود.
به همین ترتیب برای یک کردن پایه های D2 و D3 به ترتیب کل پورت D به صورت 00000100 و 00001000 در مبنای دو (و یا 4 و 8 در مبنای ده) مقدار دهی می شود. بدین ترتیب با تحریک متوالی هر یک از پایه های D0 تا D3 میکروکنترلر موتور پله ای در هر مرحله یک پله به جلو حرکت خواهد کرد. در بین هر مرحله از تحریک, یک تاخیر 5 میلی ثانیه ای در نظر گرفته شده است تا سیم پیچ ها زمان کافی برای تحریک را داشته باشند.