ATtiny85 – ghid practic pentru proiecte hobby
ATtiny85 este un microcontroler mic și ieftin din familia AVR, perfect pentru proiecte hobby în care nu ai nevoie de foarte mulți pini, dar vrei logica flexibilă a unui microcontroller.
1. Prezentare generală ATtiny85
ATtiny85 este un microcontroler pe 8 biți, cu 8 KB memorie Flash, 512 B RAM și 512 B EEPROM. În capsula DIP-8 are doar 6 pini de I/O utili, dar fiecare pin are mai multe funcții: intrări analogice, PWM, interfețe seriale simple etc.
- Arhitectură: AVR pe 8 biți
- Memorie Flash: 8 KB
- RAM: 512 B
- EEPROM: 512 B
- Pini I/O: 6 (PB0…PB5, cu PB5 folosit de regulă ca RESET)
- Timer-e: 2 timere/contorizatoare
- ADC: convertor analog–digital pe 10 biți, până la 4 canale
2. Tensiuni de lucru și frecvență
Pentru proiecte hobby, ATtiny85 se folosește cel mai des la 5 V, alimentat din USB, stabilizator liniar sau convertor buck. Conform fișei de catalog:
- Domeniu tipic de alimentare: 2,7 V – 5,5 V
- Frecvență maximă recomandată: până la 20 MHz la 4,5–5,5 V
- La tensiuni mai mici (ex. 3,3 V) frecvența maximă sigură scade (de ex. 8 MHz)
În majoritatea montajelor simple folosesc oscilatorul intern la 8 MHz sau 1 MHz, setat din fuse-uri. Avantajul este că nu mai ai nevoie de cristal extern și economisești spațiu pe placă.
3. Pinout ATtiny85 (varianta DIP-8)
Pinii principali ai lui ATtiny85 în capsula DIP-8 sunt:
- Pin 1 – PB5/RESET – pin de reset (poate fi folosit și ca I/O dacă dezactivezi reset-ul din fuse-uri, dar nu recomand pentru început)
- Pin 2 – PB3 – I/O digital, funcții speciale (ex. OC1B, ADC3)
- Pin 3 – PB4 – I/O digital, MISO pentru USI, ADC2
- Pin 4 – GND – masă
- Pin 5 – PB0/MOSI/AIN0/ADC0 – I/O digital, MOSI, PWM
- Pin 6 – PB1/MISO/AIN1/ADC1 – I/O digital, MISO, PWM
- Pin 7 – PB2/SCK/ADC1/T0/INT0 – I/O digital, SCK, întrerupere externă
- Pin 8 – VCC – alimentare (2,7–5,5 V)
Pentru proiecte hobby prefer să țin PB5 ca RESET pentru a putea reprograma oricând microcontrolerul fără adaptoare speciale.
4. Cum programăm ATtiny85 în Arduino IDE
O metodă foarte răspândită este programarea prin ISP, folosind un Arduino UNO ca programator.
4.1. Legături hardware
Conectăm UNO la ATtiny85 astfel:
- UNO 10 → ATtiny85 RESET (pin 1)
- UNO 11 (MOSI) → ATtiny85 PB0/MOSI (pin 5)
- UNO 12 (MISO) → ATtiny85 PB1/MISO (pin 6)
- UNO 13 (SCK) → ATtiny85 PB2/SCK (pin 7)
- UNO 5V → VCC (pin 8)
- UNO GND → GND (pin 4)
Este recomandat să pui un condensator de decuplare de 100 nF între VCC și GND cât mai aproape de cip, pentru stabilitatea alimentării.
4.2. Configurarea în Arduino IDE
- Încărcăm pe Arduino UNO sketch-ul ArduinoISP.
- Instalăm în Arduino IDE pachetul pentru plăcile ATtiny (de ex. ATTinyCore).
- În meniul Tools → Board alegem ATtiny25/45/85 și setăm:
- Chip: ATtiny85
- Clock: 8 MHz (Internal)
- Programmer: Arduino as ISP
- Din Tools alegem Burn Bootloader – de fapt se setează fuse-urile (clock intern, divizor etc.).
- După aceea încărcăm sketch-ul normal cu Upload Using Programmer.
5. Exemplu simplu: Blink pe ATtiny85
Cel mai simplu test este un blink pe un LED conectat la PB0 (pin 5) printr-un rezistor de limitare (de exemplu 470 Ω–1 kΩ).
// Exemplu Blink pentru ATtiny85
const uint8_t LED_PIN = 0; // PB0, pinul 5 la DIP-8
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
}
Dacă LED-ul clipește la 0,5 s, știm că alimentarea, fuse-urile și conexiunile ISP sunt corecte.
6. Exemplu practic: ATtiny85 în „Alarma de curent pro”
Un exemplu real de utilizare a lui ATtiny85 este proiectul „Alarma de curent pro”. Acolo microcontrolerul:
- monitorizează ieșirea unui comparator de tensiune;
- controlează două LED-uri de stare (prezență/absență tensiune);
- generează pattern-uri de beep la buzzer (de exemplu 3 beep-uri la revenirea curentului, beep continuu la cădere);
- gestionează logica de comutare în funcție de poziția unui întrerupător.
Codul complet și schema actualizată sunt disponibile pe pagina proiectului, acest articol având rolul de introducere generală în lucrul cu ATtiny85.
7. Bune practici în proiecte hobby cu ATtiny85
- Folosește întotdeauna condensator de decuplare de 100 nF între VCC și GND.
- Activează pull-up intern pentru butoanele conectate la masă – scutești rezistoare externe.
- Nu dezactiva pinul RESET din fuse-uri decât dacă e absolut necesar – reprogramarea devine mult mai dificilă.
- La sarcini inductive (relee, motoare) folosește tranzistoare de comandă și diode de protecție, nu lega sarcina direct pe pin.
- Testează întâi logica pe breadboard, apoi treci la PCB.
8. Idei de aplicații cu ATtiny85
Iată câteva idei de proiecte la care mă gândesc sau pe care le folosesc deja:
- temporizator simplu pentru LED sau releu;
- dimmer PWM pentru benzi LED;
- mic generator de ton pentru buzzer (alarme, notificări);
- mini termometru digital cu senzor de temperatură;
- controler pentru efecte luminoase decorative.
Pe măsură ce voi publica noi proiecte cu ATtiny85 pe electronicaHobby.ro, voi adăuga link-uri și aici, pentru a avea o colecție ușor de urmărit.