Autor Tema: ¿Utilizar Comando PWM o CCP1?  (Leído 3715 veces)

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

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
¿Utilizar Comando PWM o CCP1?
« en: 03 de Noviembre de 2015, 03:31:02 »
Hola a todos,

Es la primera vez que tengo que hacer un proyecto con PWM, y mirando el manual de Proton Basic, para utilizar el PWM puedo hacerlo de dos maneras.
La 1era es utilizando el Comando PWM y la otra por Timer y CCP1.
He deducido que una es por software y la otra por hardware pero cual es la mejor o sus diferencias.
En el proyecto tengo que controlar un motor DC y necesito controlar la velocidad y la marcha alante y atras para ello tengo que utilizar dos salidas del pic pero no a la vez.
El Micro ira conectado a un driver y este atacará a los Mosfets de potencia, este driver tiene dos entradas de PWM para controlar el Puente H (Marcha alante y atras) en estas iran conectadas las dos salidas del pic.
Pero que diferecia hay entre usar el Comando PWM y utilizar los CCP1 o CCP2,  hacen la misma función!!!.
Quiero Utilizar el PIC16F628A tengo unos cuantos y para aprovecharlos, en su datasheet del pic solo tiene un CCP (en el caso de que fuese mejor utilizarlo) ,  me gustaria saber si puedo utilizar los puertosB del pic para enviar los pulsos PWM cuando quiera cambiar la direccion en el driver Ejemplo:
  PWM PortB.0, 130,255  'Marcha Alante
  PWM PortB.1, 130,255  '     "        Atras
O tengo que utilizar los CCP1/CCP2 teniendo que cambiar el Micro.

Gracias.
« Última modificación: 03 de Noviembre de 2015, 03:34:44 por Enner »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Utilizar Comando PWM o CCP1?
« Respuesta #1 en: 03 de Noviembre de 2015, 10:08:51 »
No se Basic, pero voy a responderte la principal diferencia de lo que es un PWM por software y uno por hardware.

¿ Uno es mejor que otro ?

Si y no.
El PWM por hardware ( Usando un Timer + CCP ) permite al micro desvincularse completamente con la salida del mismo. Es decir no es necesario que ejecute ninguna instruccion, solo se configura el modulo y listo ya esta funcionando continuamente, esta es la principal ventaja, ademas hay PWM mas completos que suelen incluir tiempos muertos, complemento, entre otras cosas que facilitan la aplicacion para fuentes/motores ( entre otros.
¿Que tiene de malo el PWM por hardware?
Es dependiente de la frecuencia del oscilador. Si vos tenes un oscilador de mucha frecuencia, no vas a poder hacer un PWM de poca frecuencia., El otro tema es que segun la frecuencia que elijas por ahi no es posible obtener si o si los 10 bits de resolucion, sino que tal ves obtengas un poco menos, unos 8/7 bits.
Tambien estas obligado a usar los pines que poseen el PWM, ya que ese PIC no permite remapearlos.



El PWM por software se realiza con un timer y su interrupcion, supongamos que tenes una frecuencia de PWM a 100Hz ( 10ms ciclo ) y queres una resolucion de 8 bits, entonces tu interrupcion deberia hacerse cada ( 10ms / 255 = 40us ) , y el funcionamiento seria el siguiente, cada ves que entra a la interrupcion se suma un contador que va de 0 a 255, si tenes por ejemplo 2 salidas de PWM una a 100 y otra a 150, cada ves que entra e incrementa el contador pregunta si el contador es mayor a los valores Si es mayor le pone un 0 a la salida y si es menor un 1. Y ahi tenes tu PWM.

¿Desventajas?
Varias, si usas un micro de 4Mhz ( 1us por instruccion ) se la pasaria en la interrupcion, ya que cada 40us entraria, y lleva aproximadamente unos 30 ciclos o mas entrar y salir de la interrupcion, en resumen tu programa no haria nada, si tenes otra interrupcion va a ser un problema. Entonces estas forzado a usar frecuencias mas altas. Sino te los va a consumir completo tu PWM, sino podes disminuir la cantidad de bits de resolucion.

¿Ventajas?
No estas limitado a unos pines, cualquier pin que pueda servir de salida puede usarse, entonces podes tener un PWM con 10 salidas.
Se pueden hacer PWM con frecuencias muy bajas, 100Hz es poco ya, pero intentarlo hacer con un PWM por hardware no es tan facil, y menos si hablamos de 10Hz o menos.


Creo que eso resume las 2 diferencias, uno te ocupa el micro, el otro no. Y va a depender justamente de lo que necesites hacer, la cantidad de salidas, los bit de resolucion y del periodo de la señal.
Y esto deberia responder a todas tus preguntas.

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
Re:¿Utilizar Comando PWM o CCP1?
« Respuesta #2 en: 04 de Noviembre de 2015, 03:54:45 »
Gracias  KILLERJC,

Me has resuelto las dudas principales, Utilizaré el metodo por hardware.
La única duda que tengo como se o Calculo la frequencia con que debo de atacar a los mosfets para que gire el motor,
el motor puede ir a 3000RPM, para que con el potenciometro de velocidad lo regule bién.

Si utilizo la frequencia Interna del micro de 8Mhz tendré suficiente o tendré que poner un cristal exterior , por ejemplo 20Mhz.

Saludos.
« Última modificación: 04 de Noviembre de 2015, 04:09:19 por Enner »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Utilizar Comando PWM o CCP1?
« Respuesta #3 en: 04 de Noviembre de 2015, 10:02:58 »
Si es por Hardware no hay problema, en el datasheet del micro tenes como calcular la frecuencia..

El control de motores DC no es un tema corto asi que voy a resumirlo bastante, seguro que me dejo muchas cosas

La frecuencia del PWM va a depender de 2 cosas.
1- Una frecuencia tal que no sea audible, sino se escucharia un ruido proveniente del motor, supongamos 20Khz+
2- Y la constante de tiempo del motor.

El motor es una carga RL, por lo tanto al aplicar una tension la corriente no sube la instante, lo que se tiene que lograr es que llegue la corriente a un valor significativo, recorda que es la corriente quien genera el campo magnetico para que gire, y el torque es dependiente de este. Asi que creo que el primer paso es tratar de conseguir los valores internos del motor. obtener la constante de tiempo L/R y este valor multiplicado por 4 ( 4 constantes de tiempo = 85% de la corriente, 5 y son casi 98% si no mal recuerdo) te va a dar la maxima frecuencia y el minimo duty que deberias usar.

Aca unos links explicando un poco mas eso:
pulso minimo:
http://www.precisionmicrodrives.com/application-notes-technical-guides/application-bulletins/ab-022-pwm-frequency-for-linear-motion-control
EMI reduccion:
http://www.precisionmicrodrives.com/application-notes-technical-guides/application-bulletins/ab-012-driving-vibration-motors-with-pwm

Y despues lo podes complicar todo lo que quieras, fijate desde la pagina 285 marcada en el pdf
Ahi tenes hasta lazo de realimentacion de velocidad, aceleracion. Por supuesto todo muy por encima. Pero es hasta lo que se puede llegar y mas. Distinto arreglos para trabajar hasta en los 4 cuadrantes del motor.
http://www.nxp.com/documents/application_note/APPCHP3.pdf

-----------------

Resumiendo.. si no queres complicarte la vida.. Y solo estas haciendo un control de 1 solo cuadrante ( solo para un lado )
Elegi la frecuencia minima por HW que puedas con 8Mhz, Podes usar 20Khz y probar
http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html
Ahi dice que a 8Mhz con 20Khz tenes 8 bits de resolucion, es  decir de 0 a 255 para variar.

Ojo que esto no implica una velocidad exacta con carga, si necesitas una velocidad exacta vas a tener que hacer un lazo de realimentacion para ver a que velocidad va y actuar.
« Última modificación: 04 de Noviembre de 2015, 10:13:34 por KILLERJC »

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
Re:¿Utilizar Comando PWM o CCP1?
« Respuesta #4 en: 05 de Noviembre de 2015, 09:01:46 »
Hola,

Estoy asimilando, leyendo los links que me dejastes muy interesantes y otro mundo que desconocia ha descubrir. Muchas gracias por todo.

También estoy mirando Micros y estoy liado en los CCP, hay micros que tienen 2 CCP`s es decir CCP1 y CCP2

En el micro 16F690 tiene un solo CCP y está en el Pin,5 = RC5/CCP1, pero se ve que también hay los ECCP.
En la página 11 hay un diagrama que esta esto dibujado CCP1 / [P1A P1B P1C P1D].

Esto que signigica que con un solo CCP1 puedo utilizar estos pines (P1A P1B P1C P1D) para mi proposito, o necesisto tener CCP1 y CCP2
en el Micro como por ejemplo estos PIC que tienen 2 CCP´s - PIC16F877A 0 PIC18F2550 (estos no tienen ECCP)

Digo yo que el ECCP és una mejora del CCP.


Gracias.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Utilizar Comando PWM o CCP1?
« Respuesta #5 en: 05 de Noviembre de 2015, 11:43:15 »
Microchip marca al CCP como aquel que provee una sola salida en base a la frecuencia y el duty.
El ECCP permite que 1 solo modulo cambie varias salidas, hasta 4, de esa forma crear una especia de puente H. Tenes que darte cuenta que esto NO implica que las 4 salidas van a tener su propia frecuencia, su propio duty. El duty esta regido por un registro para todos, la frecuencia tambien, el tiempo muerto tambien.

En la pagina 116 tendrias la tabla de como serian las salidas segun esta configurado el PWM. ( 1 sola salida, half-bridge (2) , full-bridge (4) )

Mas adelante tenes la explicacion en que podrias y como funcionaria los modos half-bridge y Full-bridge
Si miras un poco el grafico, verias que en half bridge ( 2 salidas), una es complemento de la otra. es decir mientras esta activo P1A , P1B esta en 0. Si etnes un duty de 75% P1A va a estar activo ese tiempo y luegose pone a 0, pasa el tiempo muerto y se activa P1B, pasa el 25% restante, tiempo muerto y comienza todo el ciclo de nuevo.
« Última modificación: 05 de Noviembre de 2015, 11:46:00 por KILLERJC »

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
Re:¿Utilizar Comando PWM o CCP1?
« Respuesta #6 en: 06 de Noviembre de 2015, 09:17:28 »
Hola,

Estoy asimilandolo poco a poco... hay mucho tema... :)  !!

Lo que no me quedo claro es que si tengo que selecionar un Pic con dos CCP's (CCP1 y CCP2) o con un solo CCP1 me basta para el proyecto.

Esta tarde haré calculos para la frequencia PWM y el oscilador que le podndre al Micro... a aver!!!

Saludos.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Utilizar Comando PWM o CCP1?
« Respuesta #7 en: 06 de Noviembre de 2015, 10:19:04 »
Si necesitas controlar el duty de ambas , y la frecuencia de ambas (salidas independientes), entonces necesitas 2 modulos PWM ( 2 CCP )

Si necesitas solo una salida independiente, 1 solo CCP
Si necesitas 2 salidas, una completemento de la otra (misma frecuencia, PWM1 = duty , PWM2 = (100 - duty)), solo necesitas un ECCP