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
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):
https://www.breizh56.fr/crepp2024/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:
https://www.breizh56.fr/crepp2024/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);
}
Section Serveur ESP12
L’archive avec la documentation et le code est ici : Serveur



