Arduino код за L9110 двоен DC мотор контролер модул
Во ова упатство, ќе истражиме како да контролираме два DC мотори користејќи го L9110 модулот за двоен контролер на мотори со Arduino. Овој проект ќе ви овозможи да управувате со насоката и брзината на секој мотор, овозможувајќи разновидни апликации како роботика и автоматизација. До крајот на овој водич, ќе имате јасно разбирање за тоа како да ги поврзете компонентите и да го напишете кодот потребен за непречено работење на вашите мотори. Ако ви треба појаснување, задолжително проверете го видеото (во видеото на 00:00).
Објаснување на хардверот
L9110 модулот за двоен контролер на DC мотори ви овозможува да контролирате два мотори истовремено. Тој содржи две H-мост кола, кои ви овозможуваат да ја промените поларитетот на напонот на моторот. Ова значи дека можете лесно да ја промените насоката на секој мотор со префрлање на контролните пинови. Модулот има четири клучни пина: два за секој мотор за контрола на насоката на ротација. Кога ќе поставите еден пин на високо ниво, а другиот на ниско, моторот се врти во една насока; менувањето на состојбите на пиновите ќе го направи да се врти во спротивна насока. Оваа флексибилност е од суштинско значење за апликации како роботика, каде што ви треба прецизна контрола над движењата на моторот.Детали од техничката документација
| Производител | STMicroelectronics |
|---|---|
| Број на дел | L9110 |
| Логички/IO напон | 2,5–5,5 V |
| Напон на напојување | 2,5–12 V |
| Излезна струја (по канал) | 1 A |
| Врвна струја (по канал) | 2 A |
| Насоки за PWM фреквенција | 10 kHz |
| Прагови на влезна логика | 0,8 V (ниско), 2,0 V (високо) |
| Пад на напон / RDS(on) / заситување | 0,3 V при 1 A |
| Термички граници | 150 °C |
| Пакет | DIP-16 |
| Белешки / варијанти | Најчесто се користи во мали роботски проекти. |
- Обезбедете соодветно ладење за континуирана работа.
- Чувајте ги PWM сигналите под 10 kHz за оптимални перформанси.
- Користете раздвојни кондензатори блиску до приклучоците за напојување за да го минимизирате шумот.
- Внимавајте на обратна поларитетна врска; тие можат да го оштетат модулот.
- Секогаш проверувајте ги номиналните граници на струја за да избегнете прегревање.
Инструкции за поврзување
За да го поврзете L9110 модулот за двоен контролер на DC мотори со Arduino, започнете со поврзување на пиновите за напојување. Поврзете го VCC пинот на L9110 со 5V излезот на Arduino, и поврзете го GND пинот со еден од земјените пинови на Arduino. Следно, за мотор A, поврзете го A1A пинот со дигитален пин 2 на Arduino и A1B пинот со дигитален пин 3. Потоа, за мотор B, поврзете го B1A пинот со дигитален пин 8 и B1B пинот со дигитален пин 9. Осигурете се дека моторите се правилно поврзани со нивните соодветни излези на L9110 модулот.
Примери на код и објаснување
Во функцијата setup, треба да ги дефинираме контролните пинови како излези. Ова е од суштинско значење за Arduino да ги контролира насоките на моторите ефективно:void setup() {
pinMode(B1A,OUTPUT);// дефинирај пин како излез
pinMode(B1B,OUTPUT);
pinMode(A1A,OUTPUT);
pinMode(A1B,OUTPUT);
delay(3000);
}
Овој дел од кодот ги поставува контролните пинови на моторите, осигурувајќи дека Arduino може да испраќа сигнали до L9110 модулот.
Главната јамка на програмата ги контролира моторите со повикување на функциите `motorA` и `motorB` со различни параметри за промена на насоките:
void loop() {
motorA('R');// Сврти мотор A на ДЕСНО
delay(2000);
motorA('L');// Сврти мотор A на ЛЕВО
delay(2000);
motorA('O');// Исклучи мотор A
delay(2000);
...
}
Во овој извадок, моторите се прават да се вртат десно и лево, со паузи помеѓу за да се забележат промените во насоката.
Функцијата `motorA` е дефинирана за контрола на мотор A врз основа на влезната насока:
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);
}
}
Оваа функција ја проверува дадената насока и ги поставува контролните пинови соодветно за да го ротира моторот во саканата насока или да го исклучи.
Демонстрација / Што да очекувате
Кога ќе го стартувате кодот, треба да видите како моторите се менуваат помеѓу леви и десни ротации. Паузите ви овозможуваат јасно да ги забележите промените во насоката. Бидете внимателни на вообичаени грешки како обратни врски, кои можат да доведат до неочекувано однесување или оштетување на компонентите. Дополнително, осигурете се дека вашето напојување е соодветно за моторите што ги користите (во видеото на 00:00).
107-Arduino code for an L9110 dual DC motor controller module
Јазик: 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
Работи што можеби ќе ви требаат
-
Amazon
-
eBay
-
AliExpressPurchase L9110 motor driver from AliExpress-2s.click.aliexpress.com
Ресурси и референци
Сè уште нема ресурси.
Датотеки📁
Технички лист (pdf)
-
L9110 модул за драјвер на мотор технички листL9110 модул за драјвер на мотор технички лист кој ги покрива распоредот на пиновите, спецификациите и апликативното коло за управување со DC мотори.
robojax_L9110_datasheet.pdf0.20 MB
Fritzing датотека
-
L9110 H-мост мотор драјвер модул
L9110 H-bridge module.fzpz0.04 MB