Hola a todos. Resulta que estoy realizando un proyecto para una materia con Raspberry Pi y necesito saber como imprimir la cantidad de pulsos de un motor DC en 1 vuelta. Estoy usando un motor de referencia Faulhaber 1524B009SR (en pocas palabras a 9V) que contiene un Encoder de cuadratura. Según mi instructor, en 1 giro la cantidad total de pulsos es de 38912 aproximadamente, pero aunque estoy trabajando por interrupciones al configurar los pines GPIO de la Raspberry, no logro que me imprima esa cantidad de pulsos, por el contrario me muestra una cantidad mucho menor que varía de acuerdo a la velocidad del motor dada por el PWM (cosa que no debería pasar).
El error debe estar en la forma de almacenar los datos, o no se si me haga falta alguna función o configuración especial. De verdad que agradecería cualquier ayuda. Aquí les muestro el código en Python:
El error debe estar en la forma de almacenar los datos, o no se si me haga falta alguna función o configuración especial. De verdad que agradecería cualquier ayuda. Aquí les muestro el código en Python:
Código:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False) #para las interrupciones del GPIO
can_a=36
can_b=38
GPIO.setup(can_a, GPIO.IN)
GPIO.setup(can_b, GPIO.IN)
GPIO.add_event_detect(can_a, GPIO.BOTH) #BOTH: deteccion por interrupcion de 0-1 o 1-0 de acuerdo al sentido de giro
GPIO.setup(35, GPIO.OUT)
GPIO.setup(33, GPIO.OUT)
GPIO.output(33, GPIO.LOW)
p=GPIO.PWM(35, 50) #pin GPIO35 con frecuencia al 50%
cont=0
vuelta=1
p.start(3) #inicia variable "p" con PWM del 3%
num=vuelta*17500 #17500: cantidad aprox de pulsos por vuelta con PWM del 3%
while True:
if (cont==num):
p.stop()
else:
if GPIO.event_detected(can_a): #Deteccion de interrupcion
if (GPIO.input(can_a)==GPIO.input(can_b)):
cont=cont+1
print cont
else:
cont=cont-1
print cont
p.stop() #detiene variable "p"
GPIO.cleanup() #limpia los pines GPIO ...
Última edición por un moderador: