- Ano ang DC motor?
- Kinakailangan ang Mga Bahagi
- Diagram ng Circuit
- Programming Atmega16 para sa kontrol ng DC Motor
Ang DC motors ay ang pinakalawak na ginagamit na motor. Ang mga motor na ito ay matatagpuan halos saanman mula sa maliliit na proyekto hanggang sa advanced robotics. Dati ay nakipag-ugnay kami sa DC Motor sa maraming iba pang mga microcontroller tulad ng Arduino, Raspberry pi at ginamit ito sa maraming mga robotic na proyekto. Ngayon natututunan nating kontrolin ang DC motor gamit ang AVR Microcontroller Atmega16. Ngunit bago magpatuloy malaman natin ang higit pa tungkol sa DC motor.
Ano ang DC motor?
Ang DC Motor ay isang aparato kung saan binabago ang elektrikal na enerhiya sa mekanikal na enerhiya. Partikular, ang isang DC motor ay gumagamit ng kasalukuyang DC upang i-convert ang elektrisidad na enerhiya sa mekanikal na enerhiya. Ang pangunahing prinsipyo ng motor ay ang pakikipag-ugnayan sa pagitan ng magnetic field at kasalukuyang upang makabuo ng isang puwersa sa loob ng motor na tumutulong sa motor na paikutin. Kaya't kapag ang kasalukuyang kuryente ay naipasa sa pamamagitan ng isang likid sa isang magnetic field, nabubuo ang isang puwersang pang-magnetiko na gumagawa ng isang metalikang kuwintas na nagreresulta sa paggalaw ng motor. Ang direksyon ng motor ay kinokontrol ng pag-reverse ng kasalukuyang. Gayundin ang bilis nito ay maaaring iba-iba sa pamamagitan ng iba't ibang naibigay na boltahe. Dahil ang mga microcontroller ay may mga PWM na pin, kaya maaari itong magamit upang makontrol ang bilis ng motor.
Sa tutorial na ito, ang operasyon ng DC motor ay ipapakita sa Atmega16. Gagamitin ang driver ng L293D motor upang baligtarin ang direksyon ng kasalukuyang kaya ang direksyon ng paggalaw. Ang driver ng L293D motor ay gumagamit ng pagsasaayos ng circuit ng H-Bridge na kung saan ang mga output na kinakailangan kasalukuyang sa Motor. Ginagamit ang dalawang mga pindutan ng push upang piliin ang direksyon ng motor. Ang isa sa pindutan ng itulak ay ginagamit upang piliin ang pag-ikot ng matalinong orasan at ang isa pa ay ginagamit upang piliin ang pagpapatakbo ng anti-relo ng DC motor.
Kinakailangan ang Mga Bahagi
- DC Motor (5V)
- L293D Motor Driver
- Atmega16 Microcontroller IC
- 16Mhz Crystal Oscillator
- Dalawang 100nF Capacitor
- Dalawang 22pF Capacitor
- Push Button
- Jumper Wires
- Breadboard
- USBASP v2.0
- Led (Anumang Kulay)
Diagram ng Circuit
Programming Atmega16 para sa kontrol ng DC Motor
Narito ang Atmega16 ay nai-program na gamit ang USBASP at Atmel Studio7.0. Kung hindi mo alam kung paano i-program ang Atmega16 gamit ang USBASP pagkatapos ay bisitahin ang link. Ang Kumpletong Programa ay ibinibigay sa pagtatapos ng proyekto, i -upload lamang ang programa sa Atmega16 at gamitin ang dalawang Push Buttons upang paikutin ang motor na DC sa tuwid at Anti-clockwise.Ang DC motor ay nakagambala gamit ang L293D motor driver. Paikutin ang DC motor sa dalawang direksyon kapag ang bawat pindutan ng push ay pinindot. Ang isang pindutan na itulak ay gagamitin upang paikutin ang DC motor sa direksyong Clock Wise at ang isa pang pindutan ng itulak ay gagamitin upang paikutin ang DC motor sa matalinong direksyon ng Counter Clock. Una tukuyin ang dalas ng CPU ng microcontroller at isama ang lahat ng kinakailangang aklatan.
# tukuyin ang F_CPU 16000000UL # isama ang # isama
Pagkatapos, gumamit ng isang variable upang subaybayan ang push button na pinindot ang katayuan. Gagamitin ang variable na ito upang tukuyin ang direksyon ng motor.
int i;
Piliin ang mode ng pag-input / output ng GPIO gamit ang rehistro ng direksyon ng data. Una, gumawa ng output ng Motor pin bilang mababang upang maiwasan ang pagsisimula ng motor nang hindi pinipilit ang pindutan ng push.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Suriin kung ang 1 st push button ay pinindot na konektado sa PORTA4 ng Atmega16 at iimbak ang katayuan ng push button sa variable.
kung (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Gayundin suriin kung ang pindutan ng 2 nd push ay pinindot na konektado sa PORTA5 ng Atmega16 at iimbak ang katayuan ng push button sa variable.
kung hindi man kung (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Kung ang katayuan ng pindutan na 1 st ay totoo pagkatapos ay paikutin ang DC motor sa matalinong direksyon ng Clock at kung ang katayuan ng pangalawang pindutan ng itulak ay totoo pagkatapos ay paikutin ang DC motor sa matalinong anti-orasan.
kung (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } iba pa kung (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Maaari mong ikonekta ang mga motor pin sa anumang GPIO pin depende sa ginamit na GPIO. Mahalaga rin na gamitin ang Motor Driver IC upang bawasan ang pagkarga sa microcontroller dahil ang mga microcontrollers ay hindi kayang magbigay ng kinakailangang kasalukuyang upang patakbuhin ang mga DC motor. Para sa karagdagang detalye at iba pang mga proyekto batay sa DC motors, mangyaring bisitahin ang ibinigay na link.
Ang kumpletong code at Demonstration Video ay ibinibigay sa ibaba.