Carte Stepper Motor HAT Servo+Moteur

Piloter un aspirateur autonome ou une tondeuse baladeuse... Pourquoi pas avec un Raspberry Pi ?

Modérateur : Francois

Répondre
Wenlesys
Messages : 4
Enregistré le : sam. 1 oct. 2016 23:59

Carte Stepper Motor HAT Servo+Moteur

Message par Wenlesys » dim. 2 oct. 2016 00:51

Bonsoir à tous,

Je suis en train de réaliser un projet à base de raspberry pi 3 et d’une carte Stepper Motor HAT, qui permet d’ajouter jusqu’à 4 moteurs à courant continu ou 2 moteurs pas à pas et 4 servo.
Pour faire fonctionner ce petit monde j’utilise Domoticz. Un logiciel de domotique qui gère l’activation des scripts python selon l’état des capteurs et ça marche très bien.
MAIS, j’ai un problème pour faire fonctionner mon moteur CC et les servos en même temps.
Je m’explique :
Je lance le script python pour faire fonctionner le moteur, il se met en route normalement, mais dès que je lance le script des servos, le moteur s’arrête.
Et inversement, je lance les scripts des servos sans problème, et dès que je lance celui du moteur, les servos s’agitent dans tous les sens et tremble. Je suis obligé de redémarrer le RPI pour arrêter les tremblements.

J’ai remarqué que les deux scripts avaient la même adresse I2C (6f). Après avoir fait un i2cdetect, j’ai vu qu’il y avait 2 adresses I2C de disponible :
- 6f
- 70

J’ai donc mis une adresse pour les scripts moteur (6f) et l’autre pour les servos (70).
Mais ça ne fonctionne toujours pas ensemble, à la différence prés que je ne suis pas obligé de redémarrer le RPI quand les servos commence à trembler. Je relance le script des servos et ils exécutent la commande.

Cette carte est sensé pouvoir faire fonctionner les moteurs et les servos en même temps, elle a était conçu pour des projets de robotique. Je ne sais pas si j’ai loupé quelque chose, mais votre aide me serait d’un grand secours.
Si vous avez besoin de plus de précision n’hésitez pas.

Je met le pdf du descriptif de la carte ainsi que les scripts python à votre disposition.
En vous remerciant par avance et espérant trouver une solution à mon problème.

Bonne soirée.

Descriptif Carte Stepper Motor HAT
http://vctec.co.kr/web/product/BAE/img/397653.pdf


Scipt python servo

#!/usr/bin/python

from Raspi_PWM_Servo_Driver import PWM
import time

# ===========================================================================
# Example Code
# ===========================================================================

# Initialise the PWM device using the default address
# bmp = PWM(0x40, debug=True)
pwm = PWM(0x70)

# change l'amplitude Min Max
servoMin = 150 # Min pulse length out of 4096
servoMax = 600 # Max pulse length out of 4096

def setServoPulse(channel, pulse):
pulseLength = 1000000 # 1,000,000 us per second
pulseLength /= 60 # 60 Hz
print "%d us per period" % pulseLength
pulseLength /= 4096 # 12 bits of resolution
print "%d us per bit" % pulseLength
pulse *= 1000
pulse /= pulseLength
pwm.setPWM(channel, 0, pulse)



pwm.setPWMFreq(60) # Set frequency to 60 Hz

if (True):
# Change speed of continuous servo on channel 0 & 1
# pwm.setPWM(1, 0, servoMin)
# pwm.setPWM(0, 0, servoMin)
# time.sleep(1)

pwm.setPWM(1, 0, servoMax)
time.sleep(1.5)
pwm.setPWM(0, 0, servoMax)



Script python moteur

#!/usr/bin/python
from Raspi_MotorHAT import Raspi_MotorHAT, Raspi_DCMotor

import time

# create a default object, no changes to I2C address or frequency
mh = Raspi_MotorHAT(addr=0x6f)



################################# DC motor test!
myMotor = mh.getMotor(3)

#Initialise le moteur en marche avant
myMotor.run(Raspi_MotorHAT.FORWARD);

#Demarre le moteur a la vitesse 70 a 255
if (True):
for i in range(70,255):
myMotor.setSpeed(i)
time.sleep(0.02)

guillaume9344
Raspinaute
Messages : 629
Enregistré le : mar. 6 janv. 2015 19:44
Localisation : finistere

Re: Carte Stepper Motor HAT Servo+Moteur

Message par guillaume9344 » dim. 2 oct. 2016 12:45

Bonjour,
je pense que le probléme vient du fait que chaque script commence par initialiser le port i2c , donc si un autre script utilise l' i2c, il serat couppé à cause de l 'initialisation du nouveau script.
Une solution serait de n 'utiliser qu'un script qui fait moteur et servo , il n y aurait q'une initialisation .
@+
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam

