À la fin du TP, l’étudiant doit être capable de :
- Identifier le comportement d’un moteur à courant continu à aimants permanents.
- Commander un moteur en PWM avec un pont en H.
- Observer les signaux de commande et de puissance à l’oscilloscope.
- Comparer une commande par L298N et par Sabertooth.
- Envoyer des commandes moteur depuis ROS2.
Par groupe :
- 1 moteur DC à aimants permanents
- 1 driver L298N - 2A par pont
- 1 driver "surprise"
- 1 driver Sabertooth - 2x12A
- 1 alimentation continue réglable
- 1 Arduino / ESP32 / Raspberry Pi selon votre architecture
- 1 oscilloscope
- 1 multimètre
- 1 VM ROS2
- câbles Dupont, fils moteur, résistances éventuelles
Partie 1 :
- Que se passe-t-il si on augmente la tension moyenne appliquée au moteur ?
- Pourquoi utilise-t-on une PWM au lieu d’une tension continue variable ?
- Quel est le rôle d’un pont en H ?
- Pourquoi faut-il faire attention au courant de démarrage ?
Partie 2 : L298N
- Commander le moteur à 25 %, 50 %, 75 %, 100 % de PWM.
- Observer la variation de vitesse.
- Mesurer la tension moyenne aux bornes du moteur pour les 4 rapports cycliques.
- Mesurer la tension d'alimentation de L298, mesurer la tension de sortie du L298N pour ∝ = 100% et constater la chute de tension.
- Observez les signaux sur l’entrée ENA (signal PWM de commande) à l’oscilloscope pour les 4 rapports cycliques et donnez les valeurs suivantes : fréquence PWM, rapport cyclique α, tension haute, tension basse.
Rappel : Le rapport cyclique: ∝= TH/T
- Observez la tension aux bornes du moteur et observez la forme hachée de la tension, les pics de commutation, le bruit dû au moteur, l’influence du rapport cyclique.
- La tension moteur est-elle sinusoïdale ?
- Pourquoi voit-on des parasites ?
- Pourquoi la tension moyenne augmente avec le rapport cyclique ?
- Que peut-on ajouter pour réduire les parasites ?
Quelques parties de réponses : condensateur antiparasite, diode de roue libre ou structure interne du pont, câblage court, masse propre, alimentation correctement découplée.
Remarque importante : le L298N est ancien et peu efficace, car il utilise des transistors bipolaires. Il provoque une chute de tension importante et chauffe rapidement.
- Mesure du courant moteur : Selon le matériel disponible (mesure avec pince de courant, ou résistance shunt faible valeur, ou mesure indirecte par l’alimentation)
Complétez ce tableau
|
PWM |
Courant à vide |
Courant au démarrage |
Observation |
|---|---|---|---|
|
25 % |
|||
|
50 % |
|||
|
75 % |
|||
|
100 % |
- Pourquoi le courant est-il plus élevé au démarrage ?
Quelques parties de réponses : Au démarrage, la vitesse est nulle, donc la force contre-électromotrice E=Ke.Ω est presque nulle. Le courant est donc principalement limité par la résistance du moteur
Partie 2 : driver "surprise"
- Identifiez le driver
- Commander le moteur à 25 %, 50 %, 75 %, 100 % de PWM.
- Observer la variation de vitesse.
- Mesurer la tension moyenne aux bornes du moteur pour les 4 rapports cycliques.
- Mesurer la tension de sortie du L298N et constater la chute de tension pour les 4 rapports cycliques.
- Observez les signaux sur l’entrée ENA (signal PWM de commande) à l’oscilloscope pour les 4 rapports cycliques et donnez les valeurs suivantes : fréquence PWM, rapport cyclique α, tension haute, tension basse.
Rappel : Le rapport cyclique: ∝= TH/T
Partie 3 : La sabertooth
Le Sabertooth est plus adapté à la commande de moteurs DC de puissance que le L298N.
Modes possibles :
- commande analogique,
- commande PWM / RC,
- commande série simplifiée,
- commande série packetized.
Pour le TP, le plus simple est d’utiliser une commande série simplifiée ou une commande PWM selon votre configuration.
- Commander le même moteur avec le Sabertooth. (4 rapports cycliques différents)
- Refaire une mesure de tension moteur.
- Comparer l’échauffement.
- Comparer la stabilité de la commande.
- Comparer le comportement au démarrage.
Questions :
- Pourquoi le Sabertooth est-il préférable pour un robot mobile ?
- Pourquoi le L298N reste-t-il intéressant pédagogiquement ?
- Quelle solution choisiriez-vous pour un robot autonome ?
Partie 4 : Commande ROS2
ROS2 cmd_moteur → node Python ou C++ → liaison série USB → ArduinoESP32 → L298 ou sabertooth → moteur DS
Nom du topic : /cmd_moteur
Type simple : std_msgs/msg/Int16
|
Valeur |
Effet |
|---|---|
|
0 |
arrêt |
|
100 |
vitesse max sens avant |
|
-100 |
vitesse max sens arrière |
|
50 |
demi-vitesse avant |
|
-50 |
demi-vitesse arrière |
Exemples de commandes manuelles :
ros2 topic pub /cmd_motor std_msgs/msg/Int16 "{data: 50}"
ros2 topic pub /cmd_motor std_msgs/msg/Int16 "{data: 0}"
ros2 topic pub /cmd_motor std_msgs/msg/Int16 "{data: -50}"
- Créer un package ROS2.
- Créer un nœud motor_controller.
- S’abonner au topic /cmd_motor.
- Envoyer la valeur reçue à la carte Arduino ou ESP32.
- Vérifier la commande du moteur.
- Tester les valeurs : -100, -50, 0, 50, 100.
Compte-rendu à rendre avant le 5 juin 2026 ici