Modifications

Sauter à la navigation Sauter à la recherche
1 270 octets ajoutés ,  3 septembre 2017 à 13:05
aucun résumé de modification
Ligne 1 : Ligne 1 :  
{{Rasp-Hat-Moteur-NAV}}
 
{{Rasp-Hat-Moteur-NAV}}
   −
{{traduction}}
   
== Utiliser des moteurs pas-à-pas ==
 
== Utiliser des moteurs pas-à-pas ==
 
Les moteurs pas-à-pas sont vraiment géniaux pour un contrôle (semi-)précis. Ils sont parfait pour de nombreux robots, projets CNC et impression 3D. Ce HAT supporte jusqu'à 2 moteurs pas-à-pas. La bibliothèque Python fonctionne de manière identique pour les moteurs unipolaires et les moteurs bipolaires.
 
Les moteurs pas-à-pas sont vraiment géniaux pour un contrôle (semi-)précis. Ils sont parfait pour de nombreux robots, projets CNC et impression 3D. Ce HAT supporte jusqu'à 2 moteurs pas-à-pas. La bibliothèque Python fonctionne de manière identique pour les moteurs unipolaires et les moteurs bipolaires.
Ligne 91 : Ligne 90 :     
== Les pas ==
 
== Les pas ==
{{traduction}}
  −
   
Les moteurs pas-à-pas diffèrent des moteurs continu en ce sens que le contrôleur (dans ce cas, le Raspberry Pi) doit activer chacune des 4 bobines dans le bon ordre pour que moteur tourne. En alternant l'activation des bobines, le moteur pas-à-pas tournera tout au long du stator. Si les bobines sont activées dans l'ordre opposé alors le moteur tournera dans le sens inverse.
 
Les moteurs pas-à-pas diffèrent des moteurs continu en ce sens que le contrôleur (dans ce cas, le Raspberry Pi) doit activer chacune des 4 bobines dans le bon ordre pour que moteur tourne. En alternant l'activation des bobines, le moteur pas-à-pas tournera tout au long du stator. Si les bobines sont activées dans l'ordre opposé alors le moteur tournera dans le sens inverse.
   Ligne 103 : Ligne 100 :  
# '''Double pas''' - dit "''Double Steps''" en anglais. Il est également très simple à mettre en oeuvre, excepté qu'à la place d'une seule bobine, il utilise deux bobines en une fois. Par exemple, à la place de la seule bobine #1 activée, nous aurons les bobines #1 et #2 activées en même temps. Cela utilise plus de puissance (environ 2x plus) mais offrira un mouvement plus "puissant" (d'environ 25%)
 
# '''Double pas''' - dit "''Double Steps''" en anglais. Il est également très simple à mettre en oeuvre, excepté qu'à la place d'une seule bobine, il utilise deux bobines en une fois. Par exemple, à la place de la seule bobine #1 activée, nous aurons les bobines #1 et #2 activées en même temps. Cela utilise plus de puissance (environ 2x plus) mais offrira un mouvement plus "puissant" (d'environ 25%)
 
# '''Pas entrelacés''' - dit "''Interleaved Steps''". C'est un mélange de fonctionnement en pas simple et en pas double où nous utilison les pas simples entrelacés avec les douvle. Il propose un peu plus de couple que le ''simple pas'' en consomme environ 50% de puissance en plus. L'avantage de cette approche est que le moteur apparaît comme ayant 2x plus de pas pour une transition plus fluide entre les pas.
 
