Modifications

Sauter à la navigation Sauter à la recherche
14 734 octets ajoutés ,  23 mars 2014 à 22:37
Ligne 26 : Ligne 26 :  
ET dans l'autre sens Q1 et Q4 sont commutés.
 
ET dans l'autre sens Q1 et Q4 sont commutés.
   −
[[Fichier:pont_h in action 1.jpg|120px]]
+
[[Fichier:pont_h in action 2.jpg|120px]]
   −
Bien évidemment, Q3 et Q1 ne peuvent jamais être commutés en même temps (tout comme Q4 et Q2) car cela provoque un court-circuit franc, qui qui détruirait probablement le pont-H, voir le module de régulation de l'alimentation.
+
'''Attention au court-circuit !'''
 +
 
 +
Bien évidemment, ni Q3 et Q1, ni Q4 et Q2 ne peuvent jamais être commutés en même temps car cela provoque un court-circuit franc, qui qui détruirait probablement le pont-H, voir le module de régulation de l'alimentation.
 +
 
 +
=== Diodes anti-retour ===
 +
 
 +
Comme déjà précisé, un pont-H est constitué de transistors (symbolisés par des interrupteurs dans nos schémas de principe).
 +
 
 +
En règle générale, lorsque l'on utilise des relais ou moteurs avec un transistor, il faut protéger le transistor à avec une diode anti-retour.
 +
 
 +
La diode à pour but de renvoyer à la masse les surtensions induites par les effets transitoires (lors du déclenchement du bobinage d'un relais... ou bobinage du moteur).<br />
 +
Sans cette diode anti-retour (aussi dite "en roue libre"), le transistor ne survit pas bien longtemps.
 +
 
 +
Un pont-H étant constitué de transistor et un moteur étant le siège d'effets transitoire, les différents transistors doivent être protégés à l'aide de diode. Le schéma ci-dessous indique comment ces diodes sont placées sur le pont-H.
 +
 
 +
[[Fichier:Pont_En_H-diode.jpg|200px]]
 +
 
 +
=== L293D et Diodes anti-retour ===
 +
Cet article se focalise sur le pont-H L293D.<br />
 +
'''Le L293D à la particularité de déjà contenir les diodes anti-retour'''.
 +
 
 +
Disposer des diodes à même le L293D est un avantage indéniable pour démarrer rapidement un projet.<br />
 +
Faite cependant attention, tous les Pont-H n'en sont pas équipés (ex: le L298)
 +
 
 +
== Les pont-H et ses sources d'alimentation ==
 +
A la base, un circuit pont-H est conçu pour pouvoir dissocier la logique de commande (basse tension) du circuit de puissance.
 +
 
 +
Un pont-H dispose donc de deux source d'alimentations:
 +
# Une source d'alimentation pour la logique du circuit. Elle est nommée '''VSS''' et nécessite généralement 5 Volts.
 +
# Une source d'alimentation pour les moteurs. Elle est nommée '''VS''' et tolère des tensions nettement plus élevée que VSS (logique de commande).
 +
 
 +
La masse est commune aux deux circuits.
 +
Lorsque deux sources de tension sont utilisées il faut raccorder ensemble la masse (GND) d'Arduino et celle de l'alimentation externe.
 +
Les masses doivent être commune entre les alimentations (d'Arduino et du Pont-H).
 +
 
 +
Cette double source d'alimentation permet, par exemple, de commander des moteurs 12 Volts (VS=12v) à partir d'un Arduino (Logique de commande=VSS=+5v Arduino).
 +
 
 +
Cela ne présente pas seulement un avantage pour des tensions différentes, cela permet aussi de décharger le régulateur de tension du microcontroleur de l'alimentation des moteurs.
 +
 
 +
=== Un exemple à ne pas suivre ===
 +
Vous disposez de deux moteurs de 200mA sous 5 Volts que vous voulez utiliser avec votre Arduino.
 +
De prime abord, cela ne semble pas présenter de problème car Arduino dispose justement d'un régulateur de tension à 5 volts.
 +
En théorie, il serait donc possible de commander le pont-H et d'alimenter les moteurs directement depuis la broche +5v d'Arduino.
 +
 
 +
'''Le problème:''' le régulateur d'Arduino ne débit pas plus de 250mA. Comme les deux moteurs consomme chacun 200mA (soit 400mA en tout), il y a de forte chance que le régulateur de tension d'Arduino rende l'âme assez rapidement.
 +
 
 +
'''La solution:''' utiliser une source d'alimentation 5 Volts séparée raccordée sur la broche VS (alimentation moteur du pont-H). Cette source de tension doit être capable de fournir le courant nécessaire aux moteurs.
 +
 
 +
=== Peak Load ===
 +
Justement, concernant le courant à fournir aux moteurs, il convient que celui-ci ne dépasse pas le maximum toléré par le pont-H.
 +
 
 +
Qui dit courant dit dissipation de chaleur. Comme tout composant électronique, le Pont-H choisit à un pouvoir de dissipation limité.
 +
 
 +
Si le courant est trop important, le pont-H chauffera de trop et rendra l'âme.
 +
 
 +
Pour vous aider dans votre démarche, les fiches technique des moteurs reprennent souvent une caractéristique nommée "peak load" (courant de pointe).
 +
Ce courant correspond à la charge maximale supportée par le moteur.
 +
 
 +
== Présentation du L293D ==
 +
Le L293D est un double pont-H, ce qui signifie qu'il est possible de l'utiliser pour commander quatre moteurs distincts (dans un seul sens) grâce à ses 4 canaux.<br />
 +
En raccordant les sorties de façon appropriées, il est possible de constituer deux pont-h. Il est ainsi possible de commande deux moteurs distincts, dans les deux sens et indépendamment l'un de l'autre.
 +
 
 +
Même si cette documentation n'utilise qu'un seul des deux pont-H pour la commande du moteur, il vous sera facile de faire le nécessaire pour commander un deuxième moteur tout aussi simplement.<br />
 +
 
 +
“Le L293D un circuit intégré monolitique, à haut voltage, grand courant et 4 canaux.”
 +
Cela veut dire que ce circuit intégré peut être utilisé pour des moteurs DC alimentés jusqu'à 36 Volts (ce sont déjà des jolis petits moteurs). Le circuit peut fournir un maximum de 600mA par canal.
 +
Le L293D est aussi connu pour être un excellent Pont-H facile à mettre en pratique.
 +
 
 +
Avec deux signaux de commande Input 1 et Input 2 fournit par Arduino (nous laissons volontairement Enable de côté pour le moment), il est possible d'inverser la direction du courant dans le pont-H et donc renverser le sens de rotation du moteur qui y est raccordé.<br />
 +
En utilisant différentes combinaisons de Input 1 et input 2 il devient possible de démarrer, Stopper ou Inverser le courant.
 +
 
 +
=== Brochage ===
 +
Ci-dessous la configuration des broches du L293D et la table de la logique de commande.
 +
 
 +
[[Fichier:L293-pinning.jpg|250px]]
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
| align="center" | Broche
 +
| align="center" | Nom
 +
| align="center" | Description
 +
|- style="font-size: 90%"
 +
| align="left" | 1
 +
| align="left" | Enable&nbsp;1
 +
| align="left" | permet d'envoyer (ou pas) la tension sur les sorties du moteur via OUTPUT1 & OUTPUT2.<br />
 +
ENABLE1 commande l'activation/désactivation du premier Pont-H.
 +
* Si ENABLE1 = GND, le pont-H est déconnecté et le moteur ne fonctionne pas.
 +
* Si ENABLE1 = VSS, le pont-H est connecté aux sorties et le moteur fonctionne dans un sens ou l'autre ou pas en fonction des tensions appliquée sur INPUT1 & INPUT2.
 +
|- style="font-size: 90%"
 +
| align="left" | 2
 +
| align="left" | Input&nbsp;1
 +
| align="left" | Avec Input 2, sont les broches de commande du Pont-H Output1/Output2.<br />
 +
Se raccorde a Arduino, permet de commander le sens du courant entre Output 1 et Output 2.
 +
|- style="font-size: 90%"
 +
| align="left" | 3
 +
| align="left" | Output&nbsp;1
 +
| align="left" | Avec Output 2, seront les broches à raccorder à la charge (le moteur).
 +
|- style="font-size: 90%"
 +
| align="left" | 4
 +
| align="left" | GND
 +
| align="left" | Doit être raccorder à la masse (GND) de la source d'alimentation de puissance VS (ex: la borne négative de l'accumulateur +9.2v) et à la masse de la source d'alimentation de la logique "VSS" (donc GND Arduino).<br />
 +
Si vous n'avez qu'une source d'alimentation pour le tout, c'est forcement plus simple.
 +
|- style="font-size: 90%"
 +
| align="left" | 5
 +
| align="left" | GND
 +
| align="left" |
 +
|- style="font-size: 90%"
 +
| align="left" | 6
 +
| align="left" | Output&nbsp;2
 +
| align="left" | Avec Output 1, seront les broches à raccorder à la charge (le moteur).
 +
|- style="font-size: 90%"
 +
| align="left" | 7
 +
| align="left" | Input&nbsp;2
 +
| align="left" | Avec Input 1, sont les broches de commande du Pont-H Output1/Output2.<br />
 +
Se raccorde a Arduino, permet de commander le sens du courant entre Output 1 et Output 2.
 +
|- style="font-size: 90%"
 +
| align="left" | 8
 +
| align="left" | VS
 +
| align="left" | Alimentation de puissance des moteurs.<br/>
 +
Par exemple, s'il s'agit d'une ancien véhicule téléguidé transformé, il s'agira de la borne positive de l'accumulateur (souvent +9.2v).
 +
|- style="font-size: 90%"
 +
| align="left" | 9
 +
| align="left" | Enable&nbsp;2
 +
| align="left" | Commande l'activation du second pont-H constitué de Output3/Output4
 +
|- style="font-size: 90%"
 +
| align="left" | 10
 +
| align="left" | Input&nbsp;3
 +
| align="left" | A utiliser conjointement avec Input 4 pour commander le pont-H Output3/Output4.
 +
|- style="font-size: 90%"
 +
| align="left" | 11
 +
| align="left" | Output&nbsp;3
 +
| align="left" | Constitue une des deux sorties du second pont-H (Output3/Output4)
 +
|- style="font-size: 90%"
 +
| align="left" | 12
 +
| align="left" | GND
 +
| align="left" |
 +
|- style="font-size: 90%"
 +
| align="left" | 13
 +
| align="left" | GND
 +
| align="left" |
 +
|- style="font-size: 90%"
 +
| align="left" | 14
 +
| align="left" | Output&nbsp;4
 +
| align="left" | Constitue une des deux sorties du second pont-H (Output3/Output4)
 +
|- style="font-size: 90%"
 +
| align="left" | 15
 +
| align="left" | Input&nbsp;4
 +
| align="left" | A utiliser conjointement avec Input 3 pour commander le pont-H Output3/Output4.
 +
|- style="font-size: 90%"
 +
| align="left" | 16
 +
| align="left" | VSS
 +
| align="left" | Alimentation de la logique de commande (5V).<br />A raccorder à la borne +5V d'Arduino (donc sur le régulateur d'Arduino).
 +
