Gyakorlati programozás arduino

Itt az ideje, hogy Arduino motorokat fusson :)

Ehhez használja a legnépszerűbb vezérlőt a motor vezérléséhez - az L293D chipet.







Az L293D két meghajtót tartalmaz kis teljesítményű motorok vezérléséhez. Két bemenettel rendelkezik a vezérlőjelekhez és két pár kimenettel az elektromos motorok csatlakoztatásához. Ezenkívül az L293D két bemenettel rendelkezik, amelyek lehetővé teszik az egyes meghajtók engedélyezését. Ezek a bemenetek az elektromos motorok forgási sebességének szabályozására szolgálnak PWM használatával.

Nézzük az L293D blokkdiagramot, adatlapot (számozás a SO-esethez):

Gyakorlati programozás arduino

Az OUTPUT1 és az OUTPUT2 kimenetekhez a MOTOR1 villamos motor (a DIP-tok esetében a 3 és 6 lábaknál található chip) csatlakoztatva van.
Ennek megfelelően a MOTOR2 az OUTPUT3 és az OUTPUT4 kimenetekhez csatlakozik (11 és 14 lábak).

Az ENABLE1 (2) -re alkalmazott jelek szabályozzák a megfelelő meghajtót (1 és 9 lábak).

Az ENABLE1 jel HIGH táplálásával (vagy egyszerűen a + 5V tápellátásának pluszával való összekapcsolása) - kapcsolja be az 1. motor vezetőjét.
Ha az INPUT1 és INPUT2 bemenetekre nincs jel, akkor a motor nem forog.
A HIGH-INPUT1 és az LOW-INPUT2 táplálásával a motort forgatni fogjuk. És ha most megváltoztatod a jeleket helyeken, és megadod a LOW jelet az INPUT1 jelzéshez, és a HIGH-INPUT2 jelet - akkor a motor az ellenkező irányba forog.

Hasonlóan a második vezetőhöz.

Gyakorlati programozás arduino

Hozam Vss (láb 16) felelős a legtöbb áramköröket, és a kimeneti Vs (láb 8) felelős a motor meghajtású - ez biztosítja a szétválasztása a hálózati chip és irányítja a motor, amely lehetővé teszi, hogy csatlakoztassa a motorok a tápfeszültség eltér a chip tápfeszültséget. Szétválasztása áramkör és motorok is szükség van, hogy csökkentsék által okozott interferencia feszültségtüskéket társított motor működését.

Négy GND érintkezőt (4, 5, 12, 13 lábakat) kell csatlakoztatni a talajhoz. Ezeken az érintkezőkben is biztosítják a hőelvezetést a chipből.

Ha az L293E chipet használja. akkor minden egyes csatorna megengedett terhelési ára 1A lesz (és a csúcsáram 2A), de külső védelmi diódákat kell használnunk, amelyeket az L293D beépített a chipbe.

Próbáljam megmagyarázni, hogy az Arduino hogyan tud megbirkózni a motorok kezelésével :)

Indítsa el Proteus-t és nyissa meg a projektet Arduino-val :)
Tegyük fel a sofőrünket - L293D

A Vss és Vs kapcsokat az akkumulátor pozitív pólusával kösse össze, csatlakoztassuk a GND vezetékeket a talajhoz, és csatlakoztassuk a 3.6 és 11.14 kapcsokat a MOTOR1 és a MOTOR2 motorokhoz.

Gyakorlati programozás arduino

Egy igazi áramkör - párhuzamosan a motor kell forrasztani a kondenzátor - segít megbirkózni az interferencia a működő motor (ez a bevett gyakorlat - szétszerelni egy olyan játék egy motor, és látni fogja, hogy a jogot, hogy a motor forrasztott kerámia kondenzátor névleges érték valahol a 0,1 uF)

És hogyan csatlakoztathatja a meghajtók bemeneteit? Először nézzük meg, hogyan működik a gyakorlatban :)
Töltsük be a MC vázlat pislogás vagy Blink_HL, és a további, amint az ábrán látható, és csatlakoztassa INPUT1 ENABLE1 digitális 13 csap csatlakozik a LED, és INPUT2 csatlakozni földre. Futtassuk a szimulációt, és látjuk, hogy a motor egy másodpercig forog, majd megáll egy pillanatra. Ie kapott motorkerékpárt :)







Tehát kiderül, hogy egy motor vezérléséhez három port szükséges (ezek közül az egyik PWM).
Ha nem kell szabályozni a motor fordulatszámát, menthet a PWM portokra (ENABLE1 és ENABLE2). Ezután egy motor kezeléséhez két portot kell használni.

Tehát határozza meg a portokat (zárójelben - a MK lábának megfelelő számát a pin-leképezésből):

Változtassuk meg projektünket a Proteus-ban:

Gyakorlati programozás arduino

És most rajzolunk egy vázlatot.

A kényelem érdekében - tároljuk a portok számát, amelyek nem a rendes típusú változókban vannak, hanem összeállítják a szerkezetüket:


Ha azonban egyszerűen deklarál egy ilyen struktúrát a vázlatkódban, például:


Akkor, amikor megpróbáljuk fordítani, kapjuk a hibát:

hiba: változó vagy mező "set_m_pins" érvénytelennek nyilvánítva A 'void setup ()' függvényben:
- Az a tény, hogy a fejléc (.h) fájlokban további adatszerkezeteket kell deklarálni.
Ie létre kell hoznia egy könyvtárfájlt és csatlakoztatnia kell a vázlathoz a #include irányelvvel

Azonban a fordító nem szereti a mutatóra vonatkozó új típusú adatokra való utalást.


Három másodpercig mindkét motor előretol, majd fél másodpercig a második motor elfordul, majd ismét előre.

Gyakorlati programozás arduino


És a vázlat így lesz:

A forgatás funkciók két paramétert tartalmaznak: a motorszám (1-2) és a fordulatszám (0-255). Ha a szám 1-2-től különbözik, akkor a forgatás közvetlenül mindkét motorra van beállítva.

Az ujjhegyemben L293E chip volt - ezért védődiódát (1N4007) kell használnia, amely két motor esetében akár 8 darabot is igényelhet :)

Gyakorlati programozás arduino

Hasonlóképpen, az L293E nem 16, hanem 20 láb:

Gyakorlati programozás arduino

A teszteléshez azonban csak egy motorra lehet egy áramkört összeállítani;)

Gyakorlati programozás arduino

Ennek megfelelően módosítania kell a vázlatot:


- Három másodpercig forgatjuk a motort, majd egy másodperccel ezelőtt.

Gyakorlati programozás arduino

Fonódik :)

Ismét találkoztam ezzel a kérdéssel.
A fenti rendszer szerint: lehetséges-e a PWM a megfelelő munkamenet-ciklus helyett az ellenállás helyett?

Ie a motor 1V-ig, a korona 9V-ot ad. A motort közvetlenül a koronából szállítjuk (és nem az 5V-tól, mint a fenti ábrán). Tehát a tranzisztort ilyen módon irányítjuk:
analóg író (motor, 28);

Megmagyarázom: 28 = 255/9 (vagyis ha a tranzisztor 255-ből buszot kapott, a kimenet 9V lenne, de 1V-ra van szükségünk).

Hogyan érinti a motor kanyargását ilyen manipulációk?

Magyarázza el az mikruh pántolását? Mi a dióda? És a fenti TB6612FNG megköti az összekötést?

Strap az L293-hoz?
Ha az L293E chipet használja, az egyes csatornákra engedélyezett terhelési áram 1A lesz (és a csúcsáram 2A), de külső védődiódákat kell használnia, amelyeket az L293D beépített a chipbe. Ie D - csak vezetékekhez (nem feltétlenül szükséges). Diódák (beépített és külső) szükségesek a motor önindukciós kibocsátásának kiküszöbölésére.
A TB6612FNG-hez hasonlóan csak csővezetékekre van szükség.

Köszönöm, Zoltberg. Már kitaláltam.

mondja meg, van egy L293C chip, a D típus nincs a boltban, C nem rendelkezik belső diódákkal, azokat a D áramkörhöz kell forrasztani az mikruhi terminálokhoz. milyen diódákra van szükség?

Itt van:

Gyakorlati programozás arduino

Diódák, például 1n4007 - nagyon jó. népszerű =)

Nagyon köszönöm a választ!

A kérdés az, hogy hogyan tudja irányítani a motort a terheléshez? Ie amikor a szervó eléri a "stop" -ot, és a terhelés felugrik, úgyhogy a tápegység automatikusan kikapcsol. A készüléket utcai körülmények között, jégen, piszokban és minden olyan helyen tervezik, amely megakadályozza a szervó mozgását, ezért szeretném megvédeni magam ettől ...

Üdvözlünk! kérlek mondd meg nekem, hogyan kell megfelelő módon kiépíteni az ARDUINO UNO és az L293D rendszert, kombinálva a motort és a LED háttérvilágítást a fényerő megváltoztatásával.

Gyakorlati programozás arduino