Autor Tema: PWM con CCS?  (Leído 6067 veces)

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

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
PWM con CCS?
« en: 01 de Marzo de 2004, 10:07:00 »
Buenas una pregunta, alguien ha hecho una PWM en CCS con un PIC16F876 ? No hay ninguna libreria que lo haga? si alguien sabe como hacerlo o me puede orientar un poco se lo agradeceria mucho , gracias y un saludo

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: PWM con CCS?
« Respuesta #1 en: 01 de Marzo de 2004, 10:09:00 »
Te refieres usando el módulo CCP? Osea, por hardware, no?
Saludos desde Huelva (ESPAÑA)

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
RE: PWM con CCS?
« Respuesta #2 en: 01 de Marzo de 2004, 10:34:00 »
El pic16f876 puede hacerla por hardware? ahora me entero, confirmamelo cucaracha, si es así. Gracias de nuevo

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: PWM con CCS?
« Respuesta #3 en: 01 de Marzo de 2004, 10:44:00 »
Pues sí. Mira el módulo CCP (compare-capture-pwm).
Tu lo usarías en modo PWM claro. Tienes dos módulos, CCP1 y CCP2, por tanto puedes obtener dos PWM. La frecuencia de ambas es la misma (dependen del timer2). Lo que puedes variar son sus duty cycle.
Si quieres te paso un ejemplo en C y proteus.
Saludos desde Huelva (ESPAÑA)

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: PWM con CCS?
« Respuesta #4 en: 01 de Marzo de 2004, 11:17:00 »
Ya está:

Codigo:


#include <16f876.h>
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, WRT
#use delay(clock=4000000)



void main(void){

   long duty_PWM1, duty_PWM2;
   // Para cristal de 4 mhz, frecuencia de 20 khz ,
   // T2DIV set to 1
   // Para calcular la frecuencia:
   // (4/frecuencia cristal)*T2_DIV*(periodo+1)


   // (4/4000000)*1*(49+1)=0.00005seg
   setup_timer_2(T2_DIV_BY_1, 49, 1);

   // seleccionamos PWM para los dos módulos CCP
   setup_ccp1 (CCP_PWM);
   setup_ccp2 (CCP_PWM);

   // cargamos el duty cicle para cada PWM. La frecuencia es igual para ambas, 20KHz.
   // Para calcular el tiempo en nivel alto, dado que usamos un LONG, sería:
   // Valor*T2_DIV*(1/frecuencia del cristal). Si se usa un valor tipo INT en lugar
   // de LONG se calcularía multiplicando la fórmula por 4: Valor*T2_DIV*(1/frecuencia del cristal)*4
   duty_PWM1 = 100; // 0.000025seg/(1*(1/4000000))=100, que es el valor a cargar. Duty 50%
   duty_PWM2 = 200; // 0.000050seg/(1*(1/4000000))=200. Si te fijas, con 20KHZ el T=50us,
                    // que es lo que se ha puesto para el duty, osea, todo.
                    // Por tanto la señal será continua a 5v. Duty cicle 100%
   set_pwm1_duty(duty_PWM1);
   set_pwm2_duty(duty_PWM2);

   while(1){   //bucle infinito.
   }
}