|}
 +
 
 +
Plus d'information dans la [http://www.st.com/stonline/books/pdf/docs/1328.pdf datasheet du L293D]
 +
 
 +
=== Caractéristiques ===
 +
{| class="wikitable" border="1"
 +
|-
 +
| align="center" | Caractéristique
 +
| align="center" | Valeur
 +
|- style="font-size: 90%"
 +
| align="left" | Nbre de pont-H
 +
| align="left" | 2
 +
|- style="font-size: 90%"
 +
| align="left" | Courant Max<br />Régime continu
 +
| align="left" | 600mA ( x2 )
 +
|- style="font-size: 90%"
 +
| align="left" | Courant de pointeMax<br />< 2ms
 +
| align="left" | 1200mA
 +
|- style="font-size: 90%"
 +
| align="left" | VS Max<br />Alim moteur
 +
| align="left" | 36v
 +
|- style="font-size: 90%"
 +
| align="left" | VSS Max<br />Alim logique
 +
| align="left" | 7v
 +
|- style="font-size: 90%"
 +
| align="left" | Nbre de Broche
 +
| align="left" | 16 DIP
 +
|- style="font-size: 90%"
 +
| align="left" | Perte de tension
 +
| align="left" | 1.3 à 1.4v (typical)
 +
|}
 +
 
 +
