Autor Tema: novato en pwm  (Leído 2393 veces)

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

Desconectado vasconinicolas

  • PIC16
  • ***
  • Mensajes: 124
novato en pwm
« en: 11 de Julio de 2008, 10:40:04 »
Hola muchachis, tengo una duda mas que puntual yo diría general. El tema es que quiro sacar por pwm una señal para controlar el contraste de mi lcd y no sabiendo usar mucho el pwm....... lo he logrado pero poniendo la instrucción dentro de un bucle while.
La pregunta es: hay alguna manera de definir el pwm y que éste queda funcionando para siempre? o sea, largando la señal modulada siempre independientemente que haga mi programa?
Un abrazo.
vasco
"No hacen ciencia los países ricos,
Son ricos los países por hacer ciencia"

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: novato en pwm
« Respuesta #1 en: 11 de Julio de 2008, 14:33:47 »
Por supuesto, para eso muchos PICs tienen módulos PWM hardware, que los configuras y listo, por una pata determinada del PIC te sacan la señal PWM, sólo tienes que preocuparte de cambiar el registro de ciclo útil cuando quieras más o menos tiempo en estado alto la salida PWM.

Lee en el datasheet por los módulos de captura y comparación/PWM (CCP/PWM), por ejemplo el 16F877 tiene dos CCP, el 16F628 un CCP y así, aparecen distintas configuraciones. Te comento estos dos uC porque ahora mismo tengo abiertos estos datasheets, pero hay montones de PICs con PWM.

Saludos
Reinier

Desconectado vasconinicolas

  • PIC16
  • ***
  • Mensajes: 124
Re: novato en pwm
« Respuesta #2 en: 12 de Julio de 2008, 17:04:00 »
Si el datasheet lo tengo pero habla en asm, yo quería algo en C. Lo he logrado poniendo

   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL); 
   setup_ccp1(CCP_PWM);   // Configure CCP1 as a PWM
   setup_timer_2(T2_DIV_BY_16, 127, 1);

al configurar los puertos y luego

   set_pwm1_duty(30);   // prendo la luz del display en intesidad alta
o
   set_pwm1_duty(10);   // prendo la luz del display en intesidad baja

seún la necesidad. Uso cristal de 20Mhz y anda al pelo.. De la salida (PIN_C2) voy a la base de un transistor BD137 a travez de una resistencia de 1K. El transistor tiene el emisor a masa y el colector a la pata K del LCD. La pata A del LCD a Vcc 5V.
De esta forma controlo la luz trasera del LCD (luz verde en mi caso) y usando uno u otro valor lo ilumino mas o menos... Los valores cerca de 0 atenuan el LCD, a medida que vamos hacia arriba prende mas y mas hasta el maximo en 127.
Es notable como baja el consumo alimentando la luz del LCD con tensiones pwm o simplemente con una resistencia a diferencia de alimentarlo directamente de la VCC.
Bueno espero que les sirva a otros-
Saludos.....
"No hacen ciencia los países ricos,
Son ricos los países por hacer ciencia"

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: novato en pwm
« Respuesta #3 en: 14 de Julio de 2008, 09:27:20 »
   setup_ccp1(CCP_PWM);   // Configure CCP1 as a PWM
   setup_timer_2(T2_DIV_BY_16, 127, 1);

Aquí configuras al PWM para que trabaje, así que lo hará siempre a no ser que se resetee el PIC o por software lo deshabilites. Esta parte fuera del while

set_pwm1_duty(30);   // prendo la luz del display en intesidad alta
o
set_pwm1_duty(10);   // prendo la luz del display en intesidad baja

Una vez que el PWM trabaja, con estas dos instrucciones basta para cambiar el ciclo útil. Esta parte tembién puede ir fuera de cualquier while, por ejemplo en una función que lo único que hace es cambiar el valor del PWM ante la necesidad de iluminar más o menos la LCD.

Saludos
Reinier

Desconectado pablo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 253
Re: novato en pwm
« Respuesta #4 en: 16 de Agosto de 2008, 00:18:26 »
Perdon que me prenda en este post, pero tengo una duda.
El PWM solo se puede usar en los pines especificos de cada pic o se puede armar algo con soft para utilizarlo en cualquier pin?

Muchas gracias.

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: novato en pwm
« Respuesta #5 en: 16 de Agosto de 2008, 02:20:51 »
claro que se puede hacer por software el pwm y en cualquier pin, lo que pasa es las funciones mencionadas arriba configuran registros que solo los micros con esta opcion por hardware tienen, esto lo especifica "This function is only available on devices with CCP/PWM hardware." ahora por software por supuesto que se puede, saludos

NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado pablo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 253
Re: novato en pwm
« Respuesta #6 en: 16 de Agosto de 2008, 11:36:17 »
Ok, muchas gracias.