Control de brillo - jorgerivera/ULCR-BINGE61 GitHub Wiki

UNIVERSIDAD LATINA DE COSTA RICA - BACHILLERATO EN INGENIERÍA ELECTRÓNICA - MICROCONTROLADORES
MICHAEL FALLAS LEÓN
Control de brillo, Introducción a Arduino
Descripción del Sistema

El sistema consiste en la implementación de un circuito que sea capaz de variar la intensidad del brillo de un LED al ajustar un potenciómetro de forma manual. El sistema está basado en el uso de un microcontrolador, al cual se le define la configuración respectiva para dicha función mediante la programación del mismo utilizando el lenguaje C++. Cada uno de los componentes a utilizar (LED y potenciómetro) serán asignados a uno de los diferentes pines (de entrada o salida dependiendo de su función y configuración necesaria) presentes en la tarjeta mediante la conexión física de estos pines con su componente respectivo. Esto permite que el pin asignado al potenciómetro funcione como entrada, el cual permita la lectura de un valor analógico; que posteriormente será guardado en una variable previamente definida y cuyo valor será tomado por el pin de salida conectado con el LED, en el cual el voltaje de salida del pin será proporcional a la lectura del valor analógico tomado del efecto de variar el potenciómetro; lo cual permitirá la variación en la intensidad del brillo del LED.

Listado de componentes requeridos

Para implementar el circuito controlador del brillo de un LED con un potenciómetro es necesario contar con:

  1. Tarjeta ARDUINO UNO (o equivalente).
  2. Cable USB para Arduino.
  3. Tarjeta Protoboard.
  4. Software IDE de Arduino.
  5. Diodo LED de cualquier color.
  6. Resistencia de 220/330 Ohms.
  7. Potenciómetro de 10 kOhms.
Esquemático o diagrama del circuito

El diagrama del circuito implementado se muestra a continuación:

Código del programa

const int led = 5; // Conexión del LED al pin 5

const int lectpot = A1; // Conexión del potenciómetro al pin A1

int brillo; // Variable tomada de la lectura del pot

int intled; // Variable de salida del brillo

void setup() {

pinMode (led, OUTPUT); // Se difine el pin del LED como salida

}

void loop() {

brillo = analogRead (lectpot); // Lectura del valor del pot

int_led = map(brillo, 0, 1023, 0, 255); // Se escala la lectura del pot

analogWrite (led, intled); // Selección pin de salida e intensidad

}

Descripción del programa realizado

En la primera sección del código del programa se declaran las variables y los pines a utilizar en el sistema para su correcto funcionamiento. Primeramente se realizan las conexiones de los pines del arduino que permanecerán constantes; en este caso led, que se le asigna el pin 5 de la tarjeta del Arduino; cabe destacar que este pin tiene la característica de ser PWM al igual que los pines 3, 6, 9, 10 y 11; por lo tanto se obtiene el mismo resultado si se utiliza cualquiera de estos pines y se configura de la forma correcta. Seguidamente se le asigna la conexión del pin A1 que tomará lecturas analógicas al variar el potenciómetro, a este se le asigna el nombre lectpot; es importante elegir un pin del Arduino que sea analógico como los pines del A0 al A5, ya que las lecturas realizadas serán analógicas y no digitales.

Posteriormente se crea una primera variable que tomará los valores analógicos al variar el potenciómetro, llamada brillo; y una segunda variable, intled, que se utiliza para cambiar la intensidad del brillo proporcionalmente a los valores leidos. Por otra parte en la sección void setup() se declaran los pines como entradas y salidas, ya que estos serán ejecutados solo una vez al correr el programa. En este caso el pin 5 se configura como una salida y el pin analógico A1 como una entrada, esta última configuración es opcional ya que los pines analógicos se declaran como entradas automáticamente.

Seguidamente en la sección void loop() del programa se introduce el código que correrá repetitivamente en el programa. Primeramente, se guardan los valores analógicos al variar el potenciómetro por medio de la función analógica analogRead(PIN) que ''lee'' el valor del pin, en este caso lectpot (A1); y lo escribe en la variable, brillo en este caso, que tendrá un valor entre 0 y 1023. Posterior a ello se escala el valor de la variable brillo, ya que solo se pueden utilizar valores entre 0 y 255 para ''escribir'' el valor leído a un pin, y se guarda en otra variable llamada intled; esto se logra por medio de la función map, que toma los valores del mínimo al máximo de la variable brillo, en este caso de 0 a 1023 y los ajusta a un rango de valores deseados, en este caso de 0 a 255, creando una función lineal entre los valores.

Finalmente se utiliza la función analógica analogWrite(PIN, STATE), la cual tomará el pin de salida, en este caso led(pin 5), y se le ''escribir'' el valor de intled, que tendrá valores entre 0 y 255.