Talaan ng mga Nilalaman:

Arduino 2-in-1 Model Train Controller: 4 na Hakbang
Arduino 2-in-1 Model Train Controller: 4 na Hakbang

Video: Arduino 2-in-1 Model Train Controller: 4 na Hakbang

Video: Arduino 2-in-1 Model Train Controller: 4 na Hakbang
Video: How to use 4 channel Relay to control AC load with Arduino code 2024, Hulyo
Anonim
Arduino 2-in-1 Model Train Controller
Arduino 2-in-1 Model Train Controller

Apatnapung taon na ang nakalilipas nagdisenyo ako ng isang op-amp batay sa modelong throttle ng tren para sa isang pares ng mga kaibigan, at pagkatapos mga apat na taon na ang nakakalipas ay muling likha ko ito gamit ang isang PIC microcontroller. Ang proyektong Arduino na ito ay muling likha ang bersyon ng PIC ngunit nagdaragdag din ng kakayahang gumamit ng isang koneksyon sa Bluetooth sa halip na mga manu-manong switch para sa kontrol ng throttle, preno at direksyon. Habang ang disenyo na ipinakita ko rito ay naka-target para sa isang 12 volt na modelo ng riles ng motor, madali itong mabago para sa iba't ibang iba pang mga aplikasyon ng kontrol sa motor na DC.

Hakbang 1: Pulse Width Modulation (PWM)

Pulse Width Modulation (PWM)
Pulse Width Modulation (PWM)

Para sa iyo na hindi pamilyar sa PWM, hindi ito nakakatakot sa tunog nito. Ang ibig sabihin lamang nito para sa aming simpleng application ng pagkontrol ng motor ay bumubuo kami ng isang parisukat na alon ng ilang dalas, at pagkatapos ay binabago namin ang cycle ng tungkulin. Ang cycle ng tungkulin ay tinukoy bilang ang ratio ng oras na ang output ay isang lohikal na mataas kumpara sa panahon ng waveform. Maaari mong makita iyon nang malinaw sa diagram sa itaas na may tuktok na form ng alon sa 10% na cycle ng tungkulin, ang gitnang waveform sa 50% duty cycle, at ang ilalim na waveform sa 90% duty cycle. Ang dashing line na overlay sa bawat waveform ay kumakatawan sa katumbas na boltahe ng DC na nakikita ng motor. Dahil sa ang Arduino ay may kakayahan na PWM na nakapaloob, talagang simple ito upang makabuo ng ganitong uri ng DC motor control. Ang isa pang iba pang kalamangan sa paggamit ng PWM ay makakatulong ito upang mapanatili ang motor mula sa pagbagsak na pagsisimula na maaaring mangyari kapag gumagamit ng tuwid na DC. Ang isang kawalan ng PWM ay kung minsan may naririnig na ingay mula sa motor sa dalas ng PWM.

Hakbang 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Ipinapakita ng unang larawan ang mga koneksyon ng Arduino para sa mga switch at ang LM298 motor driver module. Mayroong mahina na resistors ng pull-up na panloob sa Arduino kaya walang kinakailangang resistors na pull-up para sa mga switch. Ang Direksyon switch ay isang simpleng switch ng SPST (solong poste). Ang mga switch ng Throttle at Brake ay ipinapakita bilang karaniwang bukas, pansamantalang mga pindutan ng push push.

Ipinapakita ng pangalawang larawan ang mga koneksyon ng Arduino para sa module ng Bluetooth at ang LM298 motor driver module. Direktang kumokonekta ang output ng Bluetooth TXD sa serial input ng Arduino RX.

Ang pangatlong larawan ay isang module na L298N dual H-bridge. Ang module na LM298 ay may isang onboard na 5 volt regulator na maaaring paganahin ng isang jumper. Kailangan namin ng +5 volts para sa Arduino at Bluetooth ngunit nais naming +12 volts upang himukin ang motor. Sa kasong ito inilalapat namin ang +12 volts sa input na "+ 12V lakas" ng L298N at iiwan namin ang "5V paganahin" ang lumulukso sa lugar. Pinapayagan nito ang 5-volt regulator na mag-output sa koneksyon na “+5 lakas” sa module. Ikonekta iyon sa Arduino at sa Bluetooth. Huwag kalimutang ikonekta ang mga ground wires para sa input na +12 at ang output na +5 sa module na "power GND".

Nais namin na ang output boltahe sa motor ay magkakaiba batay sa PWM na nabuo ng Arduino sa halip na puno lamang o puno. Upang gawin iyon, inaalis namin ang mga jumper mula sa "ENA" at "ENB" at ikonekta ang aming output ng Arduino PWM sa "ENA" sa modyul. Tandaan na ang aktwal na paganahin ang pin ay ang pinakamalapit sa gilid ng board (sa tabi ng mga "input" na pin). Ang back pin para sa bawat paganahin ay +5 volts kaya nais naming tiyakin na hindi kami makakonekta doon.

Ang mga "IN1" at "IN2" na mga pin sa module ay nakakonekta sa kani-kanilang mga pin ng Arduino. Kinokontrol ng mga pin ang direksyon ng motor at, oo, may magandang dahilan upang hayaang kontrolin sila ng Arduino sa halip na simpleng pagkonekta ng isang switch sa module. Makikita natin kung bakit sa talakayan ng software.

Hakbang 3: Bluetooth Module

Module ng Bluetooth
Module ng Bluetooth

Ang ipinakitang larawan dito ay tipikal ng mga magagamit na mga module ng Bluetooth. Kapag naghahanap ng isang bibilhin, maaari kang maghanap sa mga term na "HC-05" at HC-06 ". Ang mga pagkakaiba sa pagitan ng dalawa ay nasa firmware at karaniwang sa bilang ng mga pin sa board. Ang larawan sa itaas ay isang module na HC-06 at mayroong pinasimple na firmware na nagpapahintulot lamang sa napaka-pangunahing pagsasaayos. Itinakda rin ito bilang isang "Alipin" lamang na aparatong Bluetooth. Sa mga simpleng term na nangangahulugang maaari lamang itong tumugon sa mga utos mula sa isang "Master" na aparato at hindi maaaring maglabas ng mga utos nang mag-isa. Ang module na HC-05 ay may higit na mga posibilidad sa pagsasaayos at maaaring maitakda bilang alinman sa isang "Master" o isang "Alipin" na aparato. Ang HC-05 ay karaniwang may anim na mga pin sa halip na ang apat na ipinakita sa itaas para sa HC-06. Ang pin ng Estado ay hindi totoong mahalaga ngunit ang Key pin (kung minsan ay napupunta sa iba pang mga pangalan tulad ng "EN") ay kinakailangan kung nais mong gumawa ng anumang pagsasaayos. Pangkalahatan, ang mga module ay hindi nangangailangan ng anumang pagsasaayos kung ok ka sa default na rate ng baud na 9600 at walang pakialam na magbigay ng isang tukoy na pangalan sa module. Mayroon akong maraming mga proyekto kung saan ginagamit ko ang mga ito kaya nais kong pangalanan ang mga ito nang naaayon.

Ang pag-configure ng mga module ng Bluetooth ay nangangailangan na bumili o bumuo ng isang interface sa isang serial port na RS-232 o sa isang USB port. Hindi ko sasakupin kung paano bumuo ng isa sa post na ito ngunit dapat kang makahanap ng impormasyon sa web. O bumili lamang ng isang interface. Ang mga utos ng pagsasaayos ay gumagamit ng mga utos na AT tulad ng kung ano ang ginamit noong unang panahon na may mga modem sa telepono. Nag-attach ako ng isang manwal ng gumagamit dito na nagsasama ng mga utos ng AT para sa bawat uri ng module. Ang isang bagay na dapat tandaan ay ang HC-06 na nangangailangan ng mga UPPERCASE na utos at ang command string ay dapat kumpletuhin sa loob ng 1 segundo. Nangangahulugan iyon na ang ilan sa mas mahahabang mga string para sa mga bagay tulad ng pagbabago ng mga rate ng baud ay kailangang i-cut at i-paste sa iyong programa sa terminal o kakailanganin mong i-set up ang mga text file upang maipadala. Ang kinakailangan sa UPPERCASE ay lamang kung sinusubukan mong magpadala ng mga utos ng pagsasaayos. Maaaring tanggapin ng regular na mode ng komunikasyon ang anumang 8-piraso ng data.

Hakbang 4: Software

Ang software ay medyo simple para sa parehong manwal na bersyon at ang bersyon ng Bluetooth. Upang mapili ang bersyon ng Bluetooth ay simpleng i-unsment ang pahayag na "#define BT_Ctrl".

Nang isulat ko ang PIC code nag-eksperimento ako sa dalas ng PWM at sa wakas ay naayos na sa 500-Hz. Natuklasan ko na kung ang dalas ay masyadong mataas pagkatapos ang module na LM298N ay hindi may kakayahang mag-react ng sapat na mabilis sa mga pulso. Nangangahulugan iyon na ang output ng boltahe ay hindi linear at maaaring tumagal ng malaking jumps. Ang Arduino ay may naka-built na mga utos na PWM ngunit pinapayagan ka lamang nilang ibahin ang cycle ng tungkulin at hindi ang dalas. Sa kasamaang palad, ang dalas ay tungkol sa 490-Hz kaya't malapit na iyon sa 500-Hz na ginamit ko sa PIC.

Ang isa sa mga "tampok" ng mga throttle ng tren ay isang pakiramdam ng momentum para sa pagpapabilis at pagpepreno upang gayahin kung paano gumagana ang isang tunay na tren. Upang magawa iyon, isang simpleng pagkaantala ng oras ay naipasok sa loop para sa manu-manong bersyon ng software. Sa ipinakitang halaga, tumatagal ng humigit-kumulang 13 segundo upang pumunta mula 0 hanggang 12 volts o mula 12 volts pabalik sa zero. Ang pagkaantala ay maaaring madaling mabago para sa mas mahaba o mas maikling oras. Ang tanging kaso kung saan ang momentum ay hindi epektibo ay kapag binago ang Direksyon. Para sa mga layuning proteksyon ang siklo ng tungkulin ng PWM ay agad na nakatakda sa 0% tuwing binago ang switch na ito. Iyon, sa bisa, ginagawang doble din ang switch ng Direksyon bilang isang emergency preno.

Upang matiyak ang agarang paghawak ng Direksyon switch inilalagay ko ang code nito sa isang nakakagambala na handler. Pinapayagan din kaming gamitin ang function na "makagambala sa pagbabago" kaya't hindi mahalaga kung ang pagbabago ay mula sa mababa hanggang sa mataas o mataas hanggang sa mababa.

Ang bersyon ng Bluetooth ng software ay gumagamit ng solong mga utos ng liham upang simulan ang mga pagpapaandar na Forward, Reverse, Brake, at Throttle. Bilang epekto, ang mga natanggap na utos ay pinapalitan ang mga manu-manong switch ngunit sanhi ng parehong mga tugon. Ang app na ginagamit ko para sa kontrol ng Bluetooth ay tinatawag na "Bluetooth Serial Controller" ng Mga Susunod na Prototype. Hinahayaan ka nitong i-configure ang isang virtual keypad at itakda ang iyong sariling mga string string at pangalan para sa bawat key. Pinapayagan ka ring magtakda ng isang rate ng ulitin kaya't itinakda ko ang mga pindutan ng Brake at Throttle sa 50ms upang mabigyan ng halos 14 segundo ng momentum. Hindi ko pinagana ang paulit-ulit na pag-andar para sa mga pindutang Ipasa at Baligtarin.

Iyon lang para sa post na ito. Suriin ang aking iba pang Mga Tagubilin. Kung interesado ka sa mga proyekto ng PIC microcontroller tingnan ang aking website sa www.boomerrules.wordpress.com

Inirerekumendang: