L'ATtiny85 è un piccolo microcontrollore a 8 bit progettato per compiti di controllo semplici dove spazio e consumo energetico sono importanti. Combina memoria, timer, input analogico e comunicazione seriale in un package a 8 pin. Questo articolo fornisce informazioni dettagliate sulle sue specifiche, pinout, struttura interna, impostazioni di alimentazione e clock, programmazione, circuiti e problematiche comuni.

Panoramica ATtiny85
L'ATtiny85 è un microcontrollore compatto a 8 bit progettato per semplici compiti di controllo in cui spazio, consumo energetico e numero di componenti devono essere mantenuti bassi. Il suo fattore di forma a 8 pin aiuta a ridurre la dimensione del circuito, la complessità del cablaggio e i costi del sistema, pur fornendo funzionalità di controllo di base.
Nonostante la sua lunga presenza sul mercato, l'ATtiny85 rimane ampiamente utilizzato grazie alla sua stabilità, alla solida documentazione e alla compatibilità con strumenti di sviluppo comuni. Opera su un'ampia gamma di tensioni e supporta molteplici opzioni di clock, rendendolo adatto a progetti compatti e a basso consumo che richiedono comportamenti affidabili e prevedibili.
Specifiche tecniche ATtiny85
| No. di spilli | 8 |
|---|---|
| CPU | AVR RISC 8-bit |
| Tensione di funzionamento | 1,8 a 5,5 V |
| Memoria del programma | 8K |
| Tipo di memoria del programma | Flash |
| RAM | 512 Byte |
| EEPROM | 512 Byte |
| Numero di canali ADC | 10-bit 4 |
| Comparatore | 1 |
| Pacchetti | PDIP (8 pin) SOIC (8 pin) TSSOP (8 pin) QFN/MLF (20 pin) |
| Oscillatore | fino a 20 MHz |
| Timer (2) | Timer a 8 bit |
| Alimentazione Potenziata al Reset | Sì |
| Timer per l'avviamento | Sì |
| Pin I/O | 6 |
| Produttore | Microchip |
| SPI | Sì |
| I2C | Sì |
| Timer Guardiano | Sì |
| Rilevamento di brownout (BOD) | Sì |
| Reset | Sì |
| USI (Interfaccia Seriale Universale) | Sì |
| Temperatura minima di funzionamento | -40 °C |
| Temperatura massima di esercizio | 125 C |
Configurazione del pinout ATtiny85

| Pin | Nome | Funzioni principali |
|---|---|---|
| 1 | PB5 | RESET, GPIO (se il fusibile cambia) |
| 2 | PB3 | GPIO, ADC |
| 3 | PB4 | GPIO, ADC |
| 4 | GND | Campo |
| 5 | PB0 | GPIO, PWM, MOSI |
| 6 | PB1 | GPIO, PWM, MISO |
| 7 | PB2 | GPIO, ADC, SCK |
| 8 | VCC | Alimentazione |
L'ATtiny85 è disponibile nei package PDIP-8 e QFN/MLF-20. Entrambi condividono lo stesso circuito interno, ma la disposizione dei pin differisce. Il package PDIP-8 espone solo i pin di base ed è più facile da usare nei circuiti di base, mentre il package QFN/MLF-20 include pin aggiuntivi contrassegnati come non connessi.
La maggior parte dei pin supporta più funzioni. Un singolo pin può fungere da ingresso o uscita digitale, leggere segnali analogici, generare un'uscita PWM o supportare la comunicazione seriale. Questo design multifunzione permette all'ATtiny85 di rimanere piccolo offrendo al contempo flessibilità. Il pin RESET può anche essere configurato come pin modificando le impostazioni del fusibile, anche se ciò rimuove la possibilità di reset esterno.
Diagramma a blocchi ATtiny85

L'ATtiny85 è costruito attorno a un nucleo di elaborazione AVR che esegue istruzioni memorizzate nella memoria Flash. La SRAM viene utilizzata per dati temporanei durante il funzionamento, mentre l'EEPROM memorizza dati non volatili che devono essere mantenuti quando viene interrotta la corrente. Il contatore di programma, il puntatore dello stack e i registri gestiscono il flusso delle istruzioni e l'elaborazione dei dati.
Le funzioni di temporizzazione sono gestite da due timer interni a 8 bit e da un timer watchdog. Il watchdog migliora l'affidabilità resettando il dispositivo se l'esecuzione normale del programma si interrompe. Un oscillatore interno fornisce il segnale di clock, e il controllo centralizzato del tempo sincronizza tutti i moduli interni.
Le operazioni di input e output sono gestite tramite registri di porta collegati direttamente ai pin esterni. Il dispositivo integra anche circuiti analogici come l'ADC e il comparatore. Tutti i blocchi interni sono collegati tramite percorsi dati condivisi, permettendo una comunicazione efficiente tra memoria, logica di elaborazione e I/O.
Impostazioni di alimentazione, clock e fusibile ATtiny85
• L'ATtiny85 include un oscillatore RC interno, che consente il funzionamento senza componenti di clock esterni.
• Fonti di clock esterne o cristalli possono essere utilizzati quando è richiesta una maggiore precisione di temporizzazione.
• Le impostazioni del fusibile controllano la sorgente di clock, il ritardo di avvio, il livello di rilevamento brown-out e il comportamento dei pin RESET.
• Operare a frequenze di clock più basse riduce il consumo energetico e il rumore elettrico.
• Il rilevamento di brown-out migliora la stabilità a basse tensioni di alimentazione ma aumenta leggermente il consumo di corrente.
Limiti GPIO ATtiny85 e funzionamento sicuro
• I pin GPIO sono destinati al controllo del segnale e non devono fornire alimentazione a carichi esterni.
• I LED collegati ai pin GPIO richiedono resistenze limitanti di corrente per prevenire danni.
• Motori, relè e altri dispositivi ad alta corrente devono essere controllati tramite transistor esterni o MOSFET.
• Possono essere attivati resistori interni di pull-up per semplificare le connessioni di pulsanti e interruttori.
• Tutte le tensioni GPIO devono rimanere entro limiti specificati per evitare danni permanenti.
ADC ATtiny85 e capacità analogiche
| Caratteristica | Descrizione |
|---|---|
| Risoluzione ADC | 10-bit |
| Canali di ingresso | Fino a 4 |
| Opzioni di riferimento | VCC o riferimento interno |
| Modalità speciale | Adc Sonno per la riduzione del rumore |
L'ATtiny85 dispone di un convertitore analogico-digitale integrato che misura i livelli di tensione variabili e li converte in valori digitali. La qualità della misurazione dipende da una tensione di riferimento stabile, connessioni di alimentazione pulite e un corretto instradamento del segnale. L'uso della modalità di sospensione ADC Noise Reduction aiuta a ridurre il rumore interno durante la conversione, migliorando la coerenza della lettura e l'affidabilità complessiva.
ATtiny85 Comunicazione Seriale con l'USI
L'ATtiny85 supporta la comunicazione seriale tramite un'Interfaccia Seriale Universale (USI). Questa interfaccia flessibile può essere configurata tramite firmware per operare in modalità SPI o supportare comunicazioni in stile I²C. Utilizzando un singolo blocco hardware condiviso, il dispositivo mantiene una dimensione compatta pur consentendo lo scambio di dati di base.
Poiché l'USI si basa fortemente sul controllo software, è necessaria una gestione attenta dei tempi. È adatto a compiti di comunicazione semplici e a bassa velocità, ma offre meno funzionalità di automazione rispetto alle periferiche SPI o I²C dedicate presenti nei microcontrollori più grandi.
Programmazione ATtiny85 tramite l'IDE Arduino

• L'ATtiny85 può essere programmato nell'IDE Arduino dopo aver installato un core compatibile con ATtiny.
• La programmazione viene effettuata tramite un programmatore USB o un Arduino configurato come ISP.
• Le impostazioni della scheda nell'IDE Arduino devono corrispondere alla velocità di clock e alla tensione di funzionamento selezionate dall'ATtiny85.
• I PIN utilizzati nel codice sono diversi dalla disposizione fisica dei pin, quindi devono essere controllati attentamente prima dell'impianto elettrico.
Circuito ATtiny85 Minimo Affidabile

Questo circuito utilizza solo i componenti base necessari per un funzionamento stabile. I pin VCC e GND forniscono alimentazione, permettendo al funzionamento corretto della logica interna. L'oscillatore interno controlla la temporizzazione, quindi non sono necessari componenti di clock esterni.
Un LED collegato tramite una resistenza di 47 Ω dimostra il controllo di uscita proteggendo sia il LED che il pin GPIO. Il pin RESET rimane accessibile per la riprogrammazione o il riavvio del dispositivo. Con pochissimi componenti esterni, questa configurazione fornisce una base semplice e affidabile per applicazioni di base.
ATtiny85 Problemi Comuni e Controlli Rapidi
| Problema | Cosa controllare o sistemare? |
|---|---|
| Fallimento del caricamento del codice | Controlla il cablaggio dell'ISP e conferma l'impostazione RESET fusibile |
| Tempismo sbagliato | Verifica la sorgente di clock selezionata e la configurazione del fusibile |
| Letture instabili dell'ADC | Migliorare la messa a terra e aggiungere condensatori di accoppiamento adeguati |
| Errori di comunicazione | Rivedi la configurazione e le impostazioni di tempistica USI |
| Perni in surriscaldamento | Minore corrente di carico e utilizzo di componenti driver esterni |
Conclusione
L'ATtiny85 unisce le funzionalità di controllo di base in una forma molto compatta. Le sue specifiche, le funzioni dei pin, i blocchi interni e le impostazioni di alimentazione spiegano come funziona nei circuiti reali. Con una corretta gestione GPIO, uso di ADC, configurazione seriale e un circuito minimo, l'ATtiny85 può essere compreso chiaramente e applicato in progetti stabili e a basso consumo.
Domande frequenti [FAQ]
Quanta energia consuma l'ATtiny85?
Il consumo di energia dipende dalla tensione di alimentazione, dalla frequenza di clock e dalle caratteristiche attive. Frequenze di clock più basse e disabilitazione delle periferiche inutilizzate riducono il consumo di corrente.
L'ATtiny85 ha bisogno di un orologio esterno?
No. L'ATtiny85 ha un oscillatore RC interno e può funzionare senza componenti di clock esterni. Un orologio esterno è necessario solo per una maggiore precisione di cronometratura.
Il pin RESET può essere usato come pin I/O normale?
Sì. Il pin RESET può essere configurato come GPIO usando le impostazioni del fusibile. Questo disabilita la programmazione standard dell'ISP e richiede una programmazione ad alta tensione per riprogrammare il dispositivo.
L'ATtiny85 può azionare direttamente i motori o i relè?
No. I pin GPIO ATtiny85 servono solo per il controllo del segnale. Motori e relè devono essere azionati tramite transistor esterni o MOSFET.
Perché le letture degli ADC di ATtiny85 sono instabili?
Le letture instabili dell'ADC sono solitamente causate da rumori di alimentazione o da una scarsa messa a terra. Aggiungere condensatori di accoppiamento adeguati e utilizzare la modalità ADC Noise Reduction migliora la stabilità.