Saludos desde Huelva (ESPAÑA)

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
RE: PWM con CCS?
« Respuesta #5 en: 01 de Marzo de 2004, 13:18:00 »
Gracias, eres mi salvador. Me lo mirare a ver si consigo hacer algo.
Necesito hacer una pwm que pueda variarla y obtener estos tres valores. 1,63ms - 1,43ms - 1,23ms. Intentaré hacerlo pero si no me sale y si no te importa te pedire otra vez consejo, tu que eres un maestro. Gracias otra ves

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: PWM con CCS?
« Respuesta #6 en: 01 de Marzo de 2004, 13:37:00 »
Ummm, me suena a servo de por medio...
Ok!, por aquí estamos para lo que necesites.
Lo de maestro... no se yo, el maestro es el que hizo el CCS, que no veas lo que facilita, verdad?? 4 o 5 lineas y listo.
Saludos desde Huelva (ESPAÑA)

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
RE: PWM con CCS?
« Respuesta #7 en: 01 de Marzo de 2004, 16:19:00 »
Efectivamente cucaracha lo que quiero controlar es un servo, exactamente uno de la marca sanwa. He estado mirando el programita, pero... se puede conseguir una frecuencia de 100Hz ? es que he hecho los calculos para el timer2 pero todos los resultados son de Khz, y es demasiado alto. Saludos

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: PWM con CCS?
« Respuesta #8 en: 01 de Marzo de 2004, 16:55:00 »
Ok, si miras la ayuda del CCS (setup_timer_2)...
Si por ejemplo tomas la división de 16, cristal de 4MHz y el valor del timer 255, setup_timer_2(T2_DIV_BY_16,255,1),  sería:
(4/4000000)*16*(255+1)=0.004096seg=244.140625Hz
Vale, este sería el mínimo. Pero hay otros medios, que como no has mirado la ayuda no los conoces...
Te diste cuenta del 1 del final del setup_timer_2.... te preguntará que es??, para que sirve??
Mira la ayuda

Si no me equivoco, creo que se puede llegar a una temporización de hasta 16.258...seg. Lo que no sé si será compatible con la PWM.

Espera que miro...

Pues no, toma sólo 1 de las divisiones, que si piensa es lo lógico, ya que lo hace por hard.

Por lo que lo mínimo es 244.14Hz, pero eso para un cristal de 4MHz.
Y si usas uno de 1MHz?? Que sepas que no es pecado mortal usar un cristal menor a 4MHz, aunque muchos de los que estén acostumbrados a usar los de 20MHZ lo piensen. A veces la velocidad no es una buena aliada. Como dicen en un anuncio de neumáticos (Michelín... toma publicidad gratuita), "la velocidad sin control no sirve de nada". Pos eso

Con uno de 1MHZ multiplicarías por cuatro el periodo de la PWM (o dividiría por 4 la frecuencia, como más te guste).
Tendrías 0.004096*4 = 0.016384seg = 61.03515625Hz

Suficiente para tu servo, ya que suelen funcionar entre 50 y 100Hz

Y con esto creo que ya estarías listo para empezar a enredar con el servo, o los servos... recuerda que puedes controlar hasta 2 con este micro (por hard).
Saludos desde Huelva (ESPAÑA)

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
RE: PWM con CCS?
« Respuesta #9 en: 02 de Marzo de 2004, 14:03:00 »
De nuevo te doy las gracias cucaracha. Si que estube mirando el manual del ccs en español y el datasheet del pic, hice unos cuantos calculos pero no conseguí la frecuencia que necesito. Por eso te volví a preguntar. No había caido en lo de cambiar el cristal. De todas maneras me han comentado que hay un integrado que genera pwm. Se trata del sg3524 de la casa linear technology. No se como funciona, aunque prefiero hacer la pwm con el pic. Seguiré informando sobre mis pasos, Saludos a todos

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: PWM con CCS?
« Respuesta #10 en: 02 de Marzo de 2004, 14:12:00 »
Si, es un integrado que se usa para el control de fuentes, pero no se yo si te serviría para lo que quieres. Vamos que con un pic te sería más fácil y menos lioso que con el integrado, si es que consigues hacerlo con este último.
Yo lo usé en este circuito:
http://www.eio.com/crntctrl.htm
El circuito no llegó a funcionar

En fin, intenta hacerlo con un cristal de 1MHz...
Saludos desde Huelva (ESPAÑA)

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
RE: PWM con CCS?
« Respuesta #11 en: 08 de Marzo de 2004, 12:20:00 »
Cucaracha de donde has sacado la fórmula esa para calcular la frecuencia ? es que me estoy volviendo loco, porque en el datasheet del pic sale otra diferente. Y con tu fórmula me estoy volviendo también loco porque no consigo dar con los 100Hz que necesito.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: PWM con CCS?
« Respuesta #12 en: 08 de Marzo de 2004, 12:39:00 »
La fórmula es:

T=(PR2+1)·4·Tosc·TMR2presc

Para una fosc=1MHz --> T=(255+1)·4·(1/106)·16=0.0163384s --> f=61Hz

Un saludo