Пребарување код

Arduino код за L9110 двоен DC мотор контролер модул

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 модулот.
Arduino-wirign-for-L9110-motor-driver

Примери на код и објаснување

Во функцијата 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).

Слики

L9110_motor_driver_module-1
L9110_motor_driver_module-1
L9110_motor_driver_module-12
L9110_motor_driver_module-12
L9110_motor_driver_module-3
L9110_motor_driver_module-3
Arduino-wirign-for-L9110-motor-driver
Arduino-wirign-for-L9110-motor-driver
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

Работи што можеби ќе ви требаат

Ресурси и референци

Сè уште нема ресурси.

Датотеки📁

Технички лист (pdf)

Fritzing датотека