El problema es que mientras se está realizando la inicialización los motores empiezan a acelerar solos y después paran de golpe para empezar ha hacer lo que les manda la placa Arduino. ¿Sabe alguien como evitar esto?
Un saludo y muchas gracias de antemano.
Hola Cheyenne!
Hago eso porque los motores están parados a 2,5v (127) y en marcha hacia un sentido u otro en función de si el voltaje sube o baja de este punto, es decir, si tengo 0v (0) voy a tope en un sentido y con 5v (255) a tope en el otro.
Muchas gracias y un saludo.
He estado mirando un poco por encima la documentación y no entiendo cómo controlas este módulo Sabertooth 2x25. ¿Estás utilizando dos salidas PWM de Arduino con un filtro RC en cada una?
Así es utilizo dos pwm con filtros RC. El error parece como si ocurriera mientras arduino se está inicializando. Una vez que se empieza a ejecutar el programa funciona perfectamente.
Tu problema seguro que no tiene nada que ver con lo que te explico a continuación pero te lo comento de todos modos. En la documentación de ese módulo recomiendan que si se controla mediante PWM con filtro RC (Mode 1: Analog Input) la frecuencia del PWM sea como mínimo 1 kHz. Si no has hecho ningún cambio de frecuencia por defecto ésta es de 490 Hz (la mitad del mínimo recomendado). Si quisieras también podrías controlar el módulo con el "Mode 2: R/C Input" mediante la librería servo.
Para diagnosticar tu problema, ¿has probado a ejecutar sólo el setup, eliminando todas las instrucciones del loop a ver lo que sucede?
Mientras corre el bootloader del Arduino pasa como 1 segundo, durante ese segundo la salida del PWM va a ser 0, y eso es lo que esta causando que se muevan.
Creo que como solución puedes colocar algún arreglo eléctrico que mande 2.5V mientras el arduino se inicializa, o que a traves de un relé/transistor manejes la energizacion de los motores luego de que el arduino inicialice, o no se si quieras considerar usar alguno de los modos serial.
Tu problema seguro que no tiene nada que ver con lo que te explico a continuación pero te lo comento de todos modos. En la documentación de ese módulo recomiendan que si se controla mediante PWM con filtro RC (Mode 1: Analog Input) la frecuencia del PWM sea como mínimo 1 kHz. Si no has hecho ningún cambio de frecuencia por defecto ésta es de 490 Hz (la mitad del mínimo recomendado). Si quisieras también podrías controlar el módulo con el "Mode 2: R/C Input" mediante la librería servo.
En un principio he probado así mismo simplemente por verlo funcionar, pero si que tengo pensado cambiar el prescaler del timer para hacer que el PWM funcione con otra frecuencia. ¿Todos los PWM de arduino funcionan a 490Hz? Tenía entendido que en el arduino UNO los PWM de las salidas 5 y 6 funcionaban a 976HZ.
El problema será lo que cuenta Luis_AM3C. Probaré a poner otro interruptor y darle marcha a los motores una vez arduino se haya inicilizado. Si esto funciona pondré un relé para evitar el problema.
esnal88:
¿Todos los PWM de arduino funcionan a 490Hz? Tenía entendido que en el arduino UNO los PWM de las salidas 5 y 6 funcionaban a 976HZ.
Pues es la primera noticia que tengo. No quiero decir que no sea así, si lo has consultado seguro que será. Simplemente que cada vez que he leído del tema sólo había visto lo de los 490 Hz.