Arduino Standalone ATmega328: come costruire un circuito con il solo microcontrollore di Arduino

Spesso e bene, al termine della protipazione dei nostri progetti, ci possiamo trovare nella spiacevole situazione in cui lo spazio é limitato, pertanto la nostra scheda Arduino completa di connettore USB, microprocessore e tutte le porte, risulta troppo ingombrante. Non c’é qualche modo per risolvere il problema in modo elegante? Fortunatamente, la risposta é sì: possiamo ricostruire il progetto usando soltanto il microprocessore ATmega328 e pochi altri componenti. Vediamo come.

In questa guida vedremo quindi come sostituire a tutta la scheda di Arduino opportunamente programmata ai fini del nostro progetto, con un set limitato di componenti – cioe’ il microcontrollore ATmega328 – il dispositivo elettronico che e’ in grado di gestire segnali di ingresso e di uscita e possiede al suo interno un’intelligenza programmata da noi. Questa procedura può essere seguita avendo una qualsiasi scheda Arduino, anche compatibile, con socket – cioè dotata del connettore a incastro che permette la sostituzione del microcontrollore in caso di guasto (vedi riquadro rosso nella figura di seguito).

ArduinoUno_R3

Arduino UNO con microcontrollore ATmega328p e socket

Quando carichiamo il nostro Sketch dall’Arduino IDE, stiamo a tutti gli effetti programmando il microprocessore, e questo non ha assolutamente bisogno di funzionare insieme all’intera scheda che lo circonda.
A cosa serve tutto il resto allora? A semplificarci la vita. Infatti se non ci fosse tutta la circuiteria non potremmo:

  • Lavorare con la seriale per fare debug.
  • Usare alimentazioni superiori ai 5V.
  • Caricare i nostri sketch.

Una volta però che il microcontrollore è stato programmato e il nostro progetto funziona, possiamo staccare il micro dalla scheda e usarlo in maniera indipendente assieme a pochi altri componenti necessari a farlo funzionare. Il primo passo è rimuoverlo usando un cacciavite a taglio o meglio ancora delle pinzette – facendo molta attenzione, visto che i piedini potrebbero storcersi.

Atmega328p sciolto

Microcontrollore ATmega328p

Per capire che piedino fa cosa, ecco uno schema, il cui verso puo’ essere indentificato dalla mezza fossetta posizionato in alto sul micro.

F2SFHSDH3Z3V3P4.MEDIUM

Mappa dei pin ATmega328p

Come abbiamo fatto notare prima, mancano ovviamente la Vin e la porta USB per comunicare. L’MCU si attiva a 5V (con massimo assorbimento 200mA come da datasheet). Se poi capita che il nostro circuito abbia bisogno di una tensione diversa da 5V (i.e. una tensione maggior per pilotare dei motori, ad esempio), dovremmo usare un componente aggiuntivo per generare dalla tensione piu’ alta anche i 5V necessari all’MCU per funzionare. Per questo esperimento specifico potrebbe non servire, ma é bene mettere per sicurezza anche l’oscillatore al quarzo.

Ora che abbiamo capito dove vogliamo arrivare, tuffiamoci nel progetto d’esempio per capire in quale modo sia possibile generare un circuito equivalente!

Progetto d’esempio

Vogliamo realizzare un circuito per controllare la velocità di rotazione di un motore tramite potenziometro. Il motore è alimentato DC a 12V e pilotato da un transistor MOSFET. Ecco il fritzing con la vista breadboard:

Circuito con la scheda di Arduino

Il codice è il seguente:

Testato il circuito e verificato la sua funzionalità, lo scopo è replicarlo usando solamente l’MCU. Osserviamo il risultato e poi commentiamo:
microservo_bb
Il connettore in alto a sinistra porta l’alimentazione a 12V. I 12V vengono usati direttamente per alimentare il motore DC tramite il MOSFET. Un regolatore di tensione (denominato nella figura come LM7805) riceve in ingresso i 12V e genera i 5V per il microprocessore all’uscita. Due condensatori elettrolitici sarebbero consigliati all’ingresso e all’uscita del regolatore per filtrare e pulire l’alimentazione: qui sono omessi per semplicità.

Veniamo alla configurazione del microprocessore. Oltre all’MCU vera e propria, ci serve un cristallo da 16MHz, che forma un risuonatore con i due condensatori arancioni da 22pF. Il cristallo e’ attaccato a cavallo dei pin 9 e 10. Il condensatore blu, invece, è collegato tra l’alimentazione dell’MCU (pin 7) e la massa (pin 8) e serve per filtrare l’alimentazione del microprocessore stesso (viene chiamato condensatore di bypass). Il pin 1 va collegato ai 5V tramite una resistenza di pull up da 10k per disabilitare il reset al microprocessore.

