Veo que llego muy tarde a la fiesta, lo siento. Sin embargo, solo recientemente comencé a jugar con el Pi, así que tendrás que perdonarme.
Creo que he encontrado una posible respuesta para ti, si aún necesitas una, si no es nada grande. Lo proporcionaré de todos modos en caso de que alguien más se tope con este hilo como lo hice yo, y esté buscando una forma de controlar un ESC con una Raspberry Pi.
Actualmente tengo un código muy simple para controlar un ESC 320A (Zjchao 7.2-16v Versión de alto voltaje 320a ESC cepillado Camino de remolque con freno para Rc Car Truck <, que se encuentra en Amazon) usando la Raspberry Pi Y una placa PWM PCA9685 (ADAFRUIT 16 CANALES 12 BIT PWM / SERVO DRIVER - INTERFAZ I2C <- que se encuentra en adafruit). Tendrá que perdonar mi código antes de tiempo, ya que no soy un maestro. Hice algunas búsquedas con anticipación para ver si alguien había hecho esto, pero seguí dibujando pajitas cortas. No pude controlar un ESC directamente desde el Pi y encontré algún código aquí y allá, pero nunca nada que funcionó.
Casi me rindo, pero luego encontré este hilo que sugirió usar un PCA9685. Así que agarré el usado que estaba en mi cajón de un proyecto antiguo, conecté todo y ejecuté el código del hilo mencionado anteriormente. Tenía algunos problemas, principalmente yo estaba teniendo un problema "simulando activar completamente el acelerador y luego invertirlo por completo" para que el ESC arrancara correctamente. Lo descubrí leyendo el hilo real y viendo que primero debes presionar y mantener presionada la flecha ARRIBA, luego presionar y mantener presionada la flecha ABAJO. Muy bien, claro, no hay problema.
Una vez que me di cuenta de eso, desconecté todo, volví a conectar todo, reinicié el script de Python (del hilo mencionado anteriormente), y procedí a "seguir instrucciones" y ¡¡¡BOOOOOM !!! ¡Escuché el tono mágico de Beep-BEEP-Boop-Beep-Boop y me di cuenta de que ahora estaba funcionando! Luego procedí a modificar el código ya que no quería tener que hacer esta secuencia manualmente cada vez que quiero controlar mis motores desde una desconexión. Lo siguiente es mi sabor de código alterado del hilo mencionado anteriormente una vez más ... simplemente dando crédito donde es debido.
from Adafruit_PWM_Servo_Driver import PWMimport time, cursespwm = PWM (0x40, debug = True ) pwm.setPWMFreq (60) screen = curses.initscr () curses.noecho () curses.cbreak () screen.keypad (True) running = Truefwdmax = 600stop = 400revmax = 200go = 400inc = 20spinup = 1def bootup (): boot = 200 mientras arranca < fwdmax: boot + = inc pwm.setPWM (0,0, boot) time.sleep (0.1) if boot > fwdmax: while boot > revmax: boot - = inc pwm.setPWM (0,0, boot ) time.sleep (0.1) if boot < revmax: boot = 400 pwm.setPWM (0,0, boot) spinup = 0 break while running: char = screen.getch () if char == ord ('q'): running = Falso más: if char == ('b') y spinup == 1: bootup () if char == curses.KEY_UP: if go < fwdmax: go + = inc elif char == curses.KEY_DOWN: if go > revmax: go - = inc elif char == ord (''): go = stop pwm.setPWM (0, 0, go) # cerrar cleanlycurses.nocbreak (); screen.keypad (0); curses.echo () curses.endwin ()
Entonces, lo que hago es esto:
- conecte pi a la placa de prueba y conecte PWM9685 para probar
- conecte la fuente de alimentación externa a la placa PWM
- conecte el motor y la batería para el motor al ESC como lo haría con su coche RC
Aquí es donde debe tener cuidado en caso de que a su ESC no le guste la frecuencia de 60 hz o los valores que se envían a través de mi código
- ejecuta el código provisto, pero NO presiones nada.
- conecta ESC al primer lugar en PWM (0)
- presiona 'b' para iniciar el ESC
Flecha ARRIBA = ir más rápido x20
Flecha ABAJO = ir más lento x20
que he modificado del código encontrado en hilo mencionado anteriormente
'q' = salir del programa
'Barra espaciadora' detendrá el motor
¡Espero que esto ayude!
Aquí está la razón por la que necesito realizar esta tarea, un proyecto paralelo divertido: tanque impreso en 3D