Pont H 1 : Construire un pilote de moteur en pont H sur une plaque d'essai en utilisant des transistors Darlington TIP120 et TIP125
Ce tutoriel vous guidera dans la construction d'un pilote de moteur en pont H utilisant des transistors Darlington TIP120 et TIP125 sur une plaque d'essai. Cette configuration est idéale pour contrôler la direction et la vitesse d'un moteur à courant continu, ce qui est essentiel pour divers projets de robotique et d'automatisation. À la fin de ce tutoriel, vous serez en mesure de contrôler un moteur avec des rotations à la fois dans le sens horaire et antihoraire, ainsi qu'avec une modulation de la vitesse.
Dans ce guide, nous utiliserons un Arduino pour contrôler le moteur. La configuration en H permet d'inverser la direction du moteur en contrôlant les signaux d'entrée envoyés aux transistors. C'est un aspect crucial pour de nombreuses applications, telles que les bras robotiques ou les robots mobiles qui nécessitent un contrôle précis du moteur. Pour plus de précisions, veuillez vous référer à la vidéo (dans la vidéo à 00:00).
Matériel expliqué
Les principaux composants de ce projet incluent les transistors TIP120 et TIP125, qui sont utilisés comme interrupteurs pour contrôler le fonctionnement du moteur. Le TIP120 est un transistor Darlington NPN, et le TIP125 est un transistor Darlington PNP. Ensemble, ils forment la configuration en pont en H, ce qui nous permet de contrôler la direction du courant circulant à travers le moteur.
Dans cette configuration, le signal PWM (Modulation de Largeur d'Impulsion) est utilisé pour contrôler la vitesse du moteur. Les transistors s'allument et s'éteignent rapidement pour créer une tension moyenne qui détermine la vitesse du moteur. Les broches EN activent ou désactivent les transistors, garantissant que le moteur fonctionne uniquement lorsque cela est nécessaire.
Détails de la fiche technique
| Fabricant | Texas Instruments |
|---|---|
| Numéro de pièce | TIP120 |
| Tension logique/IO | 5-15 V |
| Tension d'alimentation | 60 V |
| Courant de sortie (par canal) | 5 A |
| Courant de crête (par canal) | 30 A |
| Directives sur la fréquence PWM | 1 kHz max |
| Seuils de logique d'entrée | 2,5 V (haut), 0,8 V (bas) |
| Chute de tension / RDS(on)/ saturation | 1,2 V |
| Limites thermiques | 175 °C |
| Paquet | TO-220 |
| Remarques / variantes | Disponible en tant que TIP125 |
- Assurez un bon refroidissement pour les applications à courant élevé.
- Utilisez des signaux PWM pour contrôler efficacement la vitesse du moteur.
- Vérifiez l'orientation du transistor pour éviter d'endommager le circuit.
- Faites attention aux tensions nominales pour éviter de dépasser les limites.
- Utilisez des condensateurs de découplage pour stabiliser l'alimentation en tension.
Instructions de câblage

Pour câbler le pilote de moteur H-bridge, commencez par connecter la broche VCC du TIP120 et du TIP125 à l'alimentation 5V de votre Arduino. Connectez la broche GND à la terre. Les broches de contrôle PWM,PWM1etPWM2, doivent être connectés aux broches numériques 9 et 3 sur l'Arduino, respectivement. Les broches d'activation,EN1etEN2, se connectera aux broches numériques 8 et 2.
Ensuite, connectez les bornes de votre moteur aux broches collectrices des transistors TIP120 et TIP125. Assurez-vous que le moteur est compatible avec votre alimentation. Si vous utilisez des composants supplémentaires tels que des diodes pour la protection contre les retours de courant, placez-les en parallèle avec les bornes du moteur pour éviter d'endommager à cause de l'EMF inverse. Si vous utilisez différents modèles d'Arduino, vérifiez les correspondances des broches pour les signaux PWM et d'activation.
Exemples de code et guide étape par étape
const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;
Dans la configuration, nous définissons les broches de contrôle pour les signaux PWM et les broches d'activation. LepinModela fonction définit ces broches comme sorties pour contrôler les transistors qui entraînent le moteur.
void loop() {
Motor(CW, 50); //in CW at 50% speed
delay(5000);
stop(); // stops the motor
delay(2000);
}
Cette fonction de boucle démontre le fonctionnement du moteur. Elle fait d'abord tourner le moteur dans le sens des aiguilles d'une montre à 50 % de la vitesse pendant 5 secondes, puis s'arrête pendant 2 secondes.Motorla fonction est appelée avec des paramètres de direction et de vitesse, contrôlant le comportement du moteur en fonction de ces entrées.
void Motor(boolean direction, int speed=0) {
int speedPWM = map(speed, 0, 100, 0, 255);
if(direction) {
analogWrite(PWM1, speedPWM); // Set speed for CW
} else {
analogWrite(PWM2, speedPWM); // Set speed for CCW
}
}
LeMotorla fonction prend une direction booléenne et une vitesse entière. Elle mappe le pourcentage de vitesse à une valeur PWM et utiliseanalogWritepour définir la broche appropriée pour le contrôle du moteur. Cette fonction est cruciale pour modifier dynamiquement la direction et la vitesse du moteur.
Démonstration / À quoi s'attendre
Une fois le câblage terminé et le code téléchargé, vous devriez observer le moteur tourner dans le sens des aiguilles d'une montre à 50 % de sa vitesse pendant 5 secondes, suivi d'un arrêt. Après un délai, il tournera dans le sens inverse des aiguilles d'une montre à 80 % de sa vitesse pendant encore 5 secondes. Les pièges courants incluent un câblage incorrect et le dépassement des limites de tension, ce qui peut endommager les transistors ou le moteur.
Horodatages vidéo
- 00:00- Introduction
- 01:30- Aperçu du matériel
- 03:15- Instructions de câblage
- 05:00- Présentation du code
- 08:45- Démonstration
/*
This code is for:
Building an H-Bridge Motor driver using TIP120 and TIP125 on a breadboard and full PCB Design with Arduino
https://youtu.be/6ugrL5ziPn8
This code has been downloaded from Robojax.com
You can access the resources page and download the Gerber file to produce
the PCB or a fully assembled PCB from PCBX.com
Visit https://robojax.com/tutorial_view.php?id=392
to control a DC motor using TIP120 and TIP125 as an
H bridge
Written by Ahmad Shamshiri
26 Aug 2024
*/
const int PWM1= 9;//pin with ~
const int EN1= 8;
const int PWM2= 3;//pin with ~
const int EN2= 2;
const boolean CW =1;
const boolean CCW =0;
void Motor(boolean, int);//prototype
void brake();//prototype
void setup() {
Serial.begin(9600);
Serial.println("TIP120 H Bridge by Robojax");
pinMode(PWM1, OUTPUT);
pinMode(EN1, OUTPUT);
pinMode(PWM2, OUTPUT);
pinMode(EN2, OUTPUT);
}
void loop() {
Motor(CW, 50);//in CW at 50% speed
delay(5000);
stop();
delay(2000);
Motor(CCW, 80);//in CCW at 80% speed
delay(5000);
brake();
delay(2000);
for (int i=0; i<=100; i++)
{
Motor(CCW, i);
delay(25);
}
delay(5000);
brake();
delay(2000);
}
/*
stop()
stops the output
*/
void stop()
{
Serial.println ("=== Stop");
digitalWrite(PWM1, LOW);
digitalWrite(EN1, LOW);
digitalWrite(PWM2, LOW);
digitalWrite(EN2, LOW);
}
/*
brake()
*/
void brake()
{
Serial.println ("=== Brake");
digitalWrite(PWM1, HIGH);
digitalWrite(EN1, LOW);
digitalWrite(PWM2, HIGH);
digitalWrite(EN2, LOW);
}
void Motor(boolean direction, int speed=0)
{
int speedPWM = map(speed, 0, 100, 0, 255);
Serial.print("Speed: "); Serial.print (speedPWM);
Serial.print ("(");Serial.print (speed);Serial.print ("%)");
if(direction){
Serial.print(" dir: ");Serial.println ("CW");
analogWrite(PWM1, speedPWM);
digitalWrite(EN1, HIGH);
digitalWrite(PWM2, LOW);
digitalWrite(EN2, LOW);
}else{
Serial.print(" dir: ");Serial.println ("CCW");
digitalWrite(PWM1, LOW);
digitalWrite(EN1, LOW);
analogWrite(PWM2, speedPWM);
digitalWrite(EN2, HIGH);
}
}
Ressources et références
-
Externe
-
Externe
-
Externe
Fichiers📁
Autres fichiers
-
Fichier Gerber H-Bridge-TIP120-TIP125 pour PCBXComprend les fichiers H-Bridge-TIP120-TIP125.zip, H-Bridge-TIP120-TIP125-BOM.xls et H-Bridge-TIP120-TIP125-coor.xls pour faciliter la commande.
H-Bridge-TIP120-TIP125 Gerber file.zip0.05 MB