Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Buenas a todos!
Estoy trasteando con el PWM de los Atmel para mover los servos de mi bípedo.
Tengo pensado mover 10 servos via hardware y los que falten via software para no sobrecargar el micro.
La configuración de la senyal es:
TIMER1 (16 bits)
clock = 16MHz
prescaler = 8
ICR1 = 20000
Con esos datos la senyal me queda de 50Hz
Al poner el duty a 1.5ms se posiciona correctamente al centro, el problema viene cuando pongo otro valor. Por ejemplo, si pongo 1ms en vez de moverse hasta el zero se mueve solo unos 45 grados hacia el zero. Para que vaya a zero grados tengo que poner el duty de 0.7ms y para que vaya a 180 a 4ms.
¿Alguien tiene idea de que me falla?
Saludos y gracias,
Ionthas
¿Has medido ese tiempo o es por el valor que le pones al PWM?¿Has mirado la señal con el osciloscopio?
¿Que tipo o modo de funcionamiento usas?
¿Que micro y que timers usas (según el micro, tendrás más timers HW o menos)?
Y por último ¿Que servo? ¿Has probado el mismo servo con otro generador de PWM?
El valor de 1ms es por el valor que le pongo en el PWM y no puedo mirar la señal con un osciloscopio ya que no tengo en mi casa.
El modo de funcionamiento del pwm es el modo 10 del atmel640. Utilizo el Phase correct PWM con ICRn = 20000 de TOP.
Utilizo el TIMER1,3,4,5 del micro atmega640 y he provado 2 tipos de servos los hitec-311 y unos DYS (no me acuerdo del modelo).
La verdad es que si no lo puedo solucionar estoy por ir a la universidad y pedir si me dejan utilizar un oscilocopio.
Muchas gracias,
Ionthas.
Hola:
Yo personalmente, prefiero trabajar con el modo 12 (CTC por ICRa) en lugar del modo phase correct que usas, ya que básicamente te da el doble de resolución. Pones el ICR a 40000, y los diferentes OCR's a 2x el número de microsegundos que quieres de período.
Propongo que hagas esta modificación, lo pruebes, y luego comentas el resultado.
Por cierto, aunque uses un cienpiés (tiene 100 pines el micro que comentas), puede que uno de los timers que usas necesite ser 'liberado de su pesada carga', para poder hacer el PWM por software sobre interrupciones.