Modifications

Sauter à la navigation Sauter à la recherche
1 962 octets ajoutés ,  19 juin 2018 à 21:16
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}}
   −
== But my motor already has a capacitor on it and it still doesn't work. ==
+
== Mon moteur à déjà une capacité et cela ne fonctionne pas. ==
These motors generate a lot of brush noise and usually need the full 3-capacitor treatment for adequate suppression.
+
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"
 +
 
 +
{{underline|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 {{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é.
 +
 
 +
=== 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
 +
 
 +
== 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)
   −
== Why don't you just design capacitors into the shield? ==
+
Alors SACHEZ QUE CELA NE FONCTIONNERA PAS!
They would not be effective there. The noise must be suppressed at the source or the motor leads will act like antennae and broadcast it to the rest of the system!
     −
== Why won't my stepper motor go any faster? ==
+
car il n'est pas possible d'envoyer un ordre sur le bus I2C durant le traitement ISR.
Since the shield is controlled by i2c, the maximum step rate is limited by the i2c bus speed. The default bus speed is 100KHz and can be increased to 400KHz by editing the library file in your Arduino installation folder. The file can be found in hardware/libraries/wire/utility/twi.h.
     −
Find the line with: "#define TWI_FREQ 100000L"
+
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.
and change it to "#define TWI_FREQ 400000L"
      
{{Adafruit Motor Shield V2-TRAILER}}
 
{{Adafruit Motor Shield V2-TRAILER}}
29 917

modifications

Menu de navigation