RaspFR :: Forum

Forum de la communauté francophone de Raspberry PI.

Vous n'êtes pas identifié(e).

Annonce

Canal irc: #raspfr sur zeolia.net

#1 02-10-2016 00:42:10

Wenlesys
Membre
Inscription : 01-10-2016
Messages : 1

Carte Stepper Motor HAT Servo+Moteur

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

Scipt python servo

[== Indéfini ==]
#!/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

[== Indéfini ==]
#!/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)
			
		

Hors ligne

Pied de page des forums