=== Importance des broches "Enable" ===
 +
Le premier pont-H est commandé par les broches Input 1 et Input 2 qui servent à indiquer le sens de passage du courant (donc le sens de rotation du moteur).
 +
 
 +
ENABLE 1 offre l'avantage de pouvoir moduler la vitesse du moteur en y appliquant un train d'onde PWM.<br />
 +
Il est ainsi possible de commander assez finement la vitesse d'un moteur DC avec 3 broches Arduino (sortie PWM).<br />
 +
La broche Enable 1 activera/désactivera le pont-H à la vitesse du signal PWM... et donc commandera le moteur par un train d'impulsion. 
 +
 +
'''La broche ENABLE1 est raccordée à VSS si l'on ne désire pas réguler la vitesse du moteur'''.
 +
 
 +
=== Logique de commande Input ===
 +
{| class="wikitable" border="1"
 +
| align="center" style="background:#f0f0f0;"|'''Enable 1'''
 +
| align="center" style="background:#f0f0f0;"|'''Input 1'''
 +
| align="center" style="background:#f0f0f0;"|'''Input 2'''
 +
| align="center" style="background:#f0f0f0;"|'''Fonction'''
 +
|-
 +
| High||Low||High||Tourne dans le sens horlogique
 +
|-
 +
| High||High||Low||tourne dans le sens anti-horlogique
 +
|-
 +
| High||Low||Low||Stop
 +
|-
 +
| High||High||High||Stop
 +
|-
 +
| Low||Non applicable||Non applicable||Stop
 +
|}
 +
 
 +
== Capacités de découplages ==
 +
Lorsque l'on commande des moteurs, il est préférable d'utiliser quelques capactités dans votre circuit pour réguler, autant que possible, la puissance de charge aux moteurs et ainsi de stabiliser la tension en évitant les pointes de courant.
 +
 
 +
Si votre moteur est alimenté par Arduino et qu'Arduino reboot au démarrage du moteur, c'est que l'appel de courant (du moteur) est tellement élevé qu'il fait trop chuter la tension.<br />
 +
Il y a moyen de remédier à ce problème en plaçant une capacité qui fournira le surcroît d'énergie nécessaire au démarrage du moteur.
 +
 
 +
Une capacité de 10 microFarad sur la source d'alimentation est une valeur minimale.<br />
 +
A diverse occasion, j'ai eu l'occasion d'utiliser une capacité polarisée de 33µF ou 47µF.<br />
 +
 
 +
'''Le montage présenté ci-dessous utilise d'ailleurs une capacité de 47µF'''.
 +
 
 +
=== Déparasitage moteur ===
 +
Voici une petite astuce complémentaire déjà remarquée sur différentes voitures télécommandées.<br />
 +
La direction de voiture télécommandée est généralement contrôlée à l'aide d'un simple moteur DC.<br />
 +
Ces moteurs disposent généralement de capacités de déparasitages - des capacités ceramique 220nF multi-couche devrait être bon pour de petits moteurs.
 +
 
 +
