Una manera sencilla de lograr el efecto fading en los leds por medio de pic es por el PWM sin tener que usar circuito adicional o un DAC.
Sabemos que el voltaje promedio varia al variar el ancho de pulso de una señal de reloj como se observa en la siguiente imagen
Luego necesitamos variar el ancho de pulso de una señal de reloj.
Para una frecuencia entre 500Hz a 400Hz se consigue un buen dimmer para leds
Utilizamos un cristal de 10MHz que genera 10/4 = 2.5MHz para trabajar las instrucciones esto es 1/2.5 = 0.4us por instruccion , el loop de retardo utiliza como 5 pasos por 1 cuenta de decremento entonces
5*0.4us = 2us por un decremento en el loop de retardo
En total utilizamos 4FFh para la cantidad maxima total en tiempo alto y bajo del led
4FFh = 1279D
Por la demora en cada decremento
2*1279 = 2558us
Que vendria a ser el periodo de nuestra señal PWM
La frecuencia es 1/2558 = 390.93Hz
Ahora veamos el modo de generar el PWM:
De la imagen, A=FFh y B=04h entonces BA = 4FFh
Comenzamos con un retardo inicial "Y" aparte del pwm, en estado bajo para el led, luego iniciamos el pwm , de la imagen aumentamos "x" hasta que el tiempo en bajo sea cero luego decrementamos "x" hasta cero y nuevamente el retardo inicial "Y" para comenzar otra vez con el PWM, pero esto lo hacemos con numeros concatenados para obtener una cuenta mayor a FFh , y la dimmerizacion sea mas observable con un mayor efecto.
Todo el efecto de aumento y disminucion de luz se da en 1279*2558us = 3271682us = 3.2s tiempo de aumento y la disminucion es el mismo tiempo entonces todo el efecto se observara en 6.4s pero en las pruebas se observa que es alrededor de 5s.
El efecto puede ser observado en multisim y en proteus por medio del osciloscopio
Se aceptan comentarios y sugerencias para mejorar el efecto o pulir el codigo ya que recien estoy comenzando con pic aunque manejo un poco de assembler
Tambien sobre los calculos realizados.
gracias
Sabemos que el voltaje promedio varia al variar el ancho de pulso de una señal de reloj como se observa en la siguiente imagen

Luego necesitamos variar el ancho de pulso de una señal de reloj.
Para una frecuencia entre 500Hz a 400Hz se consigue un buen dimmer para leds
Utilizamos un cristal de 10MHz que genera 10/4 = 2.5MHz para trabajar las instrucciones esto es 1/2.5 = 0.4us por instruccion , el loop de retardo utiliza como 5 pasos por 1 cuenta de decremento entonces
5*0.4us = 2us por un decremento en el loop de retardo
En total utilizamos 4FFh para la cantidad maxima total en tiempo alto y bajo del led
4FFh = 1279D
Por la demora en cada decremento
2*1279 = 2558us
Que vendria a ser el periodo de nuestra señal PWM
La frecuencia es 1/2558 = 390.93Hz
Ahora veamos el modo de generar el PWM:
De la imagen, A=FFh y B=04h entonces BA = 4FFh
Comenzamos con un retardo inicial "Y" aparte del pwm, en estado bajo para el led, luego iniciamos el pwm , de la imagen aumentamos "x" hasta que el tiempo en bajo sea cero luego decrementamos "x" hasta cero y nuevamente el retardo inicial "Y" para comenzar otra vez con el PWM, pero esto lo hacemos con numeros concatenados para obtener una cuenta mayor a FFh , y la dimmerizacion sea mas observable con un mayor efecto.
Todo el efecto de aumento y disminucion de luz se da en 1279*2558us = 3271682us = 3.2s tiempo de aumento y la disminucion es el mismo tiempo entonces todo el efecto se observara en 6.4s pero en las pruebas se observa que es alrededor de 5s.
El efecto puede ser observado en multisim y en proteus por medio del osciloscopio
Se aceptan comentarios y sugerencias para mejorar el efecto o pulir el codigo ya que recien estoy comenzando con pic aunque manejo un poco de assembler
Tambien sobre los calculos realizados.
gracias
Adjuntos
Última edición: