Motory hýbou našim bastlířským světem, a tak jste si je určitě chtěli i vy zapojit a něco rozhýbat. Na servo motory a krokové motory se ještě podíváme, ale co klasické stejnosměrné motory? Pokud jste pátrali na internetu, tak jste zjistili, že už to není s řízením jen tak a že je většinou zapotřebí nějaký ten šváb, což značně komplikuje bastlení.
Ovšem zase je tu příležitost, jak z toho vybruslit a tou je motor shield L293D, který za nás vyřeší opravdu všechny problémy. Na tento shield můžete připojit až 4 stejnosměrné motory (např. podvozek), nebo 2 krokové motory a najdeme tu místo i pro servo motory.
Je toho spousta co ukázat, tak jdeme na to!
Zapojení L293D
Jelikož se jedná o shield, tak je zapojení naprosto triviální. Shield je kompatibilní s deskama UNO a Leonardo, ale můžete ji zapojit i do Arduino Mega. Po zapojení vám na shieldu dokonce zbydou nějaké volné piny, konkrétně se jedná o piny D13, D12 a piny A0 až A5.
Zapojení stejnosměrných motorů
Obyčejný motor (bez enkodéru atd.) potřebuje dva vodiče. Oba vodiče zapojíme do modré lišty tak, aby vždy oba vodiče jednoho motoru byly v jednom chlívečku (označené jako M1 až M4). Je v podstatě jedno, v jakém pořadí je tam dáte, protože polarita má vliv pouze na směr rotace motoru, který stejně budeme určovat v programu.
Zapojení krokových motorů
Krokové motory už si s dvěma vodiči nevystačí (potřebují pět), z toho důvodu můžeme zapojit do shieldu pouze dva krokové motory. Tentokrát se motor zapojuje do celé lišty, tzn. Do M1, M2 a GND zároveň. Pro náš pokus použijeme krokový motor z e-shopu, konkrétně 28BYJ, který zapojíme podle následujícího schématu. Pokud máte krokový motor z e-shopu, tak jste k němu dostali také driver, ten nyní můžete odpojit, protože jeho funkci zastane právě náš motor shield.
Zapojení servomotorů
Servomotory mají úplně vlastní lišty, proto můžou běžet s jednou z předchozích možností současně. Každá lišta má 3 piny, na které přesně sednou piny servomotoru.
Zapojení periferie
Je zde možnost použít volné piny (ty si ovšem musíte připájet sami), které jsem již zmínil. Proto je shield skvělá volba pro různá vozítka. Ke čtyřem motorům tak můžete ještě připojit např. ultrazvukový senzor, gyroskop a spoustu dalších periferií. K tomu vám poslouží právě tento jeden shield.
Zapojení externího napájení
Taková spousta motorů a periferie už něco sežere, proto je zde možnost připojení externího napájení (až 36 V). To připojíte jednoduše díky poslední liště. Zde už na polaritě záleží, tak se pořádně podívejte na označení pinů.
Program pro stejnosměrný motor
Pro naše programy budeme potřebovat importovat knihovnu, tu najdete na konci článku v sekci "ke stažení".
Tento program bude mít za úkol roztočit jeden motor, zapojení do lišty M1. Motor bude po určité době měnit směr otáčení.
// importování knihovny #include <AFMotor.h> // motor připojíme do lišty M1 AF_DCMotor motor1(1); void setup() { // zapnutí motoru motor1.setSpeed(200); motor1.run(RELEASE); } void loop() { // motor se bude točit dopředu motor1.run(FORWARD); delay(2000); // motor se bude točit dozadu motor1.run(BACKWARD); delay(1000); }
Program pro krokový motor
Krokový motor zapojíme podle schéma, díky použité knihovně se programování o hodně ulehčí.
// importování knihovny #include <AFMotor.h> // připojení krokového motoru s 128 otáčkami, // připojíme na lištu 2 (M3, M4) AF_Stepper motor(256, 2); void setup() { // nastavíme rychlost krokového motoru motor.setSpeed(100); } void loop() { // udělej - počet kroků, směr, mód motor.step(4096, BACKWARD, SINGLE); delay(2000); // udělej - počet kroků, směr, mód motor.step(2048, FORWARD, DOUBLE); delay(1000); }
Program pro servomotor
Pro úplnost si zde uvedeme také program pro servomotor, ten zapojíme do lišty "Servo-2" tak, aby GND byla směrem z desky.
// importování knihovny #include <Servo.h> // inicializace serva Servo servo1; // definování pinu serva int const servoPin = 9; // inicializace proměnné pozice serva int pos = 0; void setup() { // servo1 je na pinu "servoPin" servo1.attach(servoPin); } void loop() { // cyklus for, servo bude měnit polohu od 0° do 180° for(pos = 0; pos <= 180; pos++) { // pohyb serva na požadovanou pozici servo1.write(pos); // musíme počkat, než se servo otočí delay(10); } }
Shrnutí pro Motor Shield L293D
V tomto návodu jste se naučili připojit a bezpečně používat Motor Shield s L293D pro DC motory, serva i krokové motory. Řešení je ideální pro začátečníky, školní kroužky i rychlé hobby prototypy, kde se cení jednoduchost a dostupné knihovny. S L293D postavíte malé robotické podvozky, posuvné mechanismy, otáčecí stolky či pan/tilt držáky a snadno je rozšíříte o senzory. Příkladem využití jsou například robotická vozítka v článku na bastlírně.