Luka Code

Code ya Arduino mpo ya module ya contrôleur ya moteur DC double L9110

Code ya Arduino mpo ya module ya contrôleur ya moteur DC double L9110

Na boyekoli oyo, tokotalela ndenge ya kokamba ba moteur ya DC mibale na kosalela module ya contrôleur ya moteur mibale L9110 na Arduino. Projet oyo ekopesa yo nzela ya kokamba direction mpe vitesse ya moteur na moto na moto, mpo na kosalela yango na ba applications ndenge na ndenge lokola robotique mpe automatisation. Na suka ya boyekoli oyo, okomona polele ndenge ya kosangisa ba composants mpe kokoma code oyo esengeli mpo na kotambwisa ba moteur na yo na ndenge ya malamu. Soki osengeli na ndimbola, tala video (na video na 00:00).

Explication ya Hardware

Module ya contrôleur ya moteur mibale L9110 ekoki kokamba ba moteur mibale na mbala moko. Ezali na ba circuits ya H-bridge mibale, oyo epesaka yo nzela ya kobalola polarité ya tension ya moteur. Boye okoki kobongola direction ya moteur na moto na moto na kosalela ba pins ya contrôle. Module ezali na ba pins minei ya ntina: mibale mpo na moteur na moto na moto mpo na kokamba direction ya rotation. Soki okotia pin moko na likolo mpe mosusu na se, moteur ekobaluka na direction moko; kobalola ba états ya ba pins ekosalisa yango ebaluka na direction oyo ekeseni. Flexibilité oyo ezali na ntina mingi mpo na ba applications lokola robotique, epai osengeli na contrôle ya malamu ya ba mouvements ya moteur.

Détails ya Datasheet

FabricantSTMicroelectronics
Numéro ya partieL9110
Tension ya logique/IO2.5–5.5 V
Tension ya alimentation2.5–12 V
Courant ya sortie (na canal)1 A
Courant ya pointe (na canal)2 A
Directive ya fréquence PWM10 kHz
Seuils ya logique ya entrée0.8 V (se), 2.0 V (likolo)
Chute ya tension / RDS(on) / saturation0.3 V na 1 A
Limites thermiques150 °C
PackageDIP-16
Notes / variantesEsalelamaka mingi na ba projets ya robotique ya mike.

  • Kokanola ete esengeli kosalela heat-sinking mpo na fonctionnement ya libela.
  • Kokanola ete ba signaux PWM ezala na se ya 10 kHz mpo na performance ya malamu.
  • Salela ba condensateurs ya découplage pembeni ya ba connexions ya puissance mpo na kokitisa bruit.
  • Keba na ba connexions ya polarité oyo ebalolami; ekoki kosala module ebeba.
  • Tangela ntango nyonso ba limites ya courant oyo epesamaki mpo na kokitisa échauffement.

Instructions ya câblage

Mpo na kosangisa module ya contrôleur ya moteur mibale L9110 na Arduino, banda na kosangisa ba pins ya puissance. Singa pin ya VCC na L9110 na sortie ya 5V na Arduino, mpe singa pin ya GND na moko ya ba pins ya terre ya Arduino. Na sima, mpo na moteur A, singa pin ya A1A na pin ya digitale 2 na Arduino mpe pin ya A1B na pin ya digitale 3. Na sima, mpo na moteur B, singa pin ya B1A na pin ya digitale 8 mpe pin ya B1B na pin ya digitale 9. Kanola ete ba moteur esengeli kosangisama malamu na ba sorties na bango na module ya L9110.
Arduino-wirign-for-L9110-motor-driver

Ba exemples ya code mpe explication

Na fonction ya setup, tosengeli kopesa ba pins ya contrôle lokola ba sorties. Oyo ezali na ntina mingi mpo na Arduino mpo na kokamba ba directions ya moteur na ndenge ya malamu:
void setup() {
  pinMode(B1A,OUTPUT);// définir pin lokola sortie
  pinMode(B1B,OUTPUT);
  
  pinMode(A1A,OUTPUT);
  pinMode(A1B,OUTPUT);    
  delay(3000);
}
Code oyo etiyaka ba pins ya contrôle ya moteur, mpo na kopesa Arduino nzela ya kotinda ba signaux na module ya L9110. Boucle principale ya programme ekambaka ba moteur na kobenga ba fonctions `motorA` mpe `motorB` na ba paramètres ndenge na ndenge mpo na kobongola ba directions:
void loop() {
  motorA('R');// Balola moteur A na droite
  delay(2000);
  motorA('L');// Balola moteur A na gauche
  delay(2000);   
  motorA('O');// Zimisa moteur A
  delay(2000); 
  ...
}
Na eteni oyo, ba moteur esalaka ebaluka na droite mpe na gauche, na ba délais kati na kati mpo na kotala ba changements ya direction. Fonction `motorA` esalemaki mpo na kokamba moteur A kolanda direction oyo epesamaki:
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);    
  }
}
Fonction oyo etalaka direction oyo epesamaki mpe etiyaka ba pins ya contrôle na ndenge oyo esengeli mpo na kobongola moteur na direction oyo elingami to mpo na kozimisa yango.

Démonstration / Nini okomona

Soki okotambwisa code, okomona ba moteur ezali kobaluka na mbala na mbala kati na gauche mpe droite. Ba délais epesaka yo nzela ya kotala polele ba changements ya direction. Keba na ba pièges ya mbala mingi lokola ba connexions oyo ebalolami, oyo ekoki komemela ba comportements oyo esengeli te to kobebisa ba composants. Na lisusu, kanola ete alimentation na yo ezali ya kokoka mpo na ba moteur oyo ozali kosalela (na video na 00:00).

Images

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
Langue: 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

Mokili na bisika

Pas encore de ressources.

Fichiers📁

Fiche technique (pdf)

  • L9110 Motor driver module datasheet
    L9110 motor driver module datasheet covering pinout, specifications, and application circuit for driving DC motors.
    robojax_L9110_datasheet.pdf 0.20 MB

Fritzing File