Différences entre versions de « Rasp-Hat-Moteur-Moteurs-Continus »
Ligne 20 : | Ligne 20 : | ||
== Contrôle de moteurs continus == | == Contrôle de moteurs continus == | ||
− | + | Nous allons réviser le contenu du code que nous allons réviser pour vous montrer comment fonctionne la bibliothèque MotorHAT library can do and how to do it. | |
Start with importing at least these libraries: | Start with importing at least these libraries: | ||
Ligne 32 : | Ligne 32 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | La bibliothèque MotorHAT contient quelques classes dont une classe MotorHAT qui est le contrôleur PWM principal (la carte HAT moteur inclus un controleur PWM). Vous aurez toujours besoin de créer un objet et de configurer l'adresse. L'adresse par défaut est 0x60 (Voyez la [[Rasp-Hat-Moteur-Empiler-les-Hats|concernant l'empilement des HATs]] où il sera nécessaire de changer l'adresse) | |
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
− | # | + | # Créer un objet par défaut, pas de changement d'adresse I2C ou de Fréquence PWM |
mh = Adafruit_MotorHAT(addr=0x60) | mh = Adafruit_MotorHAT(addr=0x60) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Le contrôleur PWM est autonome (fonctionne seul) - cela signifie qu'il continuera à fonctionner même si votre programme Python plante (ou crash du noyau Linux). C'est une bonne chose en soit car elle permet au Raspberry-Pi de se concentrer sur la gestion de l'OS pendant que le contrôleur PWM du HAT s'occupe de gérer les signaux PWM. '''Mais cela signifie également que les moteurs NE VONT PAS S'ARRETER lorsque le programme Python s'arrête''' (sauf si cela est spécifiquement prit en compte par le programme python). | |
− | ''' | + | '''C'est pour cette raison qu'il est fortement recommandé d'utiliser une section de code {{fname|at exit}}''' lorsque des moteurs continus sont utilisés. {{fname|at exit}} fera de son mieux pour arrêter tous les moteurs. |
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
− | # | + | # Recommandé pour auro-désactiver les moteurs lors d'un arrêt programme! |
def turnOffMotors(): | def turnOffMotors(): | ||
mh.getMotor(1).run(Adafruit_MotorHAT.RELEASE) | mh.getMotor(1).run(Adafruit_MotorHAT.RELEASE) |
Version du 2 septembre 2017 à 16:20
Utiliser des moteurs à courant continu
Les moteurs continus sont utilisé pour de nombreux types de projets robotiques.
Le Hat moteur peut piloter jusque 4 moteurs continu bi-directionnel. Cela signifie que vous pouvez contrôler les moteurs en marche avant et en marche arrière. La vitesse peut également varier par incrément de 0.5% en utilisant le contrôleur PWM haute qualité du HAT moteur. Cela signifie que la vitesse peut être modifiée en douceur et que cette dernière restera stable (elle ne variera pas en fonction de la charge processeur sur le Raspberry-Pi)!
Notez que les puces des pont-H ne sont prévue pour piloter continuellement une charge dépassant 1.2A ou des moteurs ayant des pointes de courant au delà de 3A. Le HAT moteur est donc prévu pour de petits moteurs. Voyez la fiche technique de vos moteurs pour plus d'informations sur leurs caractéristiques afin de savoir s'ils peuvent être utilisés avec le HAT Moteur!
Brancher les moteurs
Pour connecter un moteur, soudez simplement deux fils sur les bornes du moteur et connectez les l'un des borniers M1, M2, M3 ou M4. Si votre moteur tourne à "l'envers", inversez simplement les connexions sur le bornier.
Le moteur est connecté sur M3 pour la démontration suivante
Rendez-vous ensuite dans le répertoire d'exemple Adafruit-Motor-HAT-Python/examples et exécutez sudo python DCTest.py pour faire tourner le moteur dans un sens puis dans l'autre.
Crédit: AdaFruit Industries www.adafruit.com
Contrôle de moteurs continus
Nous allons réviser le contenu du code que nous allons réviser pour vous montrer comment fonctionne la bibliothèque MotorHAT library can do and how to do it.
Start with importing at least these libraries:
#!/usr/bin/python
from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor
import time
import atexit
La bibliothèque MotorHAT contient quelques classes dont une classe MotorHAT qui est le contrôleur PWM principal (la carte HAT moteur inclus un controleur PWM). Vous aurez toujours besoin de créer un objet et de configurer l'adresse. L'adresse par défaut est 0x60 (Voyez la concernant l'empilement des HATs où il sera nécessaire de changer l'adresse)
# Créer un objet par défaut, pas de changement d'adresse I2C ou de Fréquence PWM
mh = Adafruit_MotorHAT(addr=0x60)
Le contrôleur PWM est autonome (fonctionne seul) - cela signifie qu'il continuera à fonctionner même si votre programme Python plante (ou crash du noyau Linux). C'est une bonne chose en soit car elle permet au Raspberry-Pi de se concentrer sur la gestion de l'OS pendant que le contrôleur PWM du HAT s'occupe de gérer les signaux PWM. Mais cela signifie également que les moteurs NE VONT PAS S'ARRETER lorsque le programme Python s'arrête (sauf si cela est spécifiquement prit en compte par le programme python).
C'est pour cette raison qu'il est fortement recommandé d'utiliser une section de code at exit lorsque des moteurs continus sont utilisés. at exit fera de son mieux pour arrêter tous les moteurs.
# Recommandé pour auro-désactiver les moteurs lors d'un arrêt programme!
def turnOffMotors():
mh.getMotor(1).run(Adafruit_MotorHAT.RELEASE)
mh.getMotor(2).run(Adafruit_MotorHAT.RELEASE)
mh.getMotor(3).run(Adafruit_MotorHAT.RELEASE)
mh.getMotor(4).run(Adafruit_MotorHAT.RELEASE)
atexit.register(turnOffMotors)
Créer un objet moteur
OK now that you have the motor HAT object, note that each HAT can control up to 4 motors. And you can have multiple HATs!
To create the actual DC motor object, you can request it from the MotorHAT object you created above with getMotor(num) with a value between 1 and 4, for the terminal number that the motor is attached to
myMotor = mh.getMotor(3)
DC motors are simple beasts, you can basically only set the speed and direction.
Fixer la vitesse du moteur
To set the speed, call setSpeed(speed) where speed varies from 0 (off) to 255 (maximum!). This is the PWM duty cycle of the motor
# set the speed to start, from 0 (off) to 255 (max speed)
myMotor.setSpeed(150)
Fixer le sens de rotation
To set the direction, call run(direction) where direction is a constant from one of the following:
- Adafruit_MotorHAT.FORWARD - DC motor spins forward
- Adafruit_MotorHAT.BACKWARD - DC motor spins forward
- Adafruit_MotorHAT.RELEASE - DC motor is 'off', not spinning but will also not hold its place.
while (True):
print "Forward! "
myMotor.run(Adafruit_MotorHAT.FORWARD)
print "\tSpeed up..."
for i in range(255):
myMotor.setSpeed(i)
time.sleep(0.01)
print "\tSlow down..."
for i in reversed(range(255)):
myMotor.setSpeed(i)
time.sleep(0.01)
print "Backward! "
myMotor.run(Adafruit_MotorHAT.BACKWARD)
print "\tSpeed up..."
for i in range(255):
myMotor.setSpeed(i)
time.sleep(0.01)
print "\tSlow down..."
for i in reversed(range(255)):
myMotor.setSpeed(i)
time.sleep(0.01)
print "Release"
myMotor.run(Adafruit_MotorHAT.RELEASE)
time.sleep(1.0)
Source: Adafruit DC and Stepper Motor HAT for Raspberry Pi
Créé par LadyAda pour AdaFruit Industries.
Traduction réalisée par Meurisse D pour MCHobby.be.
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.
Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com