Différences entre versions de « Adafruit Motor Shield V2-FAQ »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 85 : Ligne 85 :
  
 
Le manuel de l'utilisateur contient des informations permettant de choisir une alimentation appropriée. Veuillez vous reporter à la bonne section de ce tutoriel.
 
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" ==
 
== J'ai une bonne alimentation mais mes moteurs tressautent ou se "coupent" ==
Ligne 96 : Ligne 95 :
 
{{ADFImage|Adafruit Motor Shield V2-FAQ-01.jpg|250px}}
 
{{ADFImage|Adafruit Motor Shield V2-FAQ-01.jpg|250px}}
  
{{traduction}}
+
== 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.
== Que faire si j'ai besoin de plus de 600mA par moteur? ==
 
 
 
[http://www.ladyada.net/make/mshield/use.html Vous pouvez substituer un SN754410 (à vos propres risques) ou souder un autre L293D au dessus du premier] (cette opération s'appelle "''piggyback''" en anglais.
 
 
 
== Quels sont les broches utilisées sur le shield moteur? ==
 
 
 
'''Les 6 broches analogiques restent disponibles.''' elle peuvent aussi être utilisé comme broches digitales (pins de 14 à 19)
 
 
 
'''Les broches digitales 2 et 13 ne sont pas utilisées.'''
 
 
 
'''Les broches suivantes sont utilisées par le shield seulement si le moteur continu(DC)/pas-à-pas annoté est utilisé''':<br />
 
<nowiki>Broche digitale 11: Motor DC #1 / Moteur Pas-à-pas #1 (activation/contrôle de vitesse)
 
Broche digitale 3: Motor DC #2 / Moteur Pas-à-pas #1 (activation/contrôle de vitesse)
 
Broche digitale 5: Motor DC #3 / Moteur Pas-à-pas #2 (activation/contrôle de vitesse)
 
Broche digitale 6: Motor DC #4 / Moteur Pas-à-pas #2 (activation/contrôle de vitesse)</nowiki>
 
'''
 
Les broches suivantes sont utilisée sur n'importe quel moteur continu (DC) ou pas-à-pas est utilisé'''<br />
 
Broches digitales 4, 7, 8 et 12 sont utilisés pour contrôler les moteurs continu (DC)/pas-à-pas via le 74HC595 convertisseur série vers parallèle (serial-to-parallel latch)
 
 
 
'''Les broches suivantes sont seulement utilisé si un ou deux servos sont raccordés:'''<br />
 
Broches digitales 9: Contrôle du Servo Moteur #1
 
Broches digitales 10: Contrôle du Servo Moteur #2
 
 
 
== Quels sont les broches connectées au moteur continu (DC)/pas-à-pas? ==
 
 
 
Les moteurs continu (DC)/pas-à-pas NE SONT PAS connectés directement sur votre Arduino. Ils sont connectés sur le 74HC595 qui est piloté par votre Arduino. Vous ne pouvez pas piloter directement les moteurs, vous devez utiliser la librairies du "motor shield"
 
 
 
== Je n'y comprends rien... ==
 
 
 
[http://docs.google.com/View?docid=dgwf6cmm_2fznx7qgr Michael K à écrit une chouette revue de ce shield] (''en anglais'')
 
 
 
== Comment puis-je raccorder les broches inutilisées? ==
 
  
Les broches analogiques 0-5 (aussi connu comme broches digitales 14-19) sont disponibles (broken out) dans le coin inférieur droit du shield.
+
== 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!
  
La broche 2 est également disponible mais représente un petit "breakout" car c'est la seule broche qui n'est vraiment pas utilisée.
+
== 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.
  
Les autres broches ne sont pas "broken out" parce qu'elles peuvent être utilisées par le shield moteur. Si vous êtes certain des broches qui seront utilisés dans votre projet... vous pouvez vous y brancher/connecter en utilisant un [http://mchobby.be/PrestaShop/product.php?id_product=120 stacking header] lorsque vous assemblerez votre kit ou souder des fils sur la pastille du pinHeader, où utiliser un "[http://mchobby.be/PrestaShop/product.php?id_product=100 Wing Shield]"
+
Trouvez la ligne avec: "#define TWI_FREQ 100000L"
  
== I get the following error trying to run the example code:
+
et modifié la comme suit "#define TWI_FREQ 400000L"
"error: AFMotor.h: No such file or directory...." ==
 
  
Make sure you have installed the AFMotor library
+
{{underline|Note MCHobby:}}
  
== Comment installer une librairie? ==
+
Il est également possible de modifier la vitesse du bus I2C avec
  
Nous pouvons vous proposer notre article [[Installation d'un librairie Arduino]]<br />
+
Wire.setClock(400000)
[http://www.ladyada.net/library/arduino/libraries.html AdaFruit dispose également d'un tutoriel sur les librairies] (''AdaFruit'' en anglais).
 
  
== J'ai deux moteurs pas-à-pas que je veux faire fonctionner en même temps! ==
+
== Limites de setSpeed() à base / haute vitesse ==
J'ai deux moteurs pas-à-pas que je veux faire fonctionner en même temps... mais le code d'exemple n'en fait fonctionner qu'un seul à la fois (l'un puis l'autre). Comment puis-je faire?
+
=== 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 fonction step() de la libraire des moteurs pas-à-pas n'a pas la possibilité de faire fonctionner deux moteurs en même temps.  
+
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.  
  
Vous devrez donc combiner et imbriquer vos appels de fonctions step() pour atteindre ce résultat ('''interleave' the calls'' en anglais).  
+
Cependant, pour cette même vitesse {{fname|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é.
  
Par exemple, si vous voulez que vos deux moteurs pas-à-pas avances de 100 fois, vous devez juste écrire votre code comme suit:
+
=== Corriger ces limitations ===
 +
Il est nécessaire de corriger la bibliothèque Adafruit. Voici 2 liens utiles
 +
* https://forums.adafruit.com/viewtopic.php?f=31&t=117341&sid=19678adc72726090cdff79e3674beb6c
 +
* https://forums.adafruit.com/viewtopic.php?f=31&t=57041&p=408072
  
<nowiki>for (i=0; i<100; i++) {
+
== Bibliothèque I2C et Interruption ==
motor1.step(1, FORWARD, SINGLE);
+
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)
motor2.step(1, FORWARD, SINGLE);
 
}</nowiki>
 
  
{{ambox | text = Il n'existe pas de pilotes de moteurs pas-à-pas capable d'imbriquer les pas de façon "intelligente". Vous aurez besoin d'écrire une boucle ou utiliser le contrôle des interruptions pour atteindre un tel niveau de contrôle de vos moteurs. }}
+
Alors SACHEZ QUE CELA NE FONCTIONNERA PAS!
  
== Quel sont les moteurs suggérés? ==
+
car il n'est pas possible d'envoyer un ordre sur le bus I2C durant le traitement ISR.
Le shield Moteur (MotorShield) d'AdaFruit est capable de faire fonctionner de nombreux moteurs.
 
  
Vous pouvez trouver des moteurs:
+
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.
# Dans la section [http://mchobby.be/PrestaShop/category.php?id_category=17 "moteur et Robotique" de MCHobby].<br />
 
# Beaucoup de magasins d'électronique sont également capable de vous fournir du matériel satisfaisant.
 
# Vous pouvez également acheter des moteurs de Pololu ([http://www.pololu.com/catalog/category/23 DC Servos], [http://www.pololu.com/catalog/category/51 DC motors]) ou Jameco ([http://www.jameco.com/webapp/wcs/stores/servlet/StoreCatalogDrillDownView?langId=-1&storeId=10001&catalogId=10001&categoryName=cat_35&subCategoryName=Motors&category=3515&refine=1&jameco_page=54 all sorts]!).
 
# [http://www.ladyada.net/library/procure/hobbyist.html Cette page d'AdaFruit reprend également quelques WebShops].
 
  
 
{{Adafruit Motor Shield V2-TRAILER}}
 
{{Adafruit Motor Shield V2-TRAILER}}

Version actuelle datée du 19 juin 2018 à 21:16


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.