Arduino Hack : Comment câbler et alimenter un servomoteur avec une carte Arduino ?
Rédigé par tesla - - Aucun commentaireAvant de parler "software" parlons "hardware" :
Le matériel présenté ci-dessous est celui qui est utilisé dans notre étabissement cependant il est possible de reproduire ce qui suit avec votre matériel personnel et n'importe quelle carte de la gamme Arduino, aussi l'utilisation d'un shield d'extension n'est pas obligatoire, elle facilite simplement les connexions et en limite les problèmes.
La carte Arduino utilisée
La carte : Arduino Mega 2560 R3 (Joy-It)
Microcontrôleur | ATmega2560 |
Tension de fonctionnement | 5V |
Tension d'entrée (recommandée) | 7-12V |
Tension d'entrée (limites) | 6-20V |
Broches d'E / S numériques | 54 (dont 15 sorties PWM) |
Broches d'entrée analogique | 16 |
Courant CC par broche d'E / S | 40 mA |
Courant CC pour broche 3,3 V | 50 mA |
Mémoire flash | 256 Ko dont 8 Ko utilisés au boot |
SRAM | 8 KB |
EEPROM | 4 Ko |
Vitesse de l'horloge | 16 MHz |
Le shield (facultatif) : Extension Mega I/O DFR0165
- Compatible avec les cartes Arduino Mega / DFRobot ADK / Arduino ADK mais aussi les copies low-cost de l'autre bout du monde...
- Broches de connexion TTL étendues pour quatre ports série
- Zone de prototypage DIP qui facilite l'ajout de puces ou de composants électroniques
- 3 emplacements Xbee (vérifiez les codes PIN sur la carte pour connaître l'orientation du module Xbee)
- 1 emplacement MicroSD
- Sélecteur d'alimentation pour choisir entre l'alimentation Arduino Mega ou l'alimentation externe
- Taille: 125 x 57 mm
Je vous conseille de protéger votre carte Arduino avec une "case" ou box, il est aussi possible d'en imprimer en 3D, de nombreux modèles sont disponibles sur Thingiverse.
Il ne reste plus qu'à enficher le shield d'extension DFROBOT sur la carte Arduino Mega JoY-IT.
Le montage
Le schéma
Explications
Le schéma standard (sans shield d'extension)
Petit rappel : Un servomoteur a besoin d'un signal PWM pour fonctionner, les cartes Arduino ont la capacité de générer de tels signaux.
Il y a 15 pins "PWM" sur notre carte Arduino.
Nous choisissons le PIN digital/numérique et PWM numéro 2 et nous le relions par un jumper (câble Dupont de prototypage rapide) au pin de signal du servomoteur. Il sagit du "fil/wire" jaune sur notre schéma.
Le pin d'alimentation positive du servomoteur est représenté par un point rouge, il doit être relié au Vin (si votre alimentation est adaptée) ou au VCC (pour assurer une tension régulée à 5V) de la carte Arduino . L'alimentation externe de la carte Arduino se faisant via le connecteur Jack.
Il nous reste un pin à câbler, il sagit du GND ou de la masse, celle-ci doit être commune.
Il faut donc relier le GND de la carte Arduino au GND ou - de l'alimentation puis relier le GND du servomoteur à celui de l'Arduino car il faut conserver un référentiel électrique commun.
Le schéma avec shield d'extension
Le schéma avec shield d'extension
Dans cette configuration on réalise la même chose, c'est à dire connecter notre servo à l'Arduino mais plus rapidement et facilement.
Il suffit de repérer le pin numérique/digital 2 sur le shield et d'y connecter directement le connecteur du servo.
Il faudra être attentif aux couleurs du câble de connexion du servo et à l'ordre des pins rapides sur le shield.
Sur le shield, le pin 2 se présente sous la forme de trois broches métalliques qui se suivent.
C'est la zone entourée en rouge :
- la broche noir du shield correspond au fil noir du servo (parfois marron comme sur notre servo ci-contre) et donc au GND.
- la broche rouge du shield correspond à l'alimentation positive du servo dont les couleurs peuvent varier en fonction du fabricant de votre servo. (Orange presque rouge dans notre cas).
- La broche verte du shield correspond au signal PWM émit qui peut-être de couleur jaune,orange clair ou blanche en fonction du fabricant de votre servo.
Puis vient la zone entourée en bleu, il faudra faire basculer le switch/interrupteur sur l'alimentation externe.
Les caractéristiques du servo utilisé
Le servomoteur MG996R
Observations
- Poids : 55 g
- Dimension : 40,7 × 19,7 × 42,9 mm
- Couple de décrochage : 9,4 kg / cm (4,8 V); 11 kg / cm (6,0 v)
- Vitesse de fonctionnement : 0,19 s / 60 degrés (4,8 v); 0.15sec / 60degree (6.0v)
- Tension de fonctionnement : 4.8 ~ 6.6v
- Type d'engrenage : Engrenage en métal
- Plage de température : 0- 55deg
- Fiche servo : JR (pour JR et Futaba)
- Largeur de bande morte : 1us
- Longueur du fil servo : 32cm
- Consommation de courant au ralenti : 10mA
- Consommation de courant de fonctionnement sans charge : 170mA
- Consommation de courant de décrochage 1400mA
Un servomoteur est composé d'un moteur et même dans le cas des micro servo 9g, la consommation en courant reste importante.
Dans notre article nous utilisons un servomoteur MG996R qui a l'avantage d'avoir un couple élevé et d'un réducteur à train d'engenages métalliques cependant ce couple assez important de 10 kg.cm engendre un courant de fonctionnement débutant à 170 mA et pouvant vite monter en fonction de l'application.
La tension d'alimentation commence à 4.8V jusqu'à 6.6V.
Une carte Arduino est alimentée par un câble USB qui fournit une tension de 5V, le courant max possible sur un pin digital/numérique est de 50mA...bien loin de ce que demande un servo et il y a pire encore !
Le courant de décrochage du servo qui est de 1.4 A ! Rien que ça....Celà signifie qu'au plus fort des sollicitations, le servo tirera bien 1.40A.
L'alimentation électrique
Comme expliqué plus haut, un servo consomme trop de courant...pour l'alimentation d'origine d'une carte Arduino...
Alors il existe des possibilités mais la constante sera toujours de devoir utiliser une alimentation externe même si en réalité il est possible de faire fonctionner un servo ou micro servo 9g directement avec l'alimentation de la carte cependant il y a des risques ... comme :
- Des redémarrages/reset intempestifs de la carte car les fusibles sautent, la rotation devient saccadée.
- Communications défaillantes.
- Usure prématurée de la carte.
La tension d'entrée recommandée d'une carte Arduino Mega est de 7 à 12V, le régulateur interne abaisse ensuite la tension à une tension de fonctionnement de 5V et une autre de 3.3V.
La tension d'alimentation limite est comprise entre 6V et 20V.
Le pin Vcc délivrera une tension de 5V régulée.
Pourquoi limite ?
- 6V : le régulateur possède une chute de tension minimum de 1V. Par conséquent, en dessous de 6V de tension d’entrée, la tension de sortie sera égale à la tension d’entrée moins la chute de tension et l’Arduino sera alimenté en dessous de la tension nominale de 5V. La conséquence est un fonctionnement qui peut être très compromis.
- 20V : la carte Arduino fonctionne sous 5V, le régulateur qui reçoit la tension VIN l’abaisse pour fournir du 5V. la puissance que ce régulateur dissipe est la différence de tension entre VIN et 5V multipliée par le courant que consomme la carte et les dispositifs externes alimentés par elle. Par conséquent plus la différence de tension est élevée et plus le régulateur va chauffer. Le régulateur ayant une protection contre la surchauffe, il coupe l’alimentation si la température devient trop élevée.
Alimentation par USB autre que le port USB d'un ordinateur
Cette solution est valable pour un montage avec un servomoteur et encore je vous conseille d'éviter pour les raisons déjà mentionnées.
Le fusible de la carte coupe à 500mA, les alimentions des telephones 1A ou plus qui délivrent une tension de 5V régulée et en USB sont parfaites mais rappelez vous de cette limite de 0.5A imposée en USB.
Vos montages alimentés par le port USB de la carte seront donc limités à une consommation de 500mA.
Alimentation par connecteur Jack
Sur ces 2 cartes, il existe un connecteur Jack femelle. Il faut donc un connecteur jack mâle de 2.1mm de diamètre interne. Ce type de connecteur possède 2 fils dont le fil + est à l’intérieur et le fil - à l’extérieur. Cela se schématise de cette façon :
Sur cette entrée, une diode de protection, comme présenté dans « Les diodes classiques » évite les mauvais branchements.
Comme source, il nous faut donc une tension entre 7 et 12V continu (tension optimale). Nous pouvons utiliser plusieurs sources :
- un bloc d’alimentation AC/DC, 9V est une tension fréquente et idéale ;
- une pile 9V ;
- un ensemble de 7 piles 1.5V…
Alimentation par 2 broches de l’Arduino : VIN et GND
Dans l’hypothèse où notre transformateur ne possède pas le connecteur jack adapté, il existe cette solution.
Après avoir répéré les fils du transformateur à savoir + et –, il faut les relier à l’arduino par les deux broches nommées, à savoir :
- le + (habituellement le fil rouge) est relié à la broche VIN
- le – (habituellement le fil noir) est relié à GND, soit Ground (masse en français)
Tout comme la façon 2, la tension optimale de ce courant continu se situe entre 7 et 12V.
Dans ce contexte et afin de protéger l’arduino d’un mauvais branchement le + sur le – et le – sur le +, nous pouvons intercaler une diode qui ne laissera passer le courant que si il est dans le bon sens. Attention à bien mettre la diode qui est un composant polarisé dans le bon sens
La référence de diode est de type 1N400x.