Wenlesys
Messages : 4
Enregistré le : sam. 1 oct. 2016 23:59

Re: Carte Stepper Motor HAT Servo+Moteur

Message par Wenlesys » dim. 2 oct. 2016 21:59

Merci pour ta réponse.
Petite question un peu bête; Est-il obligatoire de réinitialiser le port i2c dans les scripts?
Mon soucis est que les scripts se déclenchent indépendamment l'un de l'autre par des capteurs que j'ai paramétré
dans Domoticz. Si je dois fusionner les deux scripts, je vais devoir intégrer les capteurs et ça risque d'être
compliqué.

Bonne soirée

guillaume9344
Raspinaute
Messages : 629
Enregistré le : mar. 6 janv. 2015 19:44
Localisation : finistere

Re: Carte Stepper Motor HAT Servo+Moteur

Message par guillaume9344 » lun. 3 oct. 2016 18:05

L'initialisation est , je pense , obligatoire . Mais réunir servo et moteur dans un seul script ne me semble pas tros compliqué, je ne suis pas un expert en python mais cela devrait etre possible:
les différents capteurs déclenchent des sccripts qui écrivent une donnée dans un ou plusieur fichiers et un programme python lit en boucle ce ou ces fichiers et réalise les actions en fonction des données présentes.
Il y a peut etre aussi des méthodes plus "pros" pour interfacer python avec des scripts extérieurs mais la faut voir avec les moustachus du forum.
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam

Wenlesys
Messages : 4
Enregistré le : sam. 1 oct. 2016 23:59

Re: Carte Stepper Motor HAT Servo+Moteur

Message par Wenlesys » mar. 4 oct. 2016 22:49

Bon, j'ai réussi à faire fonctionner le moteur et les servos dans le même script.
Du coup, faut que je refasse le script lua que j'avais fais dans Domotics avec les capteurs et
tout le reste en python. :cry:
C'était pourtant si simple...

En tout cas merci pour ton aide.
bonne soirée.

#!/usr/bin/python
from Raspi_MotorHAT import Raspi_MotorHAT, Raspi_DCMotor
from Raspi_PWM_Servo_Driver import PWM

import time

# create a default object, no changes to I2C address or frequency
mh = Raspi_MotorHAT(addr=0x6f)
pwm = PWM(0x6f)





servoMin = 150 # Min pulse length out of 4096
servoMax = 600 # Max pulse length out of 4096

def setServoPulse(channel, pulse):
pulseLength = 1000000 # 1,000,000 us per second
pulseLength /= 60 # 60 Hz
print "%d us per period" % pulseLength
pulseLength /= 4096 # 12 bits of resolution
print "%d us per bit" % pulseLength
pulse *= 1000
pulse /= pulseLength
pwm.setPWM(channel, 0, pulse)

pwm.setPWMFreq(60) # Set frequency to 60 Hz
while (True):
# Change speed of continuous servo on channel O
pwm.setPWM(0, 0, servoMin)
time.sleep(1)
pwm.setPWM(0, 0, servoMax)
time.sleep(1)



################################# DC motor test!
myMotor = mh.getMotor(3)

#Initialise le moteur en marche avant
myMotor.run(Raspi_MotorHAT.FORWARD);

#Demarre le moteur a la vitesse 70 a 255
if (True):
for i in range(70,255):
myMotor.setSpeed(i)
time.sleep(0.02)

guillaume9344
Raspinaute
Messages : 629
Enregistré le : mar. 6 janv. 2015 19:44
Localisation : finistere

Re: Carte Stepper Motor HAT Servo+Moteur

Message par guillaume9344 » mer. 5 oct. 2016 10:11

Attent un peu avant de reecrir tes scipts lua.
comme je te le dit au dessusil existe des solutions pour "surveiller"des scripts ( voir du cotés des pipes).
Si tes scriptes lua appellai , par exemple , un script servo et un script moteur , tu ne les changes pas.
Pour le fonctionnement: sur le pi , un programe python tourne en permanence et gere les servo et les moteurs. Quand domotiz doit faire une action, tes scripts font appel a un script servo qui va informer le programme python d'une action a effectuer.
Apres si tu veux tout reprendre, il faut voir comment tu peux interfacer directement domotiz avec un programme python .
@+
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam

Wenlesys
Messages : 4
Enregistré le : sam. 1 oct. 2016 23:59

Re: Carte Stepper Motor HAT Servo+Moteur

Message par Wenlesys » mer. 5 oct. 2016 21:51

C'est pas une mauvaise idée de faire tourner un script python en arrière plan qui gère le moteur et les servos.
Après faut voir si on peut lancer un script depuis Domoticz qui va donner un ordre d'activation au script python moteur/servos, et surtout si c'est réactif.
merci :D

Répondre

Retourner vers « Robots and Co »