Sa tutorial na ito pupunta kami sa interface ng isang DC motor sa Arduino UNO at makontrol ang bilis nito gamit ang konsepto ng PWM (Pulse Width Modulation). Ang tampok na ito ay pinagana sa UNO upang makakuha ng variable na boltahe higit sa pare-pareho na boltahe. Ang pamamaraan ng PWM ay ipinaliwanag dito; isaalang-alang ang isang simpleng circuit tulad ng ipinakita sa pigura.
Kung ang pindutan ay pinindot kung ang figure, pagkatapos ang motor ay magsisimulang umiikot at ito ay gumagalaw hanggang sa ang pindutan ay pinindot. Ang pagpindot na ito ay tuloy-tuloy at kinakatawan sa unang alon ng pigura. Kung, para sa isang kaso, isaalang-alang ang pindutan na pinindot para sa 8ms at binuksan para sa 2ms sa isang cycle ng 10ms, sa kasong ito ang motor ay hindi makaranas ng kumpletong boltahe ng 9V baterya dahil ang pindutan ay pinindot lamang para sa 8ms, kaya ang RMS terminal voltage sa kabuuan ang motor ay nasa paligid ng 7V. Dahil sa nabawasan na boltahe ng RMS na motor ay paikutin ngunit sa isang nabawasang bilis. Ngayon ang average na pag-on sa isang panahon ng 10ms = I-ON ang oras / (I-ON ang oras + I-OFF ang oras), ito ay tinatawag na duty cycle at 80% (8 / (8 + 2)).
Sa pangalawa at pangatlong kaso ang pindutan ay pinindot kahit na mas kaunting oras kumpara sa unang kaso. Dahil dito, ang boltahe ng RMS terminal sa mga terminal ng motor ay nabawasan pa. Dahil sa nabawasan na boltahe na ito, ang bilis ng motor kahit na nababawasan pa. Ang pagbawas na ito ng bilis na may cycle ng tungkulin na patuloy na magaganap hanggang sa isang punto, kung saan ang boltahe ng terminal ng motor ay hindi sapat upang paikutin ang motor.
Kaya sa pamamagitan nito maaari nating tapusin na ang PWM ay maaaring magamit upang ibahin ang bilis ng motor.
Bago magpatuloy kailangan nating talakayin ang H-BRIDGE. Ngayon ang circuit na ito ay higit sa lahat dalawang mga pag-andar, una ay upang himukin ang isang DC motor mula sa mababang signal control ng kuryente at ang iba pa ay upang baguhin ang direksyon ng pag-ikot ng DC motor.
Larawan 1
Figure 2
Alam nating lahat na para sa isang motor na DC, upang mabago ang direksyon ng pag-ikot, kailangan nating baguhin ang mga polarity ng supply boltahe ng motor. Kaya upang baguhin ang mga polarity na ginagamit namin H-tulay. Ngayon sa itaas na figure1 mayroon kaming mga switch ng apat. Tulad ng ipinakita sa figure2, para sa motor na paikutin ang A1 at A2 ay sarado. Dahil dito, ang kasalukuyang daloy sa pamamagitan ng motor mula kanan pakanan, tulad ng ipinakita sa 2 nd bahagi ng figure3. Sa ngayon isaalang-alang ang motor na umiikot sa direksyon ng direksyon. Ngayon kung ang mga switch na A1 at A2 ay bubuksan, ang B1 at B2 ay sarado. Ang daloy sa pamamagitan ng motor ay dumadaloy mula kaliwa patungo sa kanan tulad ng ipinakita sa 1 st bahagi ng pigura3. Ang direksyon ng kasalukuyang daloy na ito ay kabaligtaran ng una at sa gayon nakikita namin ang isang kabaligtaran na potensyal sa terminal ng motor sa una, kaya't ang motor ay umiikot ng anti clock na matalino. Ganito gagana ang isang H-BRIDGE. Gayunpaman ang mga motor na mababa ang lakas ay maaaring hinimok ng isang H-BRIDGE IC L293D.
Ang L293D ay isang H-BRIDGE IC na idinisenyo para sa pagmamaneho ng mababang motor na DC motor at ipinapakita sa pigura. Ang IC na ito ay binubuo ng dalawang h-tulay at kaya maaari itong maghimok ng dalawang DC motor. Kaya ang IC na ito ay maaaring magamit upang himukin ang mga motor ng robot mula sa mga signal ng microcontroller.
Ngayon tulad ng tinalakay bago ang IC na ito ay may kakayahang baguhin ang direksyon ng pag-ikot ng DC motor. Nakamit ito sa pamamagitan ng pagkontrol sa mga antas ng boltahe sa INPUT1 at INPUT2.
Paganahin ang Pin |
Ipasok ang Pin 1 |
Ipasok ang Pin 2 |
Direksyon ng Motor |
Mataas |
Mababa |
Mataas |
Lumiko pakanan |
Mataas |
Mataas |
Mababa |
Lumiko pakaliwa |
Mataas |
Mababa |
Mababa |
Tigilan mo na |
Mataas |
Mataas |
Mataas |
Tigilan mo na |
Kaya't tulad ng ipinakita sa itaas na pigura, para sa paikot na pag-ikot ng 2A ay dapat na mataas at ang 1A ay dapat na mababa. Katulad nito para sa anti clockwise 1A ay dapat na mataas at 2A ay dapat na mababa.
Tulad ng ipinakita sa pigura, ang Arduino UNO ay may 6PWM na mga channel, kaya makakakuha kami ng PWM (variable boltahe) sa anuman sa anim na mga pin na ito. Sa tutorial na ito gagamitin namin ang PIN3 bilang output ng PWM.
Hardware: ARDUINO UNO, power supply (5v), 100uF capacitor, LED, mga pindutan (dalawang piraso), 10K, risistor (dalawang piraso).
Software: arduino IDE (Arduino gabi-gabi).
Diagram ng Circuit
Ang circuit ay konektado sa breadboard ayon sa circuit diagram na ipinakita sa itaas. Gayunpaman ang isa ay dapat magbayad ng pansin habang kumokonekta sa mga LED terminal. Bagaman ang mga pindutan ay nagpapakita ng epekto ng pag-bounce sa kasong ito hindi ito nagdudulot ng malalaking pagkakamali kaya't hindi tayo dapat magalala sa oras na ito.
Ang PWM mula sa UNO ay madali, sa mga normal na okasyon ng pag-set up ng isang ATMEGA controller para sa signal ng PWM ay hindi madali, kailangan naming tukuyin ang maraming mga rehistro at setting para sa isang tumpak na signal, subalit sa ARDUINO hindi namin kailangang harapin ang lahat ng mga bagay na iyon.
Sa pamamagitan ng default ang lahat ng mga file ng header at rehistro ay paunang natukoy ng ARDUINO IDE, kailangan lang namin silang tawagan at doon lamang magkakaroon kami ng isang output ng PWM sa naaangkop na pin.
Ngayon para sa pagkuha ng isang output ng PWM sa isang naaangkop na pin, kailangan nating magtrabaho sa tatlong bagay,
|
Una kailangan naming piliin ang PWM output pin mula sa anim na mga pin, pagkatapos nito kailangan naming itakda ang pin na iyon bilang output.
Susunod na kailangan namin upang paganahin ang tampok na PWM ng UNO sa pamamagitan ng pagtawag sa pagpapaandar na "analogWrite (pin, halaga)". Dito kinakatawan ng 'pin' ang numero ng pin kung saan kailangan namin ng output ng PWM inilalagay namin ito bilang '3'. Kaya sa PIN3 nakakakuha kami ng PWM output.
Ang halaga ay ang turn ON duty cycle, sa pagitan ng 0 (laging naka-off) at 255 (laging nasa). Pupunta kami sa pagtaas at pagbawas ng bilang na ito sa pamamagitan ng pagpindot sa pindutan.
Ang UNO ay may isang maximum na resolusyon ng "8", ang isa ay hindi maaaring pumunta sa karagdagang kaya ang mga halaga mula 0-255. Gayunpaman maaaring mabawasan ng isa ang resolusyon ng PWM sa pamamagitan ng paggamit ng utos na "analogWriteResolution ()", sa pamamagitan ng pagpasok ng isang halaga mula 4-8 sa mga braket, maaari nating baguhin ang halaga nito mula sa apat na bit PWM hanggang walong bit PWM.
Ang switch ay upang baguhin ang direksyon ng pag-ikot para sa DC motor.