我如何使用树莓派4B发送PWM信号到ESC来控制水下推进器?

Publicado por Fengyukun en

Utilice ESC: APISQUEEN 24V 100A ESC

Manual de instrucciones ESC 100A: https://cdn.shopify.com/s/files/1/0621/5493/2452/files/100A.pdf?v=1700410535

1: Desbloquear ESC

La señal de parada en punto muerto es su señal de desbloqueo.
Cuando se utiliza una señal de 50 Hz, el período de la señal es de 20 ms.
El porcentaje en las instrucciones se refiere al porcentaje del ancho del pulso de control PWM, no al ciclo de trabajo real de la señal PWM (aquí es fácil malinterpretar).
Entonces la señal de parada en punto muerto es:
Ciclo de trabajo del 75 %, ciclo de trabajo real del 7,5 %: 1,5 ms (1,475 ms ~ 1,525 ms);

importar pigpio
Hora de importación

PI = pigpio.PI() #Crear objeto pigpio
LED_PIN = 18 #Definir el puerto GPIO al que está conectado el LED
PWM_FREQUENCY = 50 #Definir frecuencia PWM (Hz)
Rango_PWM = 1000
Defina el ciclo de trabajo PWM, el rango de valores es 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Configura el puerto GPIO en modo de salida
π. set_PWM_frequency(LED_PIN, PWM_FREQUENCY) #Establecer frecuencia PWM
π. set_PWM_range(LED_PIN, PWM_range) #Establecer rango 1000

π. set_pwm_dutycycle (LED_PIN, 75) #Establecer ciclo de trabajo PWM 75/1000= 7,5%
Time.sleep(3) #Retraso 3 segundos para desbloquear con éxito

2. control ESC

Ciclo de trabajo 75 %: Deténgase cuando el ciclo de trabajo real sea 7,5 % ~ 1,5 ms (entre 1,475 ms ~ 1,525 ms);
Ciclo de trabajo 50%-75%: ciclo de trabajo real 5%-7,5%, 1ms-1,5ms en reversa;
Ciclo de trabajo 100%: ciclo de trabajo real 7,5%-10% 1,5 ms -2 ms hacia adelante

π. set_PWM_dutycycle (LED_PIN, 100)
#Adelante: 7,5% ~ 10% Cuanto mayor sea el ciclo de trabajo, más rápida será la velocidad de avance.
tiempo.dormir(15)

π. set_PWM_dutycycle (LED_PIN 60)
#Reversa: Cuanto más cerca esté el ciclo de trabajo del 5%, más rápida será la velocidad de reversa.
tiempo.dormir (5)

π. set_PWM_dutycycle (LED_PIN, 75)
#ciclo de trabajo
tiempo.dormir (5)

3. Depuración


Durante la depuración, puedes utilizar un osciloscopio para ver si la forma de onda es correcta:
Por ejemplo, la siguiente imagen es la señal de parada PWM que comencé a enviar.
La amplitud del voltaje es de 3,3 V, el período es de 20 ms y el ciclo de trabajo real es del 7,5 %, todo correcto.
Pero todavía no puedo desbloquear el ESC porque hay demasiado ruido y desorden en la forma de onda.

Al principio usé RPi. Biblioteca GPIO, luego usé la biblioteca pigpio para enviar la señal pwm del hardware para resolver el problema.

4. Código de muestra:


importar pigpio
Hora de importación

PI = pigpio.PI() #Crear objeto pigpio
LED_PIN = 18 #Defina el puerto GPIO al que está conectado el LED.
PWM_FREQUENCY = 50 #Definir frecuencia PWM (Hz)
Rango_PWM = 1000
Defina el ciclo de trabajo PWM, el rango de valores es 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Configura el puerto GPIO en modo de salida
π. set_PWM_frequency(LED_PIN, PWM_FREQUENCY) #Establecer frecuencia PWM
π. set_PWM_range(LED_PIN, PWM_range) #Establecer rango 1000

π. set_pwm_dutycycle (LED_PIN, 75) #Establecer ciclo de trabajo PWM 75/1000= 7,5%
Time.sleep(3) #Retraso 3 segundos para desbloquear exitosamente

π. set_PWM_dutycycle (LED_PIN, 100)
#Rotación hacia adelante 7,5% -10% del ciclo de trabajo, cuanto mayor sea el ciclo de trabajo, más rápida será la velocidad de avance
tiempo.dormir(15)

π. set_PWM_dutycycle (LED_PIN 60)
Cuanto más cerca esté el ciclo de trabajo del 5%, más rápida será la velocidad de inversión.
tiempo.dormir (5)

π. set_PWM_dutycycle (LED_PIN, 75)
#ciclo de trabajo
tiempo.dormir (5)

Compartir esta publicación



← Publicación más antigua Publicación más reciente →


0 comentarios

Dejar un comentario