Modifications

Sauter à la navigation Sauter à la recherche
2 800 octets ajoutés ,  4 mai 2019 à 14:08
Ligne 2 : Ligne 2 :     
== Test ==
 
== Test ==
{{bloc-etroit|text=Le programme de test ZumoL298.py (voyez plus bas) reprend les quelques fonctions de tests suivantes:}}
+
{{bloc-etroit|text=Le programme de test [http://df.mchobby.be/zumo/ZumoL298.py  ZumoL298.py] (voyez plus bas) reprend les quelques fonctions de tests suivantes:}}
    
  <nowiki> Avant()
 
  <nowiki> Avant()
Ligne 21 : Ligne 21 :     
{{#Widget:Iframe
 
{{#Widget:Iframe
|url=http://www.youtube.com/embed/L4BjPqrsYWw
+
|url=https://www.youtube.com/embed/L4BjPqrsYWw
 
|width=420
 
|width=420
 
|height=315
 
|height=315
Ligne 155 : Ligne 155 :  
def Stop():
 
def Stop():
 
""" Arret """
 
""" Arret """
print "Arret"
+
print( "Arret" )
 
Desactiver()
 
Desactiver()
 
MarcheMotorA( SENS_ARRET )
 
MarcheMotorA( SENS_ARRET )
Ligne 190 : Ligne 190 :  
Nous allons donc nous penchez sur le contenu de la fonction Avant().
 
Nous allons donc nous penchez sur le contenu de la fonction Avant().
   −
=== Une première astuce ===
+
=== Une astuce technique ===
 
Avant de nous lancer dans le décorticage du code, nous allons nous attarder sur une petite astuce dont le but est d'économiser une broche du GPIO sur le Raspberry Pi.
 
Avant de nous lancer dans le décorticage du code, nous allons nous attarder sur une petite astuce dont le but est d'économiser une broche du GPIO sur le Raspberry Pi.
   Ligne 201 : Ligne 201 :  
Nous avons délibérément choisit de commander les deux en même temps...
 
Nous avons délibérément choisit de commander les deux en même temps...
 
* soit ils sont activés et bougent tous les deux (GPIO 4=ENA=ENB='''HIGH''')  
 
* soit ils sont activés et bougent tous les deux (GPIO 4=ENA=ENB='''HIGH''')  
* soit ils sont {{underline|désactivés} et ne bougent pas (GPIO 4=ENA=ENB='''LOW''').  
+
* soit ils sont {{underline|désactivés}} et ne bougent pas (GPIO 4=ENA=ENB='''LOW''').  
    
Notez que le sens de rotation (ou non rotation) d'un moteur activé dépend aussi de la configuration IN1,IN2 - IN3,IN4.  
 
Notez que le sens de rotation (ou non rotation) d'un moteur activé dépend aussi de la configuration IN1,IN2 - IN3,IN4.  
Ligne 212 : Ligne 212 :  
* Permet de tourner sur place (ex: moteur droit en marche avant + moteur gauche en marche arrière puis activer les pont-H).<br />Pratique pour un système à chenille ;-) mais aussi fonctionnel avec un robot sur roue.
 
* Permet de tourner sur place (ex: moteur droit en marche avant + moteur gauche en marche arrière puis activer les pont-H).<br />Pratique pour un système à chenille ;-) mais aussi fonctionnel avec un robot sur roue.
 
* Permet de moduler la vitesses des deux moteurs en appliquant un signal PWM sur la broche GPIO 4.<br />Nécessite une modification de notre code d'exemple.
 
* Permet de moduler la vitesses des deux moteurs en appliquant un signal PWM sur la broche GPIO 4.<br />Nécessite une modification de notre code d'exemple.
 
+
 
 +
=== Fonction Avant() ===
 +
<nowiki>def Avant():
 +
""" Marche avant toute """
 +
print( "Marche Avant" )
 +
Desactiver()
 +
MarcheMotorA( SENS_AVANT )
 +
MarcheMotorB( SENS_AVANT )
 +
Activer()</nowiki>
 +
 
 +
La fonction Avant() effectue les tâches suivantes:
 +
# '''Desactiver()''' - Désactive les deux Pont-H (ENA=ENB=LOW), ce qui permet de modifier les signaux de commande IN1, IN2, IN3, IN4 en toute sérénité
 +
# '''MarcheMotorA( SENS_AVANT )''' - Active le sens de marche '''avant''' sur le premier moteur.
 +
# '''MarcheMotorB( SENS_AVANT )''' - Active le sens de marche '''avant''' sur le deuxième moteur.
 +
# '''Activer()''' - Réactive les pont-H (ENA=ENB=HIGH)... ce qui active la marche avant
 +
 
 +
=== Fonction MarcheMotorA( sens ) ===
 +
Le seul but de cette fonction est de configurer l'état des broches IN1 et IN2 pour contrôler le sens de rotation du premier moteur (MotorA). Il ne restera plus qu'a activer le pont-H du moteur A pour que celui-ci tourne.
 +
 
 +
Elle accepte 3 sens de rotation:
 +
* SENS_AVANT - pour la marche avant
 +
* SENS_ARRIERE - pour la marche arrière
 +
* SENS_ARRET - pour que le moteur ne bouge plus (même si le pont H est réactivé)
 +
 
 +
{{ambox|text=Voyez la section "[[Rasp-Hack-L298-FAQ|foire aux questions]]" si vous avez un moteur qui ne tourne pas dans le sens attendu ;-) }}
 +
 
 +
<nowiki>def MarcheMotorA( sens ):
 +
""" Controle le sens de Marche pour Moteur A """
 +
if( sens == SENS_AVANT ):
 +
GPIO.output( MOTORA_IN1, GPIO.HIGH )
 +
GPIO.output( MOTORA_IN2, GPIO.LOW )
 +
elif( sens == SENS_ARRIERE ):
 +
GPIO.output( MOTORA_IN1, GPIO.LOW )
 +
GPIO.output( MOTORA_IN2, GPIO.HIGH )
 +
elif( sens == SENS_ARRET ):
 +
GPIO.output( MOTORA_IN1, GPIO.LOW )
 +
GPIO.output( MOTORA_IN2, GPIO.LOW )</nowiki>
 +
 
 +
Pas bien compliqué en fin de compte.
 +
 
 +
=== Fonction Activer(), Desactiver ===
 +
Déjà mentionné plus haut, ces fonctions active et désactive les pont-H en manipulant le GPIO 4.
 +
 
 +
Le programme défini les constantes:
 +
<nowiki>MOTORA_ENABLE = 4 # GPIO 4 - Activation moteur A
 +
MOTORB_ENABLE = MOTORA_ENABLE # aussi utiliser GPIO 4 pour commander moteur B</nowiki>
 +
 
 +
A noter que les fonctions sont déjà prévue pour utiliser deux GPIO différents pour les signaux ENA et ENB du pont H, vous pourriez alors utiliser la définition suivante si vous en aviez besoin:
 +
<nowiki>MOTORA_ENABLE = 4 # GPIO 4 - Activation moteur A
 +
MOTORB_ENABLE = 22 # utiliser GPIO 22 pour commander le moteur B</nowiki>
 +
 
 +
<nowiki>def Desactiver():
 +
""" Désactivation des pont-H """
 +
GPIO.output( MOTORA_ENABLE, GPIO.LOW )
 +
if( MOTORB_ENABLE != MOTORA_ENABLE ):
 +
GPIO.output( MOTORB_ENABLE, GPIO.LOW )
 +
 
 +
def Activer():
 +
""" Activation des pont-H """
 +
GPIO.output( MOTORA_ENABLE, GPIO.HIGH )
 +
if( MOTORB_ENABLE != MOTORA_ENABLE ):
 +
GPIO.output( MOTORB_ENABLE, GPIO.HIGH )</nowiki>
 
{{Rasp-Hack-L298-TRAILER}}
 
{{Rasp-Hack-L298-TRAILER}}
29 917

modifications

Menu de navigation