# '''Pas entrelacés''' - dit "''Interleaved Steps''". C'est un mélange de fonctionnement en pas simple et en pas double où nous utilison les pas simples entrelacés avec les douvle. Il propose un peu plus de couple que le ''simple pas'' en consomme environ 50% de puissance en plus. L'avantage de cette approche est que le moteur apparaît comme ayant 2x plus de pas pour une transition plus fluide entre les pas.
# '''Microstepping''' - Le micro pas-à-pas this is where we use a mix of single stepping with PWM to slowly transition between steps. It's slower than single stepping but has much higher precision. We recommend 8 microstepping which multiplies the # of steps your stepper motor has by 8.
+
# '''Microstepping''' - Le micro pas-à-pas est un mélange de simple pas avec un signal PWM permettant de faire une transition plus file entre les pas (avoir des Micro Pas). C'est plus lent que du pas simple mais cela permet d'atteindre une précision nettement plus importante en multipliant par 8 le nombre de pas du moteur. Le micro-stepping permet, dans ce cas, de réduire l'avance au 1/8 de pas. Cela signifie qu'une révolution complète d'un moteur 200 pas nécessitera donc 8x200 = 1600 pas en mode "micro-stepping".
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
 
while (True):
 
while (True):
print("Single coil steps")
+
print("Pas simple / Single coil steps")
 
myStepper.step(100, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.SINGLE)
 
myStepper.step(100, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.SINGLE)
 
myStepper.step(100, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.SINGLE)
 
myStepper.step(100, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.SINGLE)
print("Double coil steps")
+
print("Double pas / Double coil steps")
 
myStepper.step(100, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.DOUBLE)
 
myStepper.step(100, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.DOUBLE)
 
myStepper.step(100, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.DOUBLE)
 
myStepper.step(100, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.DOUBLE)
print("Interleaved coil steps")
+
print("Pas entrelacés / Interleaved coil steps")
 
myStepper.step(100, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.INTERLEAVE)
 
myStepper.step(100, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.INTERLEAVE)
 
myStepper.step(100, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.INTERLEAVE)
 
myStepper.step(100, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.INTERLEAVE)
print("Microsteps")
+
print("MicroStepping / Microsteps")
 
myStepper.step(100, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.MICROSTEP)
 
myStepper.step(100, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.MICROSTEP)
 
myStepper.step(100, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.MICROSTEP)
 
myStepper.step(100, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.MICROSTEP)
Ligne 122 : Ligne 119 :     
== step() - fonction bloquante ==
 
