En el siguiente tutorial veremos como miniaturizar nuestros proyectos de electrónica.
A veces necesitamos que las tarjetas que diseñamos ocupen el menor espacio posible y aunque algunas placas Arduino como los modelos NANO v3 y Pro Micro son de pequeño tamaño, puede suceder que apenas necesitemos unas pocas señales para controlar nuestros dispositivos.
Y es aquí donde entra en juego el protagonista de este tutorial. El ATtiny85, un pequeño pero potente microcontrolador programable, con 6 pines de E/S y múltiples funciones.
El código para el ATtiny85 lo escribiremos con el IDE de Arduino y para subirlo nos vamos a ayudar de un Arduino convencional. Para ello tan solo hay que montar el siguiente circuito.
A continuación veremos los pasos a seguir para programar un ATtiny.
1. Configurar Arduino como programador ISP.
Ir a Archivo → Ejemplos → Arduino ISP → Arduino ISP
Clic en Subir para cargar el código en el Arduino.
2. Instalar el gestor de tarjetas para ATtiny.
Ir a Archivo → Preferencias
Se abre la siguiente ventana.
En el cuadro Gestor de URLs Adicionales de Tarjetas introducir la siguiente dirección:
Clic en OK
Ir a Herramientas → Placa → Gestor de tarjetas
Se abre la siguiente ventana.
Hacer scroll hasta abajo del todo, seleccionar attiny by David A. Mellis y clic en Instalar. Cuando finalice la instalación clic en Cerrar.
3. Seleccionar el microcontrolador ATtiny85.
Ir a Herramientas → Placa → ATtiny25/45/85
En el menú Herramientas → Placa ya debemos tener seleccionado ATtiny25/45/85
Ir a Herramientas → Procesador → ATtiny25/45/85
Ir a Herramientas → Clock → Internal 1 MHz
4. Configurar Arduino como Programador ISP.
Ir a Herramientas → Programador → Arduino as ISP
Después de este último paso ya tenemos todo listo para programar el ATtiny85.
Vamos a cargar un sketch sencillo para comprobar que todo ha salido bien.
Ir a Archivo → Ejemplos → 01.Basics → Blink
El led que añadimos en el circuito programador nos servirá para verificar que el sketch se ha subido correctamente.
Pero antes de eso hay que cambiar el número 13 del pin donde está conectado el led, ya que el ejemplo es originalmente para Arduino, pero nosotros lo vamos a subir al ATtiny85.
Como se observa en el esquema, el led lo hemos conectado en la pata 5 que corresponde con el pin 0 (PB0).
El sketch debe quedar así:
void setup() {
pinMode(0, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(0, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Clic en Subir para enviar el sketch al ATtiny85.
Si todo ha ido bien, al finalizar la carga el led comienza a parpadear en intervalos de 1 s.
Ya sabemos programar un ATtiny85, ahora vamos con el objetivo final de este proyecto; controlar una pequeña tira de ledes RGB para hacer un rótulo luminoso.
Los materiales necesarios son: un trozo de metacrilato con la serigrafía que corresponda, una tira de ledes RGB y una base o soporte. La pieza de metacrilato la he mecanizado con mi CNC y la base del rótulo está impresa en 3D.
Introducimos la tira de ledes en la base dejando salir los cables por un lateral.
Colocamos el metacrilato encima y ya está montado el rótulo.
El funcionamiento de driver es muy sencillo.
El circuito se alimenta de una fuente de 12V y unos pocos cientos de mA, ya que al ser una tira de poca longitud el consumo es muy reducido. El regulador 7805 es para alimentar el ATtiny85.
El microcontrolador manda pulsos de 500 ms (tal y como hemos programado el sketch) a la base de los transistores BC546, estos entran en conducción y cierran el circuito a masa de cada uno de los ledes RGB, haciendo que se iluminen. Cuando coincidan dos o más colores darán lugar a vistosas combinaciones.
Como en ocasiones anteriores, la PCB la he fresado con mi CNC siguiendo este tutorial.
PCB lado pistas
PCB lado componentes
A continuación el código.
int t = 500;
void setup() {
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
delay(t);
digitalWrite(0, LOW);
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
delay(t);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
delay(t);
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
delay(t);
digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
delay(t);
digitalWrite(0, LOW);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
delay(t);
}
Tan solo hay que programar el ATtiny85 con este sketch tal y como hemos visto más arriba. Luego pinchamos el microcontrolador en el zócalo del driver para la tira de ledes RGB, lo alimentamos a 12V y listo.
En el siguiente vídeo puedes ver el resultado.
Espero que os haya gustado.
¡Hasta pronto!
Gracias a Robotic Arts por su vídeo Programar Un ATtiny85 Con Arduino