Le module L298N est une carte de développement permettant le pilotage de moteur à courant continu ou d’un moteur pas-à-pas.
Dans ce tutoriel on va voir comment commander un moteur CC par la carte ESP32 et le module L298N tout en changeant le sens de rotation.
Carte ESP32
ESP32 est une carte de développement électronique basée sur le microcontrôleur ESP32 de la société Espressif. Il s’agit d’un microcontrôleur à double cœur avec un processeur principal Xtensa LX6 et un processeur secondaire dedié au traitement du signal. La carte ESP32 est conçue pour être utilisée dans les applications IoT (Internet des objets) et comprend une variété de fonctionnalités pour faciliter la communication avec d’autres dispositifs et l’accès à Internet.
Voici quelques-unes des principales caractéristiques de la carte ESP32 :
Module L298N
Le module L298N est un module de commande de moteur bidirectionnel utilisé pour contrôler la vitesse et la direction de rotation de moteurs DC ou de moteurs à courant alternatif à faible puissance. Il est basé sur le circuit intégré L298N, qui est un contrôleur de moteur bidirectionnel double pont en H à haute tension et à haute intensité.
Le module L298N est généralement utilisé avec des microcontrôleurs ou des cartes de développement comme Arduino pour contrôler les moteurs dans les projets de robotique ou d’automatisation. Il possède deux entrées de commande pour contrôler la direction de rotation des moteurs, ainsi que deux sorties de commande pour contrôler la vitesse des moteurs. Il peut également être utilisé pour contrôler la vitesse et la direction de rotation de moteurs pas à pas.
Le module L298N est facile à utiliser et peut être alimenté avec une tension de 4,5 V à 46 V. Il est équipé de bornes de connexion pour le moteur, de bornes de connexion pour l’alimentation et de bornes de connexion pour la commande. Il est également équipé de dissipateurs thermiques pour protéger le circuit intégré L298N des surchauffes.
moteur DC de 5V
Un moteur DC de 5 volts est un moteur électrique qui fonctionne à une tension de 5 volts. Les moteurs DC sont des moteurs qui utilisent un courant continu pour fonctionner et qui peuvent être alimentés par une variété de sources, notamment des piles, des panneaux solaires et des alimentations électriques.
Les moteurs DC de 5 volts sont couramment utilisés dans les applications où une faible tension est requise, telles que les projets de bricolage et de loisir, les jouets et les appareils électroniques portables. Ils sont également souvent utilisés dans les projets de robotique et de domotique, où ils peuvent être utilisés pour contrôler les mouvements des robots et des dispositifs automatisés.
batterie de 9V
Une batterie de 9 volts est une pile qui fournit une tension de sortie de 9 volts. Elles sont souvent utilisées dans les appareils électroniques portables tels que les radiodiffuseurs, les jouets et les outils électroniques. Elles sont également couramment utilisées dans les applications de bricolage et de loisir, telles que les circuits électroniques et les projets de robotique.
Voici les programmes micropython qui permettent de tourner le moteur dans les deux sens par le module L298N.
boot.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
from machine import UART from dcmotor import DCMotor from machine import Pin, PWM from time import sleep import time frequency = 15000 pin1 = Pin(5, Pin.OUT) pin2 = Pin(4, Pin.OUT) enable = PWM(Pin(18), frequency) dc_motor = DCMotor(pin1, pin2, enable) dc_motor = DCMotor(pin1, pin2, enable, 350, 1023) while True: dc_motor.forward(100) # le moteur tourne time.sleep(1) dc_motor.stop() # stop le moteur time.sleep(1) dc_motor.backwards(100) # le moteur tourne dans le sens inverse time.sleep(1) dc_motor.stop() # stop le moteur time.sleep(1) |
DCMotor.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
class DCMotor: def __init__(self, pin1, pin2, enable_pin, min_duty=750, max_duty=1023): self.pin1=pin1 self.pin2=pin2 self.enable_pin=enable_pin self.min_duty = min_duty self.max_duty = max_duty def forward(self,speed): self.speed = speed self.enable_pin.duty(self.duty_cycle(self.speed)) self.pin1.value(1) self.pin2.value(0) def backwards(self, speed): self.speed = speed self.enable_pin.duty(self.duty_cycle(self.speed)) self.pin1.value(0) self.pin2.value(1) def stop(self): self.enable_pin.duty(0) self.pin1.value(0) self.pin2.value(0) def duty_cycle(self, speed): if self.speed <= 0 or self.speed > 100: duty_cycle = 0 else: duty_cycle = int(self.min_duty + (self.max_duty - self.min_duty)*((self.speed-1)/(100-1))) return duty_cycle |
Gertie 07-10-2222
Thiis page certainly haas aall the information annd facts I wsnted abouut this subect and didn't knoow whho tto ask.
Jayme 04-10-2222
Hello, itss pleassant piecfe of writimg on the topc oof mesdia print, we all kniw mewdia iis a fantasric souyrce of facts. Alsoo viisit my web sote - jiu
Jean Marie 25-09-2222
Bonjour, je me suis fabriqué un système de rotation et d élévation pour panneau solaire. La rotation se fait sur un rail avec un moteur 24v en 5 rpm et l élévation avec un vérin en 12v. Actuellement, je commande l'ensemble avec une carte Sonoff 4CHPROR3 wifi routines horaires via application. Ça fonctionne, mais je souhaiterai remplacer ce boîtier par une carte électronique capable de gérer l azimut. En effet, pour éviter les ombres portées, je ne veux pas de suiveur solaire mais définir moi même les moments de rotation en fonction d'un azimut défini. Exemple: 25 septembre à 8h57 panneau azimut 90°, elevetion 45, même jour à 10h18, aimit 135, élévation 35° .. Ect. Les calculs sont déjà fait via Excel, en revanche je ne sais quelles cartes(esp32, gyroscope mpu5060...) prendre et encore moins les monter. Pouvez-vous me conseiller s'il vous plaît. Merci d'avance et merci pour ces tutos qui enseignent beaucoup à des ignards en électronique comme moi. Cordialement Jean-Marie