Le Pont en H

Introduction

Vous savez que pour faire tourner un moteur dans l’autre sens; il faut inverser la polarité du moteur.

Comment faire pour faire tourner un moteur dans un sens puis dans l’autre sans à avoir à changer le sens de la pile ou batterie ?

Fonction

Le pont en H permet de piloter un moteur dans un sens comme dans l’autre sens en fonction de la partie commande

Apparence

Il existe dans le commerce sous diverse formes

Comment ca marche

Le pont en H peut-etre réalisé grace à plusieurs solutions techniques

Relais

Interrupteurs

Transistors

Les interrupteurs

En fonction de l’état ouvert ou fermé des interrupteur, le courant traverse le moteur dans un sens ou dans l’autre

Les relais

En fonction du type de relais que vous avez il y a plusieurs possibilités de cablage et de réalisation du pont en H

Voici une proposition de câblage possible :

En fonction des états haut ou bas des commandes S, le moteur tourne dans un sens ou dans l’autre.

Rotation dans le sens 1 : S1=1 & S2=0 :

Rotation dans le sens 2 : S1=0 & S2=1:

Arrêt du moteur: S1=0 & S2=0 ou bien S1=1 & S2=1:

Les moteurs se retrouve en court-circuit dans les configurations ci-dessous. Cela permet de freiner le moteur.

Pour des moteurs avec une forte puissante, une résistance de dissipations est nécessaire.

Transistors

Exemple de montage et codage possible

Sous MicroBit

Cas 1

Cas 2

Sous Arduino

Cas 1

void setup() {
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);

digitalWrite(7, HIGH);
digitalWrite(8, HIGH);

}

void loop() {
  // Sens 1
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);

  delay(2000); // 2 seconds
  
  // Stop
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);

  delay(2000); // 2 seconds
  
  // Sens 2
  digitalWrite(7, HIGH);
  digitalWrite(8, LOW);

  delay(2000); // 2 seconds

  // Stop
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);

  delay(2000); // 2 seconds
}

Cas 2

void setup() {
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);

}

void loop() {
  analogWrite(5,100);  //vitesse lente
  digitalWrite(6,LOW);
  delay(5000);
  digitalWrite(5,LOW);
  analogWrite(6,250);  // vitesse rapide
  delay(5000);

}

Cas 3

const int avant1 = 5;
const int avant2 = 4;
const int arriere1 = 3;
const int arriere2 = 2;

void setup() 
{
 Serial.begin(9600);
 pinMode (avant1, OUTPUT);
 pinMode (avant2, OUTPUT);
 pinMode (arriere1, OUTPUT);
 pinMode (arriere2, OUTPUT);

}

void loop() 
{
   
   digitalWrite (arriere2, HIGH);  
   digitalWrite (avant1, LOW);
   digitalWrite (avant2, LOW);
   Serial.println("Reculer");
   
   delay(2000);
   
   analogWrite(avant1, vmotor);
   digitalWrite (avant2, HIGH);
   digitalWrite (arriere1, LOW);
   digitalWrite (arriere2, LOW);
   Serial.println("Avancer");
   
   delay(2000);
   
   digitalWrite (avant1, LOW);
   digitalWrite (avant2, LOW);
   digitalWrite (arriere1, LOW);
   digitalWrite (arriere2, LOW);
   Serial.println("Arreter");
   
   delay(2000);
}