- Componentes necesarios para programar ATtiny85 a través de USB
- Microcontrolador ATtiny85 IC - Introducción
- Cargador de arranque intermitente en ATtiny85 con Arduino Uno
- Diagrama de circuito para el programador ATtiny
- Instalación de controladores Digispark
- Configuración de Arduino IDE para programar ATttiny85
La familia ATtiny es una serie de uno de los microcontroladores más pequeños del mercado de AVR. Estos microcontroladores son capaces de utilizar muchas de las bibliotecas disponibles en la plataforma Arduino. El chip del microcontrolador ATtiny85 es un microcontrolador AVR de 8 pines y 8 bits. Su pequeño tamaño y bajo consumo de energía lo convierten en un complemento ideal para proyectos portátiles con poco espacio y bajos requisitos de energía. Pero colocar su código en el chip puede ser un desafío, ya que no tiene ninguna interfaz USB como las placas de microcontroladores.
En nuestro tutorial anterior, programamos el ATtiny85 usando Arduino Uno. Pero conectar Attiny85 a Arduino y usar Arduino como ISP puede ser difícil y llevar mucho tiempo. Entonces, en este tutorial, vamos a construir una placa de programación ATtiny85, para que podamos conectarla y programarla directamente como otras placas de microcontroladores.
Componentes necesarios para programar ATtiny85 a través de USB
- Arduino UNO (solo por primera vez al cargar el cargador de arranque)
- ATtiny85 IC
- Enchufe USB tipo A macho
- 3 resistencias (2 × 47Ω y 1 × 1kΩ)
- 3 diodos (2 x diodo Zener y 1 x diodo IN5819)
- Base IC de 8 pines
- Tablero de circuitos
- Cables de puente
Microcontrolador ATtiny85 IC - Introducción
El ATtiny85 de Atmel es un microcontrolador de 8 bits de bajo consumo y alto rendimiento basado en la arquitectura RISC avanzada. Este chip microcontrolador cuenta con memoria flash ISP de 8KB, EEPROM 512B, SRAM de 512 bytes, 6 líneas de E / S de uso general, 32 registros de trabajo de uso general, un temporizador / contador de 8 bits con modos de comparación, uno de alta velocidad de 8 bits temporizador / contador, USI, interrupciones internas y externas, convertidor A / D de 4 canales y 10 bits, temporizador de vigilancia programable con oscilador interno, tres modos de ahorro de energía seleccionables por software y debugWIRE para depuración en chip. El Pinout ATtiny85 se da a continuación:
La mayoría de los pines de E / S del chip tienen más de una función. La descripción de los pines ATtiny85 para cada pin se da en la siguiente tabla:
Pin No. |
Nombre de PIN |
Pin Descripción |
1 |
PB5 (PCINT5 / ADC0 / dW) |
PCINT5: Interrupción de cambio de pin 0, Fuente5 RESET: Restablecer Pin ADC0: Canal de entrada 0 de ADC dW: depurar E / S de CABLE |
2 |
PB3 (PCINT3 / XTAL1 / CLKI / ADC3) |
PCINT3: Interrupción de cambio de pin 0, Fuente3 XTAL1: Pin1 del oscilador de cristal CLKI: Entrada de reloj externo ADC3: Canal de entrada 3 de ADC |
3 |
PB4 (PCINT4 / XTAL2 / CLKO / OC1B / ADC2) |
PCINT4: Interrupción de cambio de pin 0, Fuente 4 XTAL2: Pin 2 del oscilador de cristal CLKO: Salida de reloj del sistema OC1B: Timer / Counter1 Compare Match B Output ADC2: Canal de entrada 2 de ADC |
4 |
GND |
Pin de tierra |
5 |
PB0 (MOSI / DI / SDA / AIN0 / OC0A / AREF / PCINT0) |
MOSI: Salida de datos maestros SPI / Entrada de datos esclavos DI: Entrada de datos USI (modo de tres cables) SDA: Entrada de datos USI (modo de dos cables) AIN0: Comparador analógico, entrada positiva OC0A: Timer / Counter0 Comparar salida Match A AREF: Referencia analógica externa PCINT0: Interrupción de cambio de pin 0, Fuente 0 |
6 |
PB1 (MISO / D0 / AIN1 / OC0B / OC1A / PCINT1) |
MISO: Entrada de datos maestros SPI / Salida de datos esclavos HACER: Salida de datos USI (modo de tres cables) AIN1: Comparador analógico, entrada negativa OC0B: Timer / Counter0 Comparar salida Match B OC1A: Timer / Counter1 Compare Match A Output PCINT1: Interrupción de cambio de pin 0, Fuente 1 |
7 |
PB2 (SCK / USCK / SCL / ADC1 / T0 / INT0 / PCINT2) |
SCK: entrada de reloj en serie USCK: Reloj USI (modo de tres cables) SCL: Reloj USI (modo de dos cables) ADC1: Canal de entrada 1 de ADC T0: Fuente de reloj del temporizador / contador0 INT0: Entrada de interrupción externa 0 PCINT2: Interrupción de cambio de pin 0, Fuente 2 |
8 |
VCC |
Pin de voltaje de suministro |
Cargador de arranque intermitente en ATtiny85 con Arduino Uno
Para programar el ATtiny85 sin Arduino, primero tendríamos que cargar un cargador de arranque en él usando una placa Arduino UNO, este es un proceso de una sola vez y una vez hecho esto, no necesitaremos la placa UNO nuevamente. Boot-loader es un programa especial que se ejecuta en el microcontrolador que debe programarse. Una de las formas más convenientes de cargar los datos de su programa en el microcontrolador es a través de un cargador de arranque. El cargador de arranque se encuentra en la MCU y realiza las instrucciones entrantes, y luego escribe la nueva información del programa en la memoria del microcontrolador. La actualización de un cargador de arranque en un microcontrolador elimina la necesidad de hardware externo especial (placas de programador) para programar el microcontrolador y podrá programarlo directamente mediante una conexión USB. El Digispark ATtiny85board ejecuta el cargador de arranque “micronucleus tiny85”, originalmente escrito por Bluebie. El cargador de arranque es el código que está preprogramado en Digispark y le permite actuar como un dispositivo USB para que pueda ser programado por Arduino IDE. También vamos a actualizar el mismo cargador de arranque digispark attiny85 en ATtiny85.
A continuación se proporciona una guía paso a paso para actualizar el cargador de arranque en ATtiny85 usando Arduino Uno y Arduino IDE:
Paso 1: Configuración de Arduino Uno como ISP:
Dado que el ATtiny85 es solo un microcontrolador, requiere la programación de un ISP (Programación en el sistema). Entonces, para programar el ATtiny85, primero debemos configurar Arduino Uno como ISP para que actúe como programador del ATtiny85. Para eso, conecte el Arduino Uno a la computadora portátil y abra el IDE de Arduino. Después de eso, vaya a Archivo> Ejemplo> ArduinoISP y cargue el código ISP de Arduino.
Paso 2: diagrama de circuito para flashear el cargador de arranque en ATtiny85:
El esquema completo para el cargador de arranque parpadeante en ATtiny85 se muestra a continuación:
Un condensador de 10 µf está conectado entre el pin Reset y GND de Arduino. Las conexiones completas se dan en la siguiente tabla:
Pin ATtiny85 |
Pin Arduino Uno |
Vcc |
5V |
GND |
GND |
Pin 2 |
13 |
Pin 1 |
12 |
Pin 0 |
11 |
Reiniciar |
10 |
Ahora conecte el Arduino Uno a la computadora portátil y abra Arduino IDE. Encuentre a qué puerto COM está conectado el Uno. En mi caso, es COM5.
Después de esto, descargue los archivos del cargador de arranque ATtiny85 desde el enlace proporcionado. Abra " Burn_AT85_bootloader.bat " y cambie el número de puerto COM "PCOM5" con cualquier número de puerto COM al que esté conectado su Uno. Guarde los cambios antes de salir.
Ahora mueva los archivos editados " Burn_AT85_bootloader.bat " y " ATtiny85.hex " a la carpeta raíz del IDE de Arduino (C: \ Archivos de programa (x86) Arduino).
Después de eso, haga clic derecho en " Burn_AT85_bootloader.bat " y seleccione "Ejecutar como administrador". Se tarda aproximadamente de 5 a 6 segundos en actualizar el cargador de arranque. Si todo salió bien, debería recibir este mensaje "AVRdude hecho. Gracias. Presione cualquier tecla para continuar…".
Con esto, el cargador de arranque se instala correctamente en el chip ATtiny85. Ahora es el momento de conectar USB con ATtiny85 para que podamos programarlo directamente. El diagrama de circuito para programar ATtiny85 a través de USB se muestra a continuación:
Diagrama de circuito para el programador ATtiny
El esquema está tomado del esquema de la placa Digispark ATtiny85, pero como nuestro objetivo es construir un programador para ATtiny85, solo estamos conectando el enchufe USB macho con ATtiny85.
El R3 es una resistencia pull-up que está conectada entre los pines Vcc y PB3 de IC, mientras que los diodos Zener (D1-D2) se agregan para una protección total de la interfaz USB. Después de soldar todos los componentes en la placa de perforación, se verá como a continuación:
Instalación de controladores Digispark
Para programar el ATtiny85 usando USB, debe tener los controladores Digispark instalados en su computadora portátil, si no los tiene, puede descargarlos usando el enlace que se proporciona arriba. Luego, extraiga el archivo zip y haga doble clic en la aplicación “ DPinst64.exe ” para instalar los controladores.
Una vez que los controladores se hayan instalado correctamente, conecte su placa ATtiny85 a la computadora portátil. Ahora vaya al Administrador de dispositivos en su Windows y el dispositivo ATtiny85 aparecerá en "dispositivos libusb-win32" como "Digispark Bootloader". Si no puede encontrar 'dispositivos libusb-win32' en el administrador de dispositivos, vaya a Ver y haga clic en 'Mostrar dispositivos ocultos'.
Configuración de Arduino IDE para programar ATttiny85
Para programar la placa ATtiny85 con Arduino IDE, primero, debemos agregar el soporte de la placa Digispark a Arduino IDE. Para eso, vaya a Archivo> Preferencias y agregue el siguiente enlace en las URL del Administrador de tableros adicionales y haga clic en 'Aceptar'.
Después de eso, vaya a herramientas> Tablero> Board Manager y busque 'Digistump AVR' e instale la última versión.
Después de instalarlo, ahora podrá ver una nueva entrada en el menú del tablero titulada 'Digispark'.
Ahora, vaya a archivo> Ejemplos> Conceptos básicos y abra el ejemplo de Blink.
Cambie el número de pin allí de LED_BUILTIN a 0.
Ahora regrese a Herramientas -> Tablero y seleccione el tablero " Digispark (Predeterminado - 16mhz) ". Luego haga clic en el botón de carga en Arduino IDE.
Nota: Conecte la placa ATtiny85 a la computadora, solo cuando el IDE de Arduino muestre un mensaje que diga "Complemento de dispositivo ahora".
Una vez que se carga el código, el LED conectado a ATtiny85 debería comenzar a parpadear.
Así es como puede construir su propia placa de programación Arduino ATtiny85. A continuación se muestra un video de trabajo del mismo. Si tiene alguna pregunta, déjela en la sección de comentarios. Para cualquier otra pregunta técnica, también puede iniciar una discusión en nuestros foros.