L298N Carte de Pilote de Moteur

cette carte basée sur un circuit L298N STMicroelectronics permet la vitesse et la rotation d’un moteur à courant continue, d’un moteur bipolaire:

  • 1 alimentation séparée pour les moteurs
  • 2 ponts en H pilotent chacun un moteur
  • 6 connecteurs à faible courant pour piloter les moteurs

Created with GIMP

La sortie 5V permet d’alimenter un micro controleur comme Arduino, ESP8266, Rapsberry,…


Micropython Raspberry Pi Pico + L298N + moteur bipolaire:

 

rappelons la séquence des 4 étapes d’un moteur bipolaire (CC-BY-SA):

 

soit une suite de [1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1] pour alimenter l’un après l’autre les bobines du moteur.

code micropython (instructions print permettant de suivre les phases):

http://www.crepp.org/wp-content/uploads/2022/02/L298N_bipolar_9-10-11-12-13-14-zip.zip

from machine import Pin
import utime

broches = [
    Pin(10,Pin.OUT),#IN1 
    Pin(11,Pin.OUT),#IN2 
    Pin(12,Pin.OUT),#IN3
     Pin(13,Pin.OUT),#IN4 
    ]

moteur1 = Pin(9, Pin.OUT)  # 
moteur2 = Pin(14, Pin.OUT) # 

moteur1(1)  # moteur: 1 marche, 0  arrêt
moteur2(1)  # 

full_step_sequence = [
    [1,0,0,0],
    [0,1,0,0],
    [0,0,1,0],
    [0,0,0,1]
    ]

print("suivi phases")

while True:
 for step in full_step_sequence:
   print("step= ", step, " --> ")
   for i in range(len(broches)):
     broches[i].value(step[i])
     utime.sleep(0.001)
     print("i=", i,"/",len(broches),": ", broches[i],".",i, end="")
     print(" =", step[i])

voici ce que donnent les instructions print pour suivre les phases:

( end="" évite le retour de ligne de python)
step= [1, 0, 0, 0] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 1
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 0
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 0
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 0
step= [0, 1, 0, 0] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 0
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 1
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 0
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 0
step= [0, 0, 1, 0] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 0
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 0
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 1
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 0
step= [0, 0, 0, 1] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 0
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 0
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 0
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 1
step= [1, 0, 0, 0] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 1
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 0
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 0
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 0
step= [0, 1, 0, 0] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 0
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 1
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 0
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 0
step= [0, 0, 1, 0] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 0
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 0
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 1
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 0
step= [0, 0, 0, 1] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 0
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 0
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 0
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 1
step= [1, 0, 0, 0] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 1
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 0
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 0
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 0
step= [0, 1, 0, 0] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 0
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 1
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 0
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 0
step= [0, 0, 1, 0] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 0
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 0
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 1
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 0
step= [0, 0, 0, 1] --> 
i= 0 / 4 : Pin(10, mode=OUT) . 0 = 0
i= 1 / 4 : Pin(11, mode=OUT) . 1 = 0
i= 2 / 4 : Pin(12, mode=OUT) . 2 = 0
i= 3 / 4 : Pin(13, mode=OUT) . 3 = 1

...


Arduino UNO + L298N + moteur bipolaire:

la bibliothèque Stepper.h nous simplifie la tâche.

 

Arduino IDE/exemples/stepper/stepper_OneRevolution code:

http://www.crepp.org/wp-content/uploads/2022/02/MoteurL298N_bipolaire_01-ino.zip

/*
The motor should revolve one revolution in one direction, then
 one revolution in the other direction.
 Created 11 Mar. 2007
 Modified 30 Nov. 2009
 by Tom Igoe

 */

#include <Stepper.h>
const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution

// for your motor
// initialize the stepper library on pins 8 through 11:

Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(60);
  // initialize the serial port:
  Serial.begin(9600);
}

void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}
————–
lecture recommandée pour sur les moteurs:

 

 

Section Serveur ESP12

L’archive avec la documentation et le code est ici : Serveur