Autor Tema: modulo PWM  (Leído 2843 veces)

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

Desconectado calcius

  • PIC10
  • *
  • Mensajes: 45
modulo PWM
« en: 14 de Octubre de 2004, 12:21:00 »
buenas estoy intentando implementar uno de los modulos PWM del pic pero no he conseguido nada y la información que viene de ayuda con el ccs la verdad es que me esta confundiendo aun mas. he buscado por el foro pero creo q este tema no se ha tratado nunca.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: modulo PWM
« Respuesta #1 en: 14 de Octubre de 2004, 13:04:00 »
Te equivocas, se ha tratado varias veces.

Busca un poco más y si no encuentras nada avisa.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: modulo PWM
« Respuesta #2 en: 14 de Octubre de 2004, 13:07:00 »
Te coloqué aquí un regalito, en el almacén:
http://miarroba.com/foros/ver.php?foroid=256746&temaid=2425880
Recuerdo que lo hice para el foro... pero no lo he encontrado por los almacenes. Lo cuelgo de nuevo, si es que lo había hecho ya...

Saludos!!

PD: es cierto lo que comenta Pocher... en algún lado debe de estar. Se tocó varias veces...
Saludos desde Huelva (ESPAÑA)

Desconectado calcius

  • PIC10
  • *
  • Mensajes: 45
RE: modulo PWM
« Respuesta #3 en: 14 de Octubre de 2004, 13:21:00 »
gracias por la info, lo decia porque he buscado en el buscador del foro PWM y me decia que no se ha encontrado coincidencias...

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: modulo PWM
« Respuesta #4 en: 14 de Octubre de 2004, 13:37:00 »
el problema es que PWM a secas no se puede buscar, ya que tiene 3 letras, y eso no lo permite el buscador

Saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado calcius

  • PIC10
  • *
  • Mensajes: 45
RE: modulo PWM
« Respuesta #5 en: 14 de Octubre de 2004, 13:51:00 »
muy currao el ejemplo cucaracha!!! pero ahora que por fin he entendido el funcionamiento del pwm me queda unas dudas...

quiero hacer una frecuencia de 50Hz--- 20ms periodo, pero si al hacer los calculos me encuentro con que el periodo me sale 19999, con lo cual si el registro va de 0-255 no puedo me equivoco? asi que digo pues voy a hacer que el timer se incremente cada 4 ciclos de reloj... cada 16... y sigue sin entrarme!!! mi pregunta es, ay algun tipo de solucion para esto? puede el timer reiniciarse y contar los impulsos que le falta?

por otra parte tengo otra pequeña duda que creo que es la causante de que no sepa como afrontar el problema, el timer cuenta los impulsos de reloj y cuando pasa a nivel alto la salida? cuando se reinicia el timer?

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: modulo PWM
« Respuesta #6 en: 14 de Octubre de 2004, 16:13:00 »
Vamos, que tú lo que quieres es controlar un servo, no? Me equivoco?
Lo que pasa es que la PWM tiene unos máximos y unos mínimos de frecuencia. Dependen eso del timer.
Te comento, que con 4MHz no puedes llegar a esa frecuencia... Deberías usar un reloj más bajo.
Comprueba según las fórmulas.
Con cristal de 1MHz, división por 16 y 255 en PR2 saldría una frecuencia de 61Hz. Eso sería lo mínimo a lo que podrías llegar.
Por tanto, necesitarías un cristal aun más bajo para conseguir los 50Hz.
El cambio se realiza a nivel no se realiza por el timer... el timer se usa para crear la frecuencia. El cambio lo realiza el módulo CCP, cuando coincide con un número, que sería el duty. Va comparando el valor del timer y del duty. Cuando coinciden cambia el estado del pin. Al llegar el timer a desbordarse, comenzaría un nuevo ciclo de la onda, cuadrada en este caso.
De ahí que en el caso del ejemplo, en el PWM2, como nunca llega a ser igual el duty y el valor del timer, siempre estará en nivel alto. Osea, continua de 5v.

Puedes usar el timer2, sin PWM, ingeniándotelas para conseguir controlar el servo (suponiendo que sea eso) haciendo uso de el postscale. Esto hace que la interrupción se cree cada X veces, siendo X la post-escala. Si eliges por ejemplo una postscale de 16, se produce la interrupción al desbordamiento 16 del timer.

Otro sería usar el timer1 con un cristal externo, que te de base de tiempo para esos 50hz, así no tendrás que bajar el cristal del micro. Aunque también tendrías que ingeniártelas.

Y la última... hacerlo con bucles de retardo... No es muy elegante, pero depende de que más tenga que hacer el programa. Si te sirve esa opción... valida pues.

Saludos!!
Saludos desde Huelva (ESPAÑA)


 

anything