Voici le schéma d'un tel montage:
 +
[[Fichier:Deparasitage moteur.png]]
 +
 
 +
== Exemple avec Arduino ==
 +
 
 +
=== Une seule source d'alimentation ===
 +
Voici un exemple de montage utilisant un seule moteur DC de 5 Volts ({{pl|115|disponible chez MC Hobby}}), moteur également distribué dans les {{pl|11|kits Ardx}}.
 +
 
 +
Cet exemple utilise une source d'alimentation (celle d'Arduino) pour la logique de commande (VSS) et pour l'alimentation monteur (VS).
 +
 
 +
[[Fichier:L293D Montage (LowRes).JPG|450px]]
 +
 
 +
Notez le circuit-intégré et la position de la demi-lune (surlignée en blanc) servant de détrompeur.
 +
 
 +
Le montage utiliser une capacité polarisée 0.47µF pour le découplage.
 +
 
 +
[[Fichier:L293D Montage (LowRes,closer).JPG]]
 +
 
 +
=== Code Arduino ===
 +
<nowiki>
 +
int motor1Pin1 = 3;    // pin 2 (Input 1)  du L293D
 +
int motor1Pin2 = 4;    // pin 7 (Input 2) du L293D
 +
int enablePin = 9;    // pin 1 (Enable 1) du L293D
 +
 
 +
void setup() {
 +
  // set all the other pins you're using as outputs:
 +
  pinMode(motor1Pin1, OUTPUT);
 +
  pinMode(motor1Pin2, OUTPUT);
 +
  pinMode(enablePin, OUTPUT);
 +
 
 +
  // Mettre la broche Enable a high comme ca le moteur tourne
 +
  digitalWrite(enablePin, HIGH);
 +
}
 +
 
 +
void loop() {
 +
  // Le moteur tourne dans un sens
 +
  digitalWrite(motor1Pin1, LOW);  // mettre pin 2 a 293D low
 +
  digitalWrite(motor1Pin2, HIGH);  // mettre pin 7 a L293D high
 +
 +
  delay( 3000 ); // Attendre 3 secondes
 +
 
 +
  // Le moteur tourne dans l'autre sens
 +
  digitalWrite(motor1Pin1, HIGH);  // Mettre pin 2 a L293D high
 +
  digitalWrite(motor1Pin2, LOW);  // Mettre pin 7 a L293D low
 +
 
 +
  delay( 3000 ); // Attendre 3 secondes
 +
}
 +
</nowiki>
 +
 
 +
=== Deux sources d'alimentation ===
 +
Il est possible d'alimenter le moteur avec sa propre source de tension.
 +
 
 +
C'est le cas, par exemple, des moteurs en 9 ou 12 Volts.
 +
 
 +
Comme l'alimentation de la logique de commande reste en 5 Volts, nous sommes face à un cas de double source d'alimentation.
 +
 
 +
Règles de raccordement:
 +
* Les masses (GND) des sources d'alimentation doivent être raccordées ensembles.
 +
* La tension moteur (9v) est raccordée sur la broche '''VS''' (broche 8).
 +
* La tension de la logique (5v) est raccordée sur la broche '''VSS''' (broche 16).
 +
 
 +
Notes:
 +
* Faire bien attention de ne pas intervertir les broches VS et VSS par erreur.
 +
* Le programme Arduino présenté ci-dessus ne change pas.
 +
 +
[[Fichier:L293D Montage_12v(LowRes,closer).jpg]]
 +
 
 +
== Ou Acheter ==
 +
Les produits suivants sont disponibles chez MC Hobby.
 +
* Le {{pl|155|L293D}}
 +
* Le {{pl|115|Moteur DC Hobbyiste}}
 +
* Le {{pl|11|Kit ARDX}}
 +
 
 +
 
 +
{{MCH-Accord}}
29 836

modifications

Menu de navigation