Autor Tema: PWM Servo  (Leído 2972 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
PWM Servo
« 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???

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: PWM Servo
« Respuesta #1 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
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: PWM Servo
« Respuesta #2 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.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: PWM Servo
« Respuesta #3 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.

Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
Re: PWM Servo
« Respuesta #4 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.