TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: antoniojdobarro en 25 de Marzo de 2013, 12:40:54

Título: PWM Servo
Publicado por: antoniojdobarro en 25 de Marzo de 2013, 12:40:54
He leído varios post por aquí pero no termino de tener claro como utilizar divisores para aumentar la precisión en PWM para controlar un servo.

Partiendo de que Fpwm=Fosc/[4*(PR2+1)*PRES] y utilizando un cristal de 100Khz, PR2=124, PRES=4 obtengo una frecuencia de 50Hz necesaria para el control del servo.

El servo define sus posiciones extremas entre 0.3 y 2.3 ms.

Para la F=50Hz, tengo entonces PR2+1=125 pasos, con lo que 20ms son 125 pasos.

Luego las posiciones extremas del servo varian entre [1,15] pasos.

Como el servo varía 190º entre 14 pasos tengo una resolución de 13.5º/paso, que es muy pobre.

Como puedo hacer para aumentar esa resolucion y tener mas pasos para ajustar mejor la posición del servo???
Título: Re: PWM Servo
Publicado por: sander en 25 de Marzo de 2013, 17:09:25
Para que el PWM trabaje con una resolucion de 10 bits (1024 pasos) PR2 debe ser 255, si quiere una resolucion mayor el valor de PR2 debe ser lo mas alto posible.

La ecuacion para calcular la resolución esta en la hoja de datos del microcontrolador,  tiene la siguiente forma

resolucion = (log(4*(PR2+1))) / log(2)

si PR2 = 255 entonces  resolucion = (log(1024)) / log(2), eso da 10 bits

para su caso PR2 = 124 , entonces la resolucion = (log(500)) / log(2), eso da 8.9 bits , y eso equivale a pasos de 0 a 476 no de 125 como usted dice.


Saludos
Título: Re: PWM Servo
Publicado por: Picuino en 25 de Marzo de 2013, 19:26:46
Puedes atender a una interrupción 50 veces por segundo (cada 20ms) para activar la salida PWM.

La desactivación puedes hacerla con un contador de tiempo o con otra interrupción programada para el tiempo que quieras.

Si quieres tener una resolución de 1º (no se si el servo te dará tanta resolución) necesitas controlar periodos de tiempo con una resolución de:
2ms / 190 = 10 us

Para conseguirlo necesitas un reloj que trabaje a una velocidad de 400Khz o mayor.

Saludos.
Título: Re: PWM Servo
Publicado por: Picuino en 25 de Marzo de 2013, 19:29:17
Con PWM puedes conseguir como mucho 20ms/1024 = 19.5us
que son unos 190º * 19.5us / 2ms = 1.85º de precisión.

Saludos.
Título: Re: PWM Servo
Publicado por: antoniojdobarro en 28 de Marzo de 2013, 05:26:54
Con PWM puedes conseguir como mucho 20ms/1024 = 19.5us
que son unos 190º * 19.5us / 2ms = 1.85º de precisión.

Saludos.

Justo lo que pensaba Picuino. Simple claro y preciso.

Muchas gracias.