Autor Tema: PWM lento con PIC rápido  (Leído 1107 veces)

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

Desconectado PicMinor

  • PIC16
  • ***
  • Mensajes: 220
PWM lento con PIC rápido
« en: 29 de Abril de 2021, 09:31:07 »
¡Saludos al foro!

Estoy trabajando con un PIC18F4580 a 32MHz y necesito sacar una señal PWM para comandar un dispositivo.

Me las prometía muy felices pero me he encontrado con que el dispositivo (Un actuador) requiere un PWM de 3ms de periodo mínimo.

Me he puesto a hacer cuentas y resulta que para alcanzar un periodo de ese orden de magnitud tengo que cambiar la frecuencia del micro a..... ¡¡4 MHz!!

No se si me he equivocado o estoy en lo cierto. Me gustaría que alguien pudiera darme alguna pista.

¡Gracias por anticipado!

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:PWM lento con PIC rápido
« Respuesta #1 en: 29 de Abril de 2021, 10:45:25 »
Datasheet:
https://ww1.microchip.com/downloads/en/DeviceDoc/39637d.pdf

Página 168: Se utiliza el Timer2 para manejar el PWM.

Página 161:
El Timer2 tiene un preescaler máximo de 1:16 sobre la señal de Fosc/4. El resultado es de una frecuencia de entrada al timer de 500000Hz para un reloj de Fosc=32MHz. Si contamos hasta 250 con el Timer, la frecuencia del PWM será de 2000Hz, es decir un periodo de 0.5ms.
Efectivamente, tendrías que bajar la frecuencia a 4MHz para conseguir una señal PWM de hasta 4ms de periodo.


Otras soluciones son utilizar un pequeño PIC añadido para generar la señal PWM o bien cambiar a un modelo de PIC más moderno y flexible.

EDITO:
Los PIC más modernos parece que tienen el mismo problema. He mirado el datasheet del PIC18F66K80 y utiliza también el Timer2 para generar PWM, con preescaler máximo de 1:16
https://ww1.microchip.com/downloads/en/DeviceDoc/PIC18F66K80%20FAMILY%20Enhanced%20Flash%20MCU%20with%20ECAN%20XLP%20Technology%2030009977G.pdf


« Última modificación: 29 de Abril de 2021, 10:59:54 por Picuino »

Desconectado uZYNQ

  • PIC16
  • ***
  • Mensajes: 123
Re:PWM lento con PIC rápido
« Respuesta #2 en: 29 de Abril de 2021, 13:08:17 »
 Una alternativa para el PWM por hardware es usar el módulo CCP en modo comparador, ya que trabaja con 16bits. Se programa el timer1 o el timer3 usando el modo de 16 bits para el periodo. y el ciclo de trabajo lo logras con el comparador del CCP que también es de 16 bits.

Saludos.

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 562
Re:PWM lento con PIC rápido
« Respuesta #3 en: 29 de Abril de 2021, 18:17:55 »
Hola, consulta, esa señal de PWM, luego de ingresar al módulo acaso no se vuelve una señal analógica?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18271
    • MicroPIC
Re:PWM lento con PIC rápido
« Respuesta #4 en: 30 de Abril de 2021, 02:01:36 »
A unas malas puedes implementar el PWM por software, si es que en tu código te sobra tiempo para hacer cosas.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:PWM lento con PIC rápido
« Respuesta #5 en: 30 de Abril de 2021, 03:32:03 »
Hola, consulta, esa señal de PWM, luego de ingresar al módulo acaso no se vuelve una señal analógica?

 En verdad, físicamente hablando, todos los pwm son analógicos.  Al fin y al cabo una señal cuadrada no es más que una suma de infinitos armónicos senoidales.  :D

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 562
Re:PWM lento con PIC rápido
« Respuesta #6 en: 30 de Abril de 2021, 09:16:52 »
Hola, consulta, esa señal de PWM, luego de ingresar al módulo acaso no se vuelve una señal analógica?

 En verdad, físicamente hablando, todos los pwm son analógicos.  Al fin y al cabo una señal cuadrada no es más que una suma de infinitos armónicos senoidales.  :D
Si, si, estamos de acuerdo con el concepto.
Me llama la atención que el dispositivo en cuestión, requiere que el período mínimo de la señal sea de 3ms. Quizás internamente tiene un RC ajustado para esa frecuencia de corte.
Si llegara a ser el caso, pues que directamente ingrese con señal ya filtrada, con el período que a uno se le antoje.

Desconectado PicMinor

  • PIC16
  • ***
  • Mensajes: 220
Re:PWM lento con PIC rápido
« Respuesta #7 en: 04 de Mayo de 2021, 03:54:08 »
¡Gracias por las respuestas!

Al final he desistido de utilizar el PWM como tal. He utilizado el TIMER1 con una variable global para el tiempo en alto y la diferencia a 3ms para el tiempo en bajo, además de una variable "flag" para indicar en qué parte de la onda cuadrada estamos.
El truco funciona pero lamento no haber podido utilizar el módulo PWM, ya que quería aprovechar este proyecto para aprender sobre él. De momento he aprendido que solo sirve para frecuencias altas.

¡Saludos!

PD: Si a alguien le interesa el posicionador es un DA-15-N-ISS de la firma VOLZ. En las especificaciones del PWM (Página 9 del datasheet), pone:

Frame Rate 2.6 … 2000 ms

Por eso he elegido 3ms de Frame rate.
« Última modificación: 04 de Mayo de 2021, 04:01:52 por PicMinor »