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);
}