TinyDuino una scheda con AVR economica e semplice, ma evoluta e flessibile

Stampa
( 0 Votes ) 
Valutazione attuale:  / 0
ScarsoOttimo 
Categoria principale: Elettronica Categoria: Microcontrollori
Data pubblicazione
Scritto da Saposoft Visite: 3046

TinyDuino una scheda con AVR economica e semplice, ma evoluta e flessibile

Come usare un ATTiny45 con Arduino. Codice e schema elettrico. Ovvero TinyDuino il mattoncino universale.


TinyDuino

Questo articolo ha dei prerequisiti
1) programmatore AVR in grado di programmare ATtiny45
2) Discreta conoscenza linguaggio C per AVR
3) discreta conoscenza dei processori AVR

Questo articolo riprende ed espande quanto già pubblicato sul mio sito .

Alcuni mesi fa mi è venuta la fantasia di sostituire un circuito a base di CD 40xx e altra paccottiglia elettronica, che un amico mi aveva chiesto di duplicare, con un microprocessore; il circuito in questione era un timer flessibile con diversi input che avevano diversi effetti, che so… un input faceva partire il timer e bloccava altri input ecc ecc .
Cosa di meglio di un micro mi sono detto ?
Ora, dovete sapere che sono alcuni mesi che mi arrabatto con Arduino e una delle cose che ho capito con certezza è che gli AVR sono tutti dotati delle stesse istruzioni cambiano solo le periferiche disponibili … WOW mi sono detto, potrei usare uno di quelli piccoli a 8 piedi, costano una fischiata, occupano poco spazio, meno di un CD40xx e sicuramente sono più flessibili; se a tutto questo si aggiunge che sono pigro come un bradipo, l'idea di usare un ottopede con un paio (letterale) di resistenze per fare praticamente di tutto diventava improvvisamene geniale !
A questo punto non mi restava che creare una piattaforma Arduino con ATtiny45, vi giuro che è facilissimo aggiungere un processore al IDE di Arduino.
Per prima cosa mi sono girato il sito www.arduino.cc (consigliato caldamente) in lungo e in largo per vedere se c'erano indicazioni di cosa modificare/aggiungere per mettere un processore nuovo e ho scoperto che bisogna modificare il core che si trova sotto hardware/core e qui mi fermo, primo caveat: non replico quello che è scritto sul sito ufficiale di arduino , andate e leggete li .
Le librerie di Arduino sono geniali, in pratica rimappano gli usi più comuni delle periferiche del chip in funzioni che semplificano l'uso delle stesse, invece di trovarsi alle prese con bitshift e logiche booleane, basta leggere o scrivere un bit/porta al resto pensano le semplici funzioni.
Facciamo un esempio : voglio accendere il pin 2 digitale (Arduino) = il compilatore genera il codice per settare il data direction register per la porta giusta, e fa le operazioni di manipolazione dei bit per accendere il bit 2 della porta B (nel caso del ATTiny45) o del bit 2 della porta D nel caso di Arduino diecimila. Semplice no ?
A questo punto aggiungere un nuovo micro è solo questione di mappare le porte ed i pins nei posti giusti dentro ai files di Core. Ed è esattamente questo che ho fatto io , non proprio così semplice, perchè con gli ADC e i PWM ho dovuto tribolare 5 minuti per capire la differenza tra quelli dell' ATMega che fa girare Arduino ufficiale e quelli di ATTiny, ma non è stato difficile.
Purtroppo ATTiny manca delle comunicazioni seriali, niente UART integrata e niente I2C, ma si possono integrare con delle librerie esterne con Arduino. Non è molto grave anche questo data la destinazione d'uso di questo mini Arduino.
Gli usi sono diversi ad esempio, controllore per il fading di 1 o 2 lampade, usando 1 o 2 ingressi analogici e i due pin PWM  .

 

Lo schema elettrico

Il circuito è di una semplicità disarmante, non ho fatto un grosso sforzo per concepirlo, la parte più difficile in effetti è il layout, mantenere la scheda del pcb piccola e nel contempo affrire la più alta flessibilità di connessione è stata la cosa più difficile.

Esaminiamolo a partire dalla'limentazione: dal connettore  jack e dal capocorda entra la tensione non regolata, non supererei i 15V in ingresso anche se il datasheet del 78l05 parla di 36 V, il CI 78L05 regola la tensione a 5V necessari per il circuito, i condensatori da 0,1µF e 220µF bloccano le oscillazioni e livellano la tensione in uscita, NOTA BENE il circuito prevede di ricevere l'alimentazione da un alimentatore stabilizzato, tipo un mattoncino da muro, se ne trovano di switching regolabili a pochi euro.

Il Led ovviamente indica quando c'è tensione, la resistenza da 270 rivela le oscillazioni Delta dei raggi gamma .

Resta il processore e il C di disaccoppiamento alimentazione; il processore essenzialmente ha un pin di Vcc e uno di GND, tutto il resto è input/output.

 

Come avrete notato dalla foto in apertura non è stato montato il quarzo previsto dallo schema, in effetti è opzionale, il processore funziona benissimo anche con l'oscillatore RC interno di cui sono provvisti tutti gli AVR, in questo modo si risparmiano 2 pin che possono essere usati come periferiche, il timing non è precisissimo, ma per applicazioni non troppo critiche va bene, esiste anche un metodo che permette di calibrare l'oscillatore interno per ottenre precisioni più alte, diciamo che per applicazioni come pwm , timer con periodi superiori ai 500 ms e cose del genere il quarzo non serve.

Usando lo schema proposto si hanno 4 ingressi Analogici con risoluzione 10bit e massima tensione di ingresso 5 V blandamente protetti internamente al chip, non vi fidate e state attenti a cosa ci attaccate, 2 uscite PWM , e naturalmente 6 in/out digitali.

Non is possono ovviamente usare tutti insieme . Vedete lo schema dei pin qui sotto per vedere le alternative disponibili.

 

Qui sotto trovate le corrispondenze tra i pins di ATTiny 45 e gli equivalenti numero pin da usare con Arduino quando scrivete i programmi; ad esempio l'input analogico 0 è il pin 1 del chip.


E' lo stesso diagramma che trovate in attiny45/pins_arduino.c

 

 

Per programmare la board potete usare questo programmatore (è quello che ho costruito io all'inizio per programmare l'ATmega8 per il mio avr-doper)

Negli allegati ci sono sia i files per il Core (sorgenti C) sia i files per la scheda applicativa di riferimento.

********  Novità ******

Il Progetto funziona con Arduino 16 e Arduino 17  e dal 1-03-2010 funziona con Arduino 18

 

La cartella attiny45 va messa insieme agli altri core, a seconda di che versione avete cambia la posizione.

Dopo aver copiato la cartella bisogna modificare il file boards.txt, prendete la definizione completa di una board e dopo averla copiata modificate il nome della board con attiny45 in ogni posto dove compare il nome.



Applicazioni:


Io ci ho fatto il controller per una macchina automatica dispenser di etichette, con 2 sensori, uno di prossimità per sentire il pezzo che passa ed attivare il motore di trascinamento delle etichette ed una forchetta ottica per sentire quando l'etichetta è stata toltamente espulsa e fermare il motore. Facile ed economico.
La cosa veramente comoda è la disponibilità di una piattaforma economica ed infinitamente flessibile che si può personalizzare scrivendo poche righe di codice.




Sono ovviamente a disposizioni per chiarimenti e consigli.

Joomla 1.7 Templates designed by College Jacke