== step() - fonction bloquante ==
As you can see above, you can step mulitple steps at a time with '''step()'''
+
Comme vous pouvez le voir ci-dessus, vous pouvez faire des avances de plusieurs pas en une fois à l'aide de la fonction '''step()'''
   −
  step(number_de_pas, direction, type)
+
  step(numbre_de_pas, direction, type)
   −
Where ''nombre_de_pas'' is the number of steps to take, ''direction'' is either FORWARD or BACKWARD and ''type'' is SINGLE, DOUBLE, INTERLEAVE or MICROSTEP
+
Où :
 +
* '''nombre_de_pas''' est le nombre de pas à faire
 +
* '''direction''' indique le sens de rotation (FORWARD pour avant et BACKWARD pour l'arrière).
 +
* '''type''' est le type de pas SINGLE (''simple''), DOUBLE (''double''), INTERLEAVE (''entrelacé'') ou MICROSTEP (''micro-stepping'').
   −
{{ambox|text=Note that INTERLEAVE will move half the distance of SINGLE or DOUBLE because there are twice as many steps. And MICROSTEP will move 1/8 the distance because each microstep counts as a step!}}
+
{{ambox|text=Le type de pas entrelacé (''INTERLEAVE'') tournera l'axe de la moitié du type simple ou double pas (''SINGLE'' ou ''DOUBLE'') parce qu'il y a deux fois plus de pas en mode entrelacé. Le type de pas MICROSTEP tournera l'axe du 1/8 de rotation par rapport au pas simple ou double parce que chaque micro-pas compte pour un pas et qu'il y en a 8x plus!}}
   −
This is the easiest way to move your stepper but is '''blocking''' - that means that the Python program is completely busy moving the motor. If you have two motors and you call these two procedures in a row:
+
Cette approche est l'approche la plus simple mais elle est également '''bloquante''' - cela signifie que le programme Python reste occupé pendant toute la phase de déplacement du moteur. Si vous avez deux moteurs et faites les appels suivants:
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Ligne 137 : Ligne 137 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
Then the first stepper will move 100 steps, stop, and then the second stepper will start moving.
+
Alors le premier moteur se déplacera de 100 pas puis stopper. Ensuite seulement, le second moteur pas-à-pas entamera sa révolution de 100 pas.
   −
Chances are you'd like to have your motors moving at once!
+
Cette approche est intéressante si votre projet s'accommode qu'un seul moteur puisse fonctionner à fois!
   −
For that, you'll need to take advantage of Python's ability to multitask with threads which you can see in '''DualStepperTest.py'''
+
Si vous désirez faire fonctionner plusieurs moteurs pas-à-pas en même temps, il est possible d'exploiter le support multitâche de Python. L'exemple '''DualStepperTest.py''' exploite le support multitâche et utilise des threads pour faire fonctionner les deux moteurs en même temps.
   −
The key part of the DualStepperTest example code is that we define a function that will act as a 'wrapper' for the {{fname|step()}} procedure:
+
La partie importante de l'exemple '''DualStepperTest'''  est la définition d'une fonction qui agit comme un ''wrapper'' (surcouche) pour la fonction {{fname|step()}}:
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
 
       def stepper_worker(stepper, numsteps, direction, style):
 
       def stepper_worker(stepper, numsteps, direction, style):
#print("Steppin!")
+
#print("Faire des pas!")
 
stepper.step(numsteps, direction, style)
 
stepper.step(numsteps, direction, style)
#print("Done")
+
#print("Fait")
 
</syntaxhighlight>
 
</syntaxhighlight>
   −
We have some commented-out print statements in case you want to do some debugging.
+
Il y a quelques instructions d'affichage (''print'') pour le cas où vous voudriez faire du débogage.
   −
Then, whenever you want to make the first stepper move, you can call:
+
Ensuite, lorsque vous voulez faire tourner le premier moteur pas-à-pas, vous pouvez appeler:
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Ligne 161 : Ligne 161 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
Which will spin up a background thread to move Stepper1 and will return immediately. You can then do the same with the second stepper:
+
Ce qui crée une tâche d'arrière plan (un ''thread'') pour faire tourner ''Stepper1'' et rend immédiatement la main au programme principal.  
 +
 
 +
Vous pouvez faire de même avec le second moteur pas-à-pas avec la ligne suivante:
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Ligne 168 : Ligne 170 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
You can tell when the stepper is done moving because the stepper thread you created will 'die' - test it with '''st2.isAlive()''' or '''st2.isAlive()''' - if you get '''True''' that means the stepper is still moving.
+
Il est possible de savoir lorsque le moteur pas-à-pas à terminé sa rotation parce que le ''thread'' créé sera 'mort'. Il est possible de tester les thread avec '''st1.isAlive()''' (ou '''st2.isAlive()'''). Si vous obtenez la valeur '''True''' cela signifie que le moteur tourne (puisque le ''thread'' est toujours en cours d'exécution).
    
== oneStep() - fonction non bloquante ==
 
== oneStep() - fonction non bloquante ==
OK lets say you want a lot of control over your steppers, you can use the one {{fname|oneStep(direction, stepstyle)}} which will make a single step in the style you request, with no delay. This will let you step exactly when you like, for the most control
+
Si vous désirez avoir beaucoup plus de contrôle sur vos moteurs pas-à-pas, vous pouvez utiliser la fonction {{fname|oneStep(direction, type_de_pas)}} qui exécute l'avance d'un simple pas sans délai. Cela permettra à votre programme d'exécuter des avances d'un pas {{underline|exactement}} au moment souhaité.
    
{{Rasp-Hat-Moteur-TRAILER}}
 
{{Rasp-Hat-Moteur-TRAILER}}
29 917

modifications

Menu de navigation