Cuprins:

Controler de tren Arduino 2-în-1: 4 pași
Controler de tren Arduino 2-în-1: 4 pași

Video: Controler de tren Arduino 2-în-1: 4 pași

Video: Controler de tren Arduino 2-în-1: 4 pași
Video: How to use 4 channel Relay to control AC load with Arduino code 2024, Iulie
Anonim
Controler de model 2-în-1 Arduino
Controler de model 2-în-1 Arduino

În urmă cu patruzeci de ani, am proiectat un accelerator de model pe bază de op-amplificator pentru câțiva prieteni și apoi, acum aproximativ patru ani, l-am recreat folosind un microcontroler PIC. Acest proiect Arduino recreează versiunea PIC, dar adaugă și capacitatea de a utiliza o conexiune Bluetooth în loc de comutatoare manuale pentru accelerație, frână și control al direcției. În timp ce designul pe care îl prezint aici este destinat unui model de cale ferată de 12 volți, acesta poate fi ușor modificat pentru o varietate de alte aplicații de control al motorului de curent continuu.

Pasul 1: Modulația lățimii impulsurilor (PWM)

Modulația lățimii pulsului (PWM)
Modulația lățimii pulsului (PWM)

Pentru cei dintre voi care nu sunt familiarizați cu PWM, nu este atât de înfricoșător pe cât pare. Tot ce înseamnă cu adevărat pentru aplicația noastră simplă de control al motorului este că generăm o undă pătrată cu o anumită frecvență și apoi schimbăm ciclul de funcționare. Ciclul de funcționare este definit ca raportul de timp în care ieșirea este un nivel logic comparativ cu perioada de formă de undă. Puteți vedea acest lucru destul de clar în diagrama de mai sus, cu forma de undă superioară la 10% ciclu de funcționare, forma de undă medie la 50% ciclu de funcționare și forma de undă inferioară la 90% ciclu de funcționare. Linia punctată suprapusă pe fiecare formă de undă reprezintă tensiunea DC echivalentă văzută de motor. Având în vedere că Arduino are o capacitate PWM încorporată, este foarte simplu să generezi acest tip de control al motorului de curent continuu. Un alt avantaj al utilizării PWM este că ajută la menținerea motorului de la pornirea care se poate întâmpla atunci când se utilizează curent continuu drept. Un dezavantaj al PWM este că există uneori un zgomot audibil de la motor la frecvența PWM.

Pasul 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Prima imagine prezintă conexiunile Arduino pentru comutatoare și modulul driverului motorului LM298. Există rezistențe slabe de tragere interne Arduino, astfel încât nu sunt necesare rezistențe de tragere pentru comutatoare. Comutatorul de direcție este un comutator simplu SPST (single pole single throw). Comutatoarele clapetei de accelerație și frână sunt afișate ca butoane de contact deschise, de moment, de contact.

A doua imagine prezintă conexiunile Arduino pentru modulul Bluetooth și modulul driverului motorului LM298. Ieșirea Bluetooth TXD se conectează direct la intrarea serială Arduino RX.

A treia imagine este un modul L298N dual H-bridge. Modulul LM298 are un regulator de 5 volți la bord care poate fi activat de un jumper. Avem nevoie de +5 volți pentru Arduino și Bluetooth, dar dorim +12 volți pentru a conduce motorul. În acest caz, aplicăm +12 volți la intrarea „+ 12V putere” a L298N și vom lăsa jumperul „5V activate” la locul său. Acest lucru permite regulatorului de 5 volți să iasă la conexiunea „+5 putere” de pe modul. Conectați-l la Arduino și Bluetooth. Nu uitați să conectați firele de masă pentru intrarea +12 și ieșirea +5 la modulul „power GND”.

Vrem ca tensiunea de ieșire a motorului să varieze în funcție de PWM generat de Arduino în loc să fie doar pornit sau oprit. Pentru a face acest lucru, eliminăm jumperii din „ENA” și „ENB” și conectăm ieșirea noastră Arduino PWM la „ENA” de pe modul. Rețineți că pinul de activare real este cel mai apropiat de marginea plăcii (lângă pinii de „intrare”). Pinul din spate pentru fiecare activare este de +5 volți, așa că vrem să ne asigurăm că nu ne conectăm la aceasta.

Pinii „IN1” și „IN2” de pe modul sunt conectați la pinii Arduino respectivi. Acei pini controlează direcția motorului și, da, există un motiv bun pentru a permite Arduino să le controleze în loc să conecteze pur și simplu un comutator la modul. Vom vedea de ce în discuția despre software.

Pasul 3: Modul Bluetooth

Modul Bluetooth
Modul Bluetooth

