Arduino kód pre L9110 duálny modul ovládača jednosmerných motorov
V tomto návode si ukážeme, ako ovládať dva jednosmerné motory pomocou modulu L9110 s dvoma motorovými ovládačmi a Arduinom. Tento projekt vám umožní riadiť smer a rýchlosť každého motora, čo umožňuje všestranné aplikácie, ako je robotika a automatizácia. Na konci tejto príručky budete jasne rozumieť, ako zapojiť komponenty a napísať kód potrebný na plynulý chod vašich motorov. Ak potrebujete objasnenie, určite si pozrite video (vo videu o 00:00).
Vysvetlenie hardvéru
Modul L9110 s dvoma motorovými ovládačmi pre jednosmerné motory vám umožňuje ovládať dva motory súčasne. Obsahuje dva H-moskové obvody, ktoré vám umožňujú obrátiť polaritu napätia motora. To znamená, že môžete ľahko zmeniť smer každého motora prepínaním riadiacich pinov. Modul má štyri kľúčové piny: dva pre každý motor na riadenie smeru otáčania. Keď nastavíte jeden pin na vysokú úroveň a druhý na nízku, motor sa otáča jedným smerom; obrátenie stavov pinov spôsobí otáčanie opačným smerom. Táto flexibilita je nevyhnutná pre aplikácie, ako je robotika, kde potrebujete presné riadenie pohybov motora.Podrobnosti z datasheetu
| Výrobca | STMicroelectronics |
|---|---|
| Označenie súčiastky | L9110 |
| Logické/IO napätie | 2,5–5,5 V |
| Napájacie napätie | 2,5–12 V |
| Výstupný prúd (na kanál) | 1 A |
| Špičkový prúd (na kanál) | 2 A |
| Odporúčaná frekvencia PWM | 10 kHz |
| Logické prahové hodnoty vstupu | 0,8 V (nízka), 2,0 V (vysoká) |
| Pokles napätia / RDS(on) / saturácia | 0,3 V pri 1 A |
| Tepelné limity | 150 °C |
| Puzdro | DIP-16 |
| Poznámky / varianty | Bežne používané v malých robotických projektoch. |
- Zabezpečte správne chladenie pre nepretržitú prevádzku.
- Udržujte PWM signály pod 10 kHz pre optimálny výkon.
- Použite oddeľovacie kondenzátory blízko napájacích pripojení na minimalizáciu šumu.
- Pozor na obrátenú polaritu pripojení; môže poškodiť modul.
- Vždy kontrolujte menovité prúdové limity, aby ste predišli prehriatiu.
Pokyny na zapojenie
Na zapojenie modulu L9110 s dvoma motorovými ovládačmi pre jednosmerné motory s Arduinom začnite pripojením napájacích pinov. Pripojte pin VCC na L9110 k 5V výstupu na Arduine a pin GND pripojte k jednému z uzemňovacích pinov Arduina. Ďalej pre motor A pripojte pin A1A k digitálnemu pinu 2 na Arduine a pin A1B k digitálnemu pinu 3. Potom pre motor B pripojte pin B1A k digitálnemu pinu 8 a pin B1B k digitálnemu pinu 9. Uistite sa, že motory sú správne pripojené k ich príslušným výstupom na module L9110.
Príklady kódu a vysvetlenie
Vo funkcii setup musíme definovať riadiace piny ako výstupy. To je nevyhnutné, aby Arduino mohlo efektívne riadiť smery motorov:void setup() {
pinMode(B1A,OUTPUT);// definovať pin ako výstup
pinMode(B1B,OUTPUT);
pinMode(A1A,OUTPUT);
pinMode(A1B,OUTPUT);
delay(3000);
}
Tento úryvok kódu nastaví riadiace piny motorov, čím zabezpečí, že Arduino môže posielať signály do modulu L9110.
Hlavná slučka programu riadi motory volaním funkcií `motorA` a `motorB` s rôznymi parametrami na zmenu smerov:
void loop() {
motorA('R');// Otočiť motor A DOPRAVA
delay(2000);
motorA('L');// Otočiť motor A DOĽAVA
delay(2000);
motorA('O');// Vypnúť motor A
delay(2000);
...
}
V tomto úryvku sa motory otáčajú doprava a doľava, s oneskoreniami medzi tým, aby ste mohli pozorovať zmeny smeru.
Funkcia `motorA` je definovaná na riadenie motora A na základe zadaného smeru:
void motorA(char d) {
if(d =='R'){
digitalWrite(A1A,LOW);
digitalWrite(A1B,HIGH);
} else if (d =='L'){
digitalWrite(A1A,HIGH);
digitalWrite(A1B,LOW);
} else {
digitalWrite(A1A,LOW);
digitalWrite(A1B,LOW);
}
}
Táto funkcia skontroluje zadaný smer a podľa toho nastaví riadiace piny na otáčanie motora v požadovanom smere alebo jeho vypnutie.
Demonštrácia / Čo očakávať
Keď spustíte kód, mali by ste vidieť, ako sa motory striedavo otáčajú doľava a doprava. Oneskorenia vám umožňujú jasne pozorovať zmeny smeru. Buďte opatrní na bežné chyby, ako sú obrátené pripojenia, ktoré môžu viesť k neočakávanému správaniu alebo poškodeniu komponentov. Okrem toho sa uistite, že vaše napájanie je dostatočné pre motory, ktoré používate (vo videu o 00:00).
Ak kód nie je viditeľný, zobrazte si túto stránku v angličtine. Ospravedlňujeme sa za nepríjemnosti.
107-Arduino code for an L9110 dual DC motor controller module
Jazyk: C++
/*
* Display number on a seven-segment display with Arduino
* Written by Ahmad Shamshiri for Robojax.com
Date modified: Jun 11, 2018 at 17:20 in Ajax, Ontario, Canada
Watch video instructions for this code: https://youtu.be/-g6Q9lSHDzg
Code is provided for free AS IS without warranty.
You can share this code as long as you keep the above note intact.
*/
const int A1A = 2;//define pin 2 for A1A
const int A1B = 3;//define pin 3 for A1B
const int B1A = 8;//define pin 8 for B1A
const int B1B = 9;//define pin 9 for B1B
void setup() {
pinMode(B1A,OUTPUT);// define pin as output
pinMode(B1B,OUTPUT);
pinMode(A1A,OUTPUT);
pinMode(A1B,OUTPUT);
delay(3000);
}
void loop() {
motorA('R');// Turn motor A to RIGHT
delay(2000);
motorA('L');// Turn motor A to LEFT
delay(2000);
motorA('O');// Turn motor A OFF
delay(2000);
motorB('R');// Turn motor B to RIGHT
delay(2000);
motorB('L');// Turn motor B to LEFT
delay(2000);
motorB('O');// Turn motor B OFF
delay(2000);
motorA('R');// Turn motor A to RIGHT
motorB('R'); // Turn motor A to RIGHT
delay(2000);
motorA('L');// Turn motor A to LEFT
motorB('L');// Turn motor B to LEFT
delay(3000);
motorA('O');// Turn motor A OFF
motorB('O');// Turn motor B OFF
delay(5000);
}
/*
* @motorA
* Activation rotation of motor A
* d is the direction
* R = Right
* L = Left
*/
void motorA(char d)
{
if(d =='R'){
digitalWrite(A1A,LOW);
digitalWrite(A1B,HIGH);
}else if (d =='L'){
digitalWrite(A1A,HIGH);
digitalWrite(A1B,LOW);
}else{
//Robojax.com L9110 Motor Tutorial
// Turn motor OFF
digitalWrite(A1A,LOW);
digitalWrite(A1B,LOW);
}
}// motorA end
/*
* @motorB
* Activation rotation of motor B
* d is the direction
* R = Right
* L = Left
*/
void motorB(char d)
{
if(d =='R'){
digitalWrite(B1A,LOW);
digitalWrite(B1B,HIGH);
}else if(d =='L'){
digitalWrite(B1A,HIGH);
digitalWrite(B1B,LOW);
}else{
//Robojax.com L9110 Motor Tutorial
// Turn motor OFF
digitalWrite(B1A,LOW);
digitalWrite(B1B,LOW);
}
}// motorB end
Veci, ktoré by ste mohli potrebovať
-
Amazon
-
eBay
-
AliExpressPurchase L9110 motor driver from AliExpress-2s.click.aliexpress.com
Zdroje a referencie
Zatiaľ žiadne zdroje.
Súbory📁
Datasheet (pdf)
-
L9110 Motor driver module datasheetL9110 motor driver module datasheet covering pinout, specifications, and application circuit for driving DC motors.
robojax_L9110_datasheet.pdf0.20 MB
Súbor Fritzing
-
L9110 H-bridge Motor driver module
L9110 H-bridge module.fzpz0.04 MB