Différences entre versions de « Rasp-Hat-Moteur-Moteurs-Continus »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 20 : Ligne 20 :
  
 
== Contrôle de moteurs continus ==
 
== Contrôle de moteurs continus ==
Here's a walkthru of the code which shows you everything the MotorHAT library can do and how to do it.
+
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>
  
The MotorHAT library contains a few different classes, one is the MotorHAT class itself which is the main PWM controller. You'll always need to create an object, and set the address. By default the address is 0x60 (see the stacking HAT page on why you may want to change the address)
+
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">
# create a default object, no changes to I2C address or frequency
+
# 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>
  
The PWM driver is 'free running' - that means that even if the python code or Pi linux kernel crashes, the PWM driver will still continue to work. This is good because it lets the Pi focus on linuxy things while the PWM driver does its PWMy things. '''But it means that the motors DO NOT STOP when the python code quits'''
+
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).
  
'''For that reason, we strongly recommend this 'at exit' code''' when using DC motors, it will do its best to shut down all the motors.
+
'''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">
# recommended for auto-disabling motors on shutdown!
+
# 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


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.

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.

Rasp-Hat-Moteur-Moteurs-Continus-00.jpg
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