Imaginea prezentată aici este tipică modulelor Bluetooth disponibile. Când căutați unul de cumpărat, puteți căuta cu termenii „HC-05” și HC-06”. Diferențele dintre cele două sunt în firmware și, de obicei, în numărul de pini de pe placă. Imaginea de mai sus este a unui modul HC-06 și vine cu un firmware simplificat care permite doar configurarea de bază. De asemenea, este setat ca dispozitiv Bluetooth „Slave”. În termeni simpli, aceasta înseamnă că poate răspunde numai la comenzile de pe un dispozitiv „Master” și nu poate emite comenzi pe cont propriu. Modulul HC-05 are mai multe posibilități de configurare și poate fi setat fie ca dispozitiv „Master”, fie ca „Slave”. HC-05 are de obicei șase pini în loc de doar cei patru arătați mai sus pentru HC-06. PIN-ul de stat nu este cu adevărat important, dar PIN-ul cheie (uneori poartă alte nume precum „EN”) este necesar dacă doriți să faceți orice configurație. În general, modulele nu au nevoie de nicio configurație dacă sunteți ok cu rata de transmisie implicită de 9600 și nu vă interesează să dați un nume specific modulului. Am mai multe proiecte în care le folosesc, așa că îmi place să le numesc în consecință.

Configurarea modulelor Bluetooth necesită fie să cumpărați, fie să construiți o interfață la un port serial RS-232 sau la un port USB. Nu voi acoperi cum să creez una în această postare, dar ar trebui să puteți găsi informații pe web. Sau pur și simplu cumpărați o interfață. Comenzile de configurare folosesc comenzi AT un fel ca cele folosite în vremurile de demult cu modemurile telefonice. Am atașat aici un manual de utilizare care include comenzile AT pentru fiecare tip de modul. Un lucru de remarcat este că HC-06 necesită comenzi MAJUSCULE și șirul de comenzi trebuie să se finalizeze în decurs de 1 secundă. Asta înseamnă că unele dintre șirurile mai lungi pentru lucruri precum modificarea ratelor de transmisie va trebui tăiate și lipite în programul terminal sau va trebui să configurați fișiere text pentru a le trimite. Cerința cu majuscule este numai dacă încercați să trimiteți comenzi de configurare. Modul de comunicare regulat poate accepta orice 8 biți de date.

Pasul 4: Software

Software-ul este destul de simplu atât pentru versiunea manuală, cât și pentru versiunea Bluetooth. Pentru a selecta versiunea Bluetooth, pur și simplu decomentați declarația „#define BT_Ctrl”.

Când am scris codul PIC, am experimentat cu frecvența PWM și, în cele din urmă, m-am așezat la 500 Hz. Am descoperit că, dacă frecvența era prea mare, atunci modulul LM298N nu era capabil să reacționeze suficient de rapid la impulsuri. Asta însemna că tensiunea de ieșire nu era liniară și putea face salturi mari. Arduino are încorporate comenzi PWM, dar vă permit să modificați doar ciclul de funcționare și nu frecvența. Din fericire, frecvența este de aproximativ 490-Hz, astfel încât este suficient de aproape de 500-Hz pe care le-am folosit pe PIC.

Una dintre „caracteristicile” accelerațiilor trenului este un sentiment de impuls pentru accelerație și frânare pentru a simula modul în care funcționează un tren real. Pentru a realiza acest lucru, o simplă întârziere de timp este introdusă în buclă pentru versiunea manuală a software-ului. Cu valoarea afișată, durează aproximativ 13 secunde pentru a merge de la 0 la 12 volți sau de la 12 volți înapoi la zero. Întârzierea poate fi ușor modificată pentru perioade mai lungi sau mai scurte. Singurul caz în care impulsul nu este în vigoare este atunci când comutatorul de direcție este schimbat. În scopuri de protecție, ciclul de funcționare PWM este setat imediat la 0% ori de câte ori acest comutator este schimbat. De fapt, acest lucru face ca întrerupătorul de direcție să se dubleze și ca frână de urgență.

Pentru a asigura o manipulare imediată a comutatorului de direcție, am introdus codul acestuia într-un dispozitiv de manipulare a întreruperilor. Acest lucru ne permite, de asemenea, să folosim funcția „întrerupere la schimbare”, astfel încât nu contează dacă schimbarea este de la scăzut la înalt sau de la scăzut la scăzut.

Versiunea Bluetooth a software-ului utilizează comenzi cu o singură literă pentru a iniția funcțiile Forward, Reverse, Brake și Throttle. De fapt, comenzile primite înlocuiesc comutatoarele manuale, dar provoacă aceleași răspunsuri. Aplicația pe care o folosesc pentru controlul Bluetooth este numită „Bluetooth Serial Controller” de Next Prototypes. Vă permite să configurați o tastatură virtuală și să setați propriile șiruri de comandă și nume pentru fiecare tastă. De asemenea, vă permite să setați o rată de repetare, așa că am setat butoanele de frână și accelerație la 50 ms pentru a da aproximativ 14 secunde de impuls. Am dezactivat funcția de repetare pentru butoanele Forward și Reverse.

Gata pentru această postare. Verificați celelalte instructabile ale mele. Dacă sunteți interesat de proiectele de microcontroler PIC, vizitați site-ul meu web la www.boomerrules.wordpress.com

Recomandat: