Cálculo de los ciclos de trabajo para el controlador del motor Syren 10A

0

Compré el Syren 10A para conducir un elemento Peltier usando python y una frambuesa-pi cero + Fuente de alimentación de 12V.

Después de leer y hablar, llegué a la conclusión de usar el controlador en el modo de tiempo de espera a prueba de fallos de R / C donde los pines 1 y 6 están abajo.

Suponiendo (porque no puedo determinarlo a lo largo del pdf) que el controlador necesita 50Hz para el PWM, y se basa en la siguiente oración en la página 11.

  

Un pulso de 1500us es velocidad cero, un pulso de 1000 us está totalmente invertido y   2000 us pulso está lleno hacia adelante

Calculé los ciclos de trabajo de la siguiente manera:

For full reverse 1000usec = 1msec pulse width is needed. So 1msec is 1 / 20 = 5% of the duty cycle

For stop 1500usec = 1.5msec is needed. So 1.5msec is 1.5 / 20 = 7.5% of the duty cycle

For full forward 2000usec = 2msec pulse width is needed. So 2msec is 2 / 20 = 10% of the duty cycle

Entonces, para probarlo, utilicé el siguiente script de Python y cada vez que cambié el ciclo de trabajo.

import RPi.GPIO as GPIO
import time

servoPIN = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(servoPIN, GPIO.OUT)

p = GPIO.PWM(servoPIN, 50) # GPIO 18 for PWM with 50Hz

# DUTY CYCLE DESCRIPTION
# FULL FORWARD 10%
# FULL REVERSE 5%
# STOP         7.5%

p.start(10)      

try:    
    while True:
        p.ChangeDutyCycle(10)
        time.sleep(3)

except KeyboardInterrupt:
    p.stop()
    GPIO.cleanup()

Cuando se ejecutó el script, medí con un multímetro el voltaje entre los encabezados M1 y M2 del controlador y aquí están los resultados:

@5% of Duty Cycle gives -12V
@7.5% of Duty Cycle gives -6 V
@10% of Duty Cycle gives 0V

Mientras que lo que esperaba ver es:

@5% of Duty Cycle to give -12V
@7.5% of Duty Cycle to give 0 V
@10% of Duty Cycle to give 12V

¿Por qué no estoy obteniendo lo que esperaba? ¿Estoy haciendo algo mal con los cálculos / suposiciones? Ten en cuenta que soy algo nuevo en el mundo de la electrónica y tal vez me haya perdido algo.

EDITAR (usando pigpio lib):

Así que después de las indicaciones de JRE para usar la biblioteca pigpio, escribí ese sencillo código debajo de python.

import time
import pigpio

servoPIN = 18

pi = pigpio.pi()

print("Turning it off")
pi.set_servo_pulsewidth( servoPIN, 1500)
time.sleep(10)

print("Trying 1000 [FULL REVERSE] ")
pi.set_servo_pulsewidth( servoPIN, 1000)
time.sleep(10)

print("Trying 1500 [OFF]")
pi.set_servo_pulsewidth( servoPIN, 1500)
time.sleep(10)

print("Trying 2000 [FULL FORWARD]")
pi.set_servo_pulsewidth( servoPIN, 2000)
time.sleep(10)

pi.stop()

Y algo curioso sucedió.

Las primeras veces que lo ejecuté obtuve resultados inesperados como:

@1000 gave me 0V
@1500 gave 12V
@2000 gave 6V

Luego desconecto el controlador, lo vuelvo a conectar y vuelvo a ejecutar el script donde

@1000 gave me -12V
@1500 gave 0V
@2000 gave 12V

como se esperaba !! Wow, pensé. Luego vuelvo a desconectar y enchufar el controlador y, mientras ejecutaba el script, dio algo diferente.

@1000 gave me 0V
@1500 gave 12V
@2000 gave 12V

Entonces, ¿qué está pasando? ¿Por qué conectar y desconectar el controlador cambia el comportamiento?

    
pregunta J. Doe

0 respuestas

Lea otras preguntas en las etiquetas