Adafruit Motor Shield V2-FAQ

De MCHobby - Wiki
Aller à : navigation, rechercher

MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Combien de moteur puis-je utiliser avec ce shield?

Vous pouvez utiliser deux servo moteurs DC fonctionnant sous 5V
ET
jusqu'à 4 moteurs continu ou 2 moteurs pas (ou 1 moteur pas-à-pas et jusqu'à 2 moteurs continu) fonctionnant en 5 - 12V

Puis-je brancher plus de moteurs?

OUI, en empilant les shield! Chaque shield que vous empilez permet d'ajouter 4 moteurs continu ou 2 moteurs pas-à-pas (ou 1 moteur pas-à-pas et 2 moteurs continu).

Par contre, vous n'aurez pas droit à des servo moteurs supplémentaires puis que les servos utilisent les broches #9 et #10 de votre Arduino.

Comment ajouter plus de servos

Si vous désirez ajouter plus de servo moteurs, nous vous suggérons de d'opter pour un contrôleur PWM/Servo supplémentaire fonctionnant également sur le bus I2C (et donc capable de fonctionner avec ce shield). Un tel produit permet d'ajouter 16 servo-moteurs.

Quel Arduino est compatible avec ce shield

Ce shield à été testé avec succès par Adafruit sur les Arduino suivants: Duemilanove, Diecimila, Uno (toutes les révisions), Leonardo, Mega/ADK R3.

Il peut fonctionner avec un Mega R2 (et version antérieur) si vous souder des fils depuis les broches SDA du shield vers la broche digitale #20 et la broche SCL vers la broche digitale #21 (attention à ne pas placer de pinHeader sur les broches SDA et SCL de votre shield)

N'as pas été testé avec succès sur une Arduino DUE pour le moment (La bibliothèque Wire est toujours en cours de conception)

Erreur "Adafruit_MotorShield.h: No such file"

J'ai l'erreur "error: Adafruit_MotorShield.h: No such file or directory...." lorsque j'essaye de compiler un exemple.

Assurez vous d'avoir correctement installé la librairie/bibliothèque Adafruit_MotorShield

Comment installer la librairie?

Voyez notre page Installer logiciel pour savoir comment installer la librairie du Motor Shield

A L'AIDE! Mon moteur ne fonctionne pas!

Est-ce que la LED est allumée? Les moteurs pas-à-pas et les moteurs continu ne fonctionneront absolument pas si la LED n'est pas allumée.

Ne vous embêtez pas modifier votre code ou a modifier le câblage moteur... si la LED ne s'allume alors rien ne fonctionnera.

A L'AIDE! Mon moteur ne fonctionne pas... mais les servos fonctionnement

Est-ce que la LED est allumée? Les moteurs pas-à-pas et les moteurs continu ne fonctionneront absolument pas si la LED n'est pas allumée.

Ne vous embêtez pas modifier votre code ou a modifier le câblage moteur... si la LED ne s'allume alors rien ne fonctionnera.

Vous devez connecter une alimentation 5-12V continu sur le shield par l'intermédiaire du bornier d'alimentation (POWER) ou via la prise d'alimentation de votre Arduino ou via le cavalier VIN.

A quoi sert la LED verte?

La LED indique que l'alimentation des moteurs continu/pas-à-pas est fonctionnelle. Si elle n'est pas éclairée fortement alors les moteurs continu et pas-à-pas ne fonctionneront pas. Les connecteur des servo moteurs sont alimentés en 5V et n'utilisent pas l'alimentation continue réservé aux autres moteurs.

Quels sont les broches utilisées/libres?

Le shield utilise les broches du bus I2C SDA et SCL pour contrôler les moteurs continus et les moteurs pas-à-pas. Sur un Arduino Uno il s'agit des broches A4 et A5. Sur un méga, elles sont ddisponibles sur les broches digitales 20 et 21. Sur un Léonardo, elle sont disponible sur les broches digitales 2 et 3.

Sur ces Arduinos, n'utilisez pas ces broches pour autre chose que des senseurs/pilotes I2C.

Puisque ce shield utilise I2C pour communiquer, vous pouvez connecter d'autres senseurs I2C ou périphériques I2C sur les broches SDA/SCL pour autant qu'elles n'utilisent pas l'adresse 0x60 (l'adresse par défaut du Shield Moteur)

Si vous utiliser les connecteurs servo moteur, ces derniers sont branchés sur les broches #9 et #10. Si vous utilisez les connecteurs servo moteurs, alors ces deux broches ne sont pas libre.

Toutes les autres broches de votre Arduino sont librement utilisable.

Comment puis-je utiliser les broches libres?

Toutes les broches sont reportées (break-out) le long de la bordure du shield (avec un empattement de 2.54mm pour faciliter la pose de stacking Header, Header normal, etc.

Mon arduino se comporte bizarrement lorsque les moteurs tournent!

Mon shield Moteur serait-il défectueux/détruit?

Les moteurs consomme beaucoup d'énergie et peuvent causer des pertes de tension, ce qui reset votre Arduino. C'est pour cette raison que le shield est conçu de façon à pouvoir séparer les alimentations - une pour l'électronique et l'autre pour les moteurs.

Utiliser deux sources d'alimentation permet de prévenir les chutes de tension sur l'électronique de commande. Vous pouvez obtenir plus d'information à se sujet en lisant la section du tutoriel dédicacé à la sélection des alimentations.

J'essaye de faire un robot et il ne fonctionne pas avec une pile de 9v...

Vous ne pouvez pas alimenter des moteurs à partir d'une pile 9V. Vous devez utiliser des piles de type AA ou une batterie plomb/Acide pour alimenter vos moteurs.

Ce shield peut-il contrôler des petits moteurs 3V?

Pas vraiment, le shield est conçu pour des moteur plus "gros" de 5V et +.

Il ne fonctionne pas avec des moteurs 3V à moins de les sur-alimenter en 5V mais, dans ce cas, ils s'useront aussi plus vite.

A quoi sert le connecteur d'alimentation sur le shield? Comment alimenter les moteurs?

Le manuel de l'utilisateur contient des informations permettant de choisir une alimentation appropriée. Veuillez vous reporter à la bonne section de ce tutoriel.

J'ai une bonne alimentation mais mes moteurs tressautent ou se "coupent"

Essayez de souder une capacité céramique (ou disque) de 0.1µF entre les pattes du moteur (sur le moteur lui-même!). Cela réduira le bruit électrique qui peut être renvoyé dans le circuit électrique (Merci à macegr!)

J'utilise une plateforme 4WD robot et je n'arrive pas à la faire fonctionner

Les moteurs utilisé sur les plateformes 4WD robot de certains distributeurs produisent beaucoup de bruit/parasite. Ces parasites sont renvoyés dans la circuiterie Arduino et provoque des exécutions de commande erronée et des instabilités. Ce problèmme peut être résolu en soudant 3 capacités de réduction de bruit. 1 entre les bornes du moteur et une depuis chaque borne vers l'armature du moteur.

Adafruit Motor Shield V2-FAQ-01.jpg
Crédit: AdaFruit Industries www.adafruit.com

Mon moteur à déjà une capacité et cela ne fonctionne pas.

Ces moteurs génèrent beaucoup de parasites (brush noise) et nécessite généralement l'usage de 3 capacités pour un traitement et suppression adéquate des parasites.

Pourquoi ne pas placer les capacités sur shield?

Parce qu'elles ne seraient pas efficace à cet emplacement. Le bruit/parasite doit être éliminé à la source sinon les fils de raccordement du moteur vont agir comme des antennes et propager les parasites sur le reste du système!

Pourquoi mes moteurs pas-à-pas ne vont pas plus vite?

Puisque le moteur est contrôlé par I2C, le débit maximum des pas est limité par la vitesse du bus I2C. Par défaut, la vitesse du bus est de 100KHz et peut être augmenté à 400KHz en édtant un fichier de la bibliothèque/librairie d'Arduino. Le fichier se trouve à l'emplacement hardware/libraries/wire/utility/twi.h.

Trouvez la ligne avec: "#define TWI_FREQ 100000L"

et modifié la comme suit "#define TWI_FREQ 400000L"

Note MCHobby:

Il est également possible de modifier la vitesse du bus I2C avec

Wire.setClock(400000)

Limites de setSpeed() à base / haute vitesse

A basse vitesse

Le délai entre les pas est réalisé par delayMicroseconds() qui ne fonctionne pas pour un argument >16283.

A haute vitesse

A haute vitesse, le calcul du délai entre deux pas ne tient pas compte du délai d'exécution du pas (envoi de la commande par I2C+temps d'établissement du courant dans les bobinages). Or, dans un test de réalisé par Mr Pierre M., Ce délai à été étalonné à 1250µs.

La succession des pas ne peut donc pas dépasser 1/1250µs=800pas/s (donc 4tour/s sur un moteur 200 pas ou encore 240tour/min). Ce qui est honorable pour une application hobbyiste.

Cependant, pour cette même vitesse setSpeed() calcule précisément 1250µs de délai entre deux pas... auquel vient s'ajouter les 1250µs de transfert et activation des bobines... donc la vitesse chute de moitié.

Corriger ces limitations

Il est nécessaire de corriger la bibliothèque Adafruit. Voici 2 liens utiles

Bibliothèque I2C et Interruption

Si vous ajoutez un interrupteur de fin de course activant une interruption en vue d'arrêter le moteur (avec myMotor->release() depuis la routine ISR)

Alors SACHEZ QUE CELA NE FONCTIONNERA PAS!

car il n'est pas possible d'envoyer un ordre sur le bus I2C durant le traitement ISR.

La seule solution est de modifier une variable globale depuis l'ISR... et d'attendre que la routine principale, lisant cette même variable globale, arrête le moteur.


Source: Adafruit Motor Shield V2 for Arduino créé par LadyAda pour AdaFruit Industries. Crédit [www.adafruit.com AdaFruit Industries]

Traduit par Meurisse D. pour MCHobby.be

Nos remerciements à Mr Pierre M. pour ses suggestions de correction.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.