Controlar el brillo del LED o atenuar un LED utilizando el microcontrolador 8051(89c51,89c52) no es una tarea fácil. Se requiere un conocimiento profundo de los temporizadores del microcontrolador 8051 y sus registros para atenuar o controlar el brillo del LED con el microcontrolador 89c51. Entonces, en este proyecto/tutorial te enseñaré cómo atenuar un LED con un microcontrolador 89c51.
|
¿Cómo controlar el brillo del LED?
Para atenuar y controlar el brillo del LED, debemos proporcionar diferentes niveles de señal de voltaje al LED. Cada nivel de voltaje se ilumina según el valor de voltaje. Por ejemplo, tiene un LED cuya potencia es de 5 voltios. Para desvanecer tenemos que suministrar un voltaje que oscila entre 0,1 y 5 voltios. A 5 voltios, el LED de entrada brillará con el brillo máximo. Disminuir el voltaje en 5 disminuirá el brillo del LED. Si aceleramos el ciclo de iluminación, el LED mostrará un efecto de desvanecimiento.
|
Método típico de control del brillo del LED
Una resistencia variable puede atenuar fácilmente un LED al variar la resistencia, si el LED está conectado en serie con él. Cambiar la resistencia aumenta o disminuye el voltaje de salida. Del mismo modo giramos el potenciómetro/resistencia variable del ventilador para acelerar o ralentizar la velocidad de giro del ventilador de techo doméstico. Con una resistencia/potenciómetro variable, es fácil controlar el brillo del LED. Pero cuando necesitamos controlar el brillo con el microcontrolador, parece una tarea difícil ya que no hay funcionalidad de resistencia variable en el microcontrolador.
¿Cómo atenuar el LED usando microcontroladores?
La mejor manera de atenuar el LED mediante microcontroladores es utilizar la técnica PWM (modulación de ancho de pulso). En la modulación por ancho de pulso, el ciclo de trabajo de la señal varía. El ciclo de trabajo es la relación entre el período activo y el período no activo. Para cada ciclo de trabajo, el voltaje de salida es diferente. El ciclo de trabajo del 100 % proporciona el voltaje máximo. Cuando el ciclo de trabajo disminuye del 100%, el voltaje de salida también disminuye. Aquí hay una imagen simple que aclara el juego del ciclo de trabajo.
Ciclos de trabajo PWM
Diagrama del circuito de desvanecimiento del LED 89c51
Conecté el LED al pin nº 0 del puerto 1 del microcontrolador 89c51. El LED está conectado en serie a una resistencia de 510 ohmios. El cristal de 11,0592 MHz se utiliza para suministrar reloj al microcontrolador 8051. El cristal está conectado al microcontrolador 8051 en paralelo a dos condensadores de 22 pf. El diagrama de circuito del proyecto se proporciona a continuación.
Desvanecimiento de LED mediante técnica PWM con microcontrolador 89c51
Generación de señal PWM (modulación de ancho de pulso) utilizando temporizadores de microcontrolador 89c51
Para generar PWM usando un microcontrolador, es necesario usar su temporizador. En el código siguiente utilicé temporizadores para generar PWM. Los microcontroladores de la serie 8051 tienen dos temporizadores integrados. Puedes usarlos como de 16 u 8 bits. Dado que 8051 es un microcontrolador de 8 bits, ¿cómo podríamos usar el temporizador en modo de 16 bits? Hay dos registros dedicados de 8 bits para temporizadores. Puedes combinarlos para usar el temporizador en modo de 16 bits. Estos registros son THx y TLx. Para obtener más información sobre los temporizadores 8051, los registros asociados a ellos y cómo utilizarlos, simplemente siga un breve tutorial.
¿Cómo utilizar los temporizadores internos del microcontrolador 8051 (89c51,89c52)?
Estoy usando el Timer-0 del microcontrolador 89c51 en modo de 16 bits. Son dos variables más importantes en mi código. Son alto-bajo y h1-l1. alto-bajo está asociado con el período alto de la señal y h1-l1 está asociado con el período bajo de la señal. high y h1 están asociados con el registro TH0 de 89c51. Estoy generando 20 ondas diferentes para lograr PWM. 20 ondas diferentes significan 20 ciclos de trabajo diferentes. En el código, un bucle for se ejecuta 20 veces, la lógica del ciclo de trabajo se coloca en este bucle for. Inicialmente, el ciclo de trabajo es bajo durante un pequeño período y luego aumenta progresivamente hasta el 100%. De hecho, los temporizadores se cargan con 20 valores diferentes y funcionan con 20 valores diferentes, pero al mismo tiempo el temporizador funciona con un único valor.
En el código inicialmente TH0 se carga con 0xFF(alto) y TL0 con 0xFF(bajo), esta combinación es para una señal alta. El temporizador funciona con esta combinación 100 veces y al mismo tiempo para señal baja TH0 se carga con 0xEB(h1) y TL0 0xFF(l1). TH0 está cargado con 0xEB porque inicialmente queremos una señal baja durante un período prolongado. Ahora, cuando se ejecuta este bucle, la señal de ondas altas aumenta y la señal de ondas bajas disminuye. Debido a lo cual recibimos una señal PWM como salida en el pin y podemos ver cómo el LED se desvanece y el brillo aumenta y disminuye continuamente.
Nota : 0xEB da un espacio de 0xFF-0xEB(hexadecimal)=20(decimal). Por lo tanto, estamos aumentando y disminuyendo nuestros niveles de señal por igual en ambos lados (alto y bajo). h1 aumenta de 0xEB y pasa a 0xFF después de 20 incrementos y el valor alto disminuye de 0xFF a 0xEB después de 20 incrementos. Puede aumentar la frecuencia PWM utilizando un cristal de alto valor.
Descargue el código del proyecto y el archivo HEx. El código está escrito en lenguaje C y se utiliza el compilador keil para compilar el código. La carpeta también contiene la simulación del proyecto. La simulación se realiza en Proteaus 8.0. Por favor danos tu opinión sobre el proyecto.
Led desvanecimiento con microcontrolador 89c51