In sostanza, quando dobbiamo riportare uno schema da Arduino in maniera equivalente al solo microcontrollore, sono necessari i seguenti accorgimenti:

  • Se la fonte di alimentazione é unica (12V) ma ne servono diverse per il progetto (e.g. 12V per motore e 5V per MCU), bisogna adottare uno o più regolatori di tensione
  • Aggiungere un condensatore di bypass all’alimentazione del microcontrollore
  • Acquistare un cristallo da 16MHz e due capacita’ da 22pF e collegarle opportunamente
  • Guardare il datasheet del microcontrollore e collegare i pin relativi alla componentistica del progetto in maniera identica

Chiaramente, se avete sbagliato qualcosa nel codice, non essendoci modo di programmare da solo il vostro microcontrollore, dovrete reinserirlo nella vostra scheda di Arduino e rifare tutto il procedimento. Quindi testate al meglio il vostro programma con tutta la scheda Arduino prima di estrarre il microprocessore!

Arduino Genuino Day 2016

arduino day 2016

La community di Ardulab é lieta di annunciare che Sabato 2 Aprille 2016 avrà luogo al TalentLab il grandissimo evento Arduino Genuino Day 2016 insieme al Sessantesimo anniversario della Fondazione OIC Onlus. Non per nulla il tema di quest’anno é La tecnologia al servizio della comunità delle persone fragili”. Una giornata ricca di presentazioni, innovazione e soprattutto divertimento che ha come tema principale la grande famiglia Arduino creatasi in tutti questi anni.

Si inizierà alla mattina con degli Scenari con soci ed esperti del settore della tecnologia per poi sfumare al pomeriggio con l’Arduino Teamwork, un momento dove tutti possono interagire con la Community di Ardulab e non solo, creando progetti anche semplici, adatti a chiunque, anche solo per i curiosi, con Arduino e in tutte le sue forme.

Il programma dell’evento : http://ardulab.it/day2016/

Cosa aspetti? Registrati gratuitamente all’evento cliccando qui.
Vi aspettiamo in tantissimi!

 

Un sabato speciale con Arduino

Non è mai un sabato qualsiasi quando ci si trova, ci si diverte e si torna a casa avendo imparato qualcosa!

Se c’è una cosa certa, una caratteristica esclusiva ed eccezionale, è che Ardulab è un gruppo eterogeneo, intergenerazionale e spontaneo: avanti tutta con il braccio robotico e alla prossima!

Demultiplexer: come espandere le porte PWM di Arduino

Arduino UNO è senza dubbio capace di grandi cose, può gestire segnali analogici e digitali, sia in Input che in Output ma la quantità di ingressi e uscite è limitata, e non è mai abbastanza. 😉

Quindi sorge spontanea una domanda molto intelligente fatta spesso da parte di chi frequenta i nostri corsi di Arduino:

Come posso avere più porte analogiche o digitali in ingresso o in uscita con Arduino UNO? E nello specifico, come posso pilotare una marea di LED usando un solo Arduino?

Se la risposta “acquista una scheda Arduino più potente e più costosa, come l’Arduino Mega” non ci soddisfa, siamo incuranti del pericolo e vogliamo risparmiare (per comprare milioni di LED, appunto), questo articolo fa al caso nostro!

Immaginiamo di voler gestire 8 Diodi LED, cambiando la loro luminosità. Il nostro Arduino UNO non é in grado di gestire 8 uscite PWM, poiché ne possiede solamente 6 (azz…) e ora?

In Elettronica esiste un integrato (in gergo un circuito integrato è tipicamente una specie di ragnetto piccolo dotato di un package da cui escono ingressi e uscite) chiamato Demultiplexer (DEMUX), il quale fa un mestiere molto semplice: prende un ingresso E e lo collega ad una delle 4 uscite sulla destra a seconda della parola digitale che c’è nei due ingressi in basso.

Il suo inverso é il Multiplexer (MUX) che converte tanti ingressi in un’unica uscita. Questa configurazione può risultare utile nel momento in cui si debbano ottenere molti segnali analogici in ingresso (quindi basterà un singolo pin Analog per gestire tutti gli ingressi!).

In questo articolo useremo un Demultiplexer a 8 canali (uscite a dx nella figura sopra) per gestire 8 Diodi LED con solamente 3 pin digitali (gli ingressi in basso nella figura sopra) e 1 pin PWM (l’ingresso a sx nella figura sopra).

La logica é semplice. Avendo a disposizione 3 pin digitali, ciascuno dei quali può assumere valori LOW e HIGH, le possibili combinazioni sono 2^3 = 8, pertanto con soli 3 ingressi riusciremo a gestire ben 8 uscite!

Per questo progetto ho usato l’integrato CD74HC4051E. Il datasheet lo si può trovare qui.

Il Fritzing é questo:

demultiplexer_bb

Sono stati usati i pin 7,8 e 12 come selettori e il pin 3 come pin di ingresso PWM comune.

Per selezionare un singolo LED serve impostare una combinazione di selettori appropriata.

Screenshot

Nota bene: il pin PWM é indipendente dalla selezione del LED. Infatti lui genera una tensione che sarà applicata al LED corrispondentemente scelto tramite i selettori!

Lo sketch di prova:

Il principale svantaggio dell’utilizzo di un Demultiplexer é l’asincronia di commutazione. Le uscite vengono selezionate in maniera consecutiva ed esclusiva, questo significa che una volta cambiata un’uscita tramite i selettori, le altre uscite del demultiplexer vengono collegate a massa, perdendo la loro tensione. Questo effetto é decisamente poco notabile se stiamo trattando dei LED, ma in progetti più elaborati, come il pilotoaggio di motori Servo, é più evidente.

Per risolvere questo problema, in parte, si possono percorrere due strade: o si ottimizza il codice, rendendo le commutazioni più veloci, oppure si utilizza un Demultiplexer con DC Switching maggiore (corrente che determina il tempo di commutazione).

ABC: Arduino Basic Connections

ABC – Arduino Basic Connections e’ un format proposto dal sito PighiXXX dove sono raccolte delle illustrazioni che mostrano come connettere Arduino alla stragrande maggioranza dei sensori e attuatori comunemente usati nel mondo dell’elettronica hobbystica. Si va da semplici LED, a display a 7 segmenti, a microfoni, memorie esterne al dotare i pin di Arduino di una protezione aggiuntiva alle scariche elettrostatiche ed errate connessioni.

Nemmeno a dirlo, vi invitiamo caldamente a far visita al sito 🙂

Screen Shot 2015-10-01 at 23.20.35

Arduino, Stampa 3D e Gardening: crea il tuo irrigatore automatico!!

Benritrovati amici!

Sono qui per annunciarvi che la pausa estiva è decisamente finita …ma non siamo rimasti con le mani in mano!! La Masseria Didattica di Polverara organizza un ciclo di incontri dal titolo “ArtigianOrto – tecnologie sostenibili per un orto domestico creativo” (qui volantino e qui iscrizione). Nemmeno a dirlo, pure noi diamo il nostro piccolo contributo a questa bellissima iniziativa.

All’interno del ciclo di 4 incontri, organizziamo una giornata all’insegna di Stampa 3D, Arduino e gardening, con lo scopo di farvi tornare a casa felici, sorridenti e soprattuto con un meraviglioso irrigatore automatico realizzato con la stampante 3D ed Arduino!!

Nello specifico, la giornata si dividerà in due parti. La prima riguarda la stampa 3D. Impararemo a fare modelling base di oggetti 3D, vedremo come funziona una stampante e creeremo svariate parti dell’irrigatore. Il pomeriggio è dedicato ad Arduino, e realizzeremo l’elettronica dell’irrigatore, che verrà alloggiata all’interno del supporto realizzato con la stampa 3D! Nozioni necessarie? Nessuna! Come al solito sarà nostra cura istruirvi e fornirvi tutto quello che c’è da sapere direttamente sul campo.

Cliccate qui per iscrivervi. L’iscrizione al workshop costa soli 35 euro. Poi avete la possibilità di decidere se portare a casa il prototipo di irrigatore (costo materiale: 50 euro) oppure semplicemente venire a seguire il workshop senza implicazioni “pratiche”.

Per ogni dubbio ..scrivetemi senza farvi problemi 😉

Matteo & Piraz

 

volantino_STAMPA web

Ardulab in diretta su Eta Beta Rai Radio1

11390167_10207156333331791_4226565930019425219_n

Questa mattina sono stato ospite di Eta Beta, su Rai Radio1 con Massimo Cerofolini. Abbiamo parlato della Mini Maker Fair di Torino, con Davide Gamba, e di stampa 3D con Laura Cassarà. Ovviamente non poteva mancare Arduino con le sue mirabolanti applicazioni!! Invito tutti ad ascoltare il podcast che si trova online a questo indirizzo. Grazie a tutti e soprattutto a Massimo per la chance di comunicare qualcosa che suscita sempre molto entusiasmo!

Disintegra il divertimento!

Ebbene si! Anche l’ultimo corso prima della pausa estiva si è concluso ..e che corso!! Per prepararci al meglio agli afosi pomeriggi di luglio, quando con le persiane abbassate per il caldo l’unica cosa che si vedrà veramente è la luce, abbiamo realizzato uno straordinario puntatore laser RF! Il sistema, pronto per essere spedito nello spazio in uno dei prossimi esperimenti europei, è costituito da una unità IMU montata sulla mano che rileva l’inclinazione, che viene poi spedita attraverso due moduli RF a 2.4GHz ad un set di due servo che movimentano il laser: il puntatore del futuro insomma!

Allegate un paio di immagini, non appena me ne arrivano di più prometto che aggiorno il post 😉

11206794_10152697093906148_1645692933982635345_o

2015-05-12 (1)

Chi siamo

Non c'è nulla di più bello che divertirsi all'insegna della creatività e della condivisione. L'Ardulab è una community di appassionati di Arduino nata all'interno del Talent-Lab ma aperta a tutti. I fini sono divertirsi, imparare e condividere quello che si sa con gli altri. Ardulab offre corsi, workshop, eventi e un luogo dove poter portare avanti i tuoi progetti in totale libertà. Buon divertimento!