Indice |
INTRODUZIONE
Piattaforme come Arduino hanno rivoluzionato l'approccio di molti all'elettronica, grazie soprattutto alla loro semplicità di utilizzo ed alla loro adattabilità. Uno dei punti di forza di queste piattaforme dal punto di vista dei nuovi utenti è senz'altro la mole inenarrabile di tutorial introduttivi disponibili in rete, i quali però presentano quasi tutti un difetto: dicono "cosa fare", ma non perché ciò abbia senso. Proprio da questa evidenza nasce la volontà di scrivere il presente articolo, che non intende solo proporre un (effettivamente banale, quantunque carino ed in un certo senso "natalizio") progetto elettronico, ma anche e soprattutto presentare a tutti i nuovi utenti di piattaforme come Arduino (ed in generale a chiunque voglia approcciarsi per la prima volta all'elettronica) un metodo di progettazione minimamente ragionato.
DI CHE PARLIAMO?
Il progetto che sarà presentato è estremamente semplice: un contatore binario che, comandato da un oscillatore ad onda quadra con frequenza variabile, provveda ad accendere e spegnere quattro LED. La sua realizzazione richiede i seguenti componenti:
1 Trigger di Schmitt (SN74HC14N)
1 Resistenza da 100kΩ
1 Trimmer da 100kΩ (Bourns 3386)
1 Condensatore da 10μF
1 Contatore binario su 4 bit (CD4029BE)
4 LED
4 Resistenze da 100Ω o 220Ω
Come "hardware", invece, basta disporre di un paio di breadboard, alcuni fili... ed ovviamente un alimentatore: noi useremo gli appositi pin di un Arduino UNO, perchè adatti alla connessione con la breadboard, ma qualsiasi alimentazione a 5V va benissimo.
COSA C'È DIETRO, PARTE PRIMA: L'OSCILLATORE
Ok, ci siamo procurati tutti i componenti... ora, cerchiamo di capire cosa c'è dietro.
Intanto, una definizione: un trigger di Schmitt è un comparatore con isteresi, e cioè un circuito che - in linea di principio - confronta il valore che riceve in ingresso con una soglia (diversa se l'ingresso sta crescendo o decrescendo - da cui l'isteresi) ed in base al suo valore manda in uscita una tensione pari ad uno dei suoi estremi di alimentazione.
I comparatori possono essere invertenti, se ad una tensione crescente "sopra soglia" fanno corrispondere un'uscita pari all'estremo basso dell'alimentazione (e viceversa, ad una tensione decrescente "sotto soglia" fanno corrispondere un'uscita pari all'estremo alto dell'alimentazione), o non invertenti.
Con un simile componente, è possibile realizzare un oscillatore, ovvero un circuito in grado di generare un'uscita senza avere un ingresso esterno. Nello specifico, l'oscillatore che possiamo costruire è (come immaginabile dalla caratteristica appena vista) un generatore d'onda quadra. La realizzazione del nostro oscillatore è la seguente:
Analizziamo come funziona:
- Inizialmente, il condensatore è scarico. Questo vuol dire che al trigger (invertente, nel nostro progetto) viene fornito un ingresso low, da cui esso ricava un'uscita high, che è - a meno della caduta di tensione sulla resistenza - la tensione che va a caricare il condensatore.
- Appena ai capi del condensatore la tensione raggiunge il valore di soglia Vsh, l'uscita del trigger si porta al valore low, e di conseguenza il condensatore inizia a scaricarsi.
- Appena la tensione ai capi del condensatore arriva all'altra soglia Vsl, l'uscita del trigger cambia di nuovo, e ricomincia il ciclo.
Visualizzazione della tensione sul condensatore (in giallo) ed all'uscita dell'oscillatore (in azzurro), ottenuta con un oscilloscopio
Il periodo dell'onda quadra in uscita è determinabile con una semplice analisi, di cui vediamo direttamente il risultato:
Da cui possiamo determinare le dimensioni dei componenti che ci servono: con quelli proposti all'inizio, abbiamo un periodo nell'ordine dei secondi.
COSA C'È DIETRO, PARTE SECONDA: GLI ALTRI COMPONENTI
Ora, un rapido sguardo all'altro integrato che useremo: il contatore binario. Chi è costui? Semplice: il contatore binario è un affare che conta. Nello specifico, essendo su 4 bit, il nostro contatore binario conta in base 16, e cioè da 0 a 15. Discutere la struttura elettronica del contatore binario non è importante per i nostri scopi, quindi limitiamoci ad evidenziare due dettagli importanti:
- Il contatore binario conta sulla base di un clock fornito dall'esterno, e solo se un apposito ingresso in logica negativa (e cioè, "acceso" se riceve un valore basso di tensione) è attivo.
- Il contatore può contare in su (0->15) od in giù (15->0). Noi lo faremo contare in su.
Passiamo ora ai LED: in estrema sintesi, si tratta di diodi in grado di emettere luce. Come funzionino fisicamente c'interessa poco (anche perchè spiegarlo adeguatamente richiederebbe una trattazione estesa di fenomeni complessi da descrivere): ciò che ci interessa è come usarli. Come tutti i diodi, un LED conduce se la tensione sul suo anodo - piedino lungo, nei LED che usiamo di solito - è maggiore di quella sul suo catodo, altrimenti non permette il passaggio di corrente (al netto di una microscopica corrente di perdita, detta corrente di saturazione inversa). In generale, la tensione corretta da applicare ai capi di un diodo LED affinchè non conduca eccessivamente non è costante: dipende dalla lunghezza d'onda della luce emessa dal LED, e va da ~1.5V a ~3V; per i nostri scopi, possiamo assumere una caduta di tensione di circa 2.2-2.5V, così da avere circa 15mA di corrente.
COSA C'È DIETRO, PARTE TERZA: SPECIFICHE
Ora, abbiamo visto più o meno i componenti di cui abbiamo bisogno.
Siamo al punto più importante: sappiamo cosa vogliamo fare, sappiamo come lo vogliamo fare... ma funzionerà, il nostro progetto?
Per poter rispondere a questa domanda, è fondamentale valutare l'insieme delle specifiche dei componenti. In generale, per il progetto di un sistema elettronico occorre verificare ad esempio che:
- Le correnti richieste al generatore siano effettivamente erogabili
- L'alimentazione fornita sia adeguata ai componenti utilizzati
- Ciascun componente riceva da altri componenti ed eroghi ad essi solo tensioni e correnti entro le specifiche di funzionamento
Per rispondere a queste richieste, occorre intanto capire che circuito intendiamo discutere; un possibile modello è il seguente:
Dove il contatore è generico (in questo momento, non ci interessa la sua reale piedinatura) e la resistenza variabile (che in sostanza, è il nostro trimmer) ci permette di variare la frequenza (si ricordi la formula vista prima).
Analizzare tutte le possibili questioni di specifiche in un articolo non avrebbe senso, quindi limitiamoci ad elencarne alcune:
DOMANDA: La corrente in uscita dal trigger è sopportabile dal componente?
RISPOSTA: Analizziamo un ipotetico caso "pessimo":
- Caduta di tensione su R1 e sul trimmer Vr = 5V: corrente di circa 50μA per ciascun componente
- Corrente assorbita dal contatore: qualche μA, stando al datasheet
- Massima corrente sul condensatore: non interessante per il nostro quesito
Quindi, in pratica, possiamo supporre una corrente in uscita dal trigger di circa 100μA. Guardando sul datasheet, ci rendiamo conto che va benissimo.
DOMANDA: il contatore eroga in uscita al più 5V di tensione. Va bene per i nostri LED?
RISPOSTA: Stando a quanto abbiamo visto prima, la tensione è eccessiva: ci occorre un resistore in serie ai diodi che a fronte di una caduta di tensione di circa 5 − Vf = 2.5V (abbiamo assunto Vf = 2.5V, perchè va bene più o meno per tutti i diodi) sia attraversato da circa 15-20mA di corrente. Usando la legge di Ohm, possiamo determinare la necessità di un resistore di circa 170Ω in serie a ciascun LED (in realtà questo valore non esiste, quindi possiamo usare resistori da 100Ω - facendo attenzione: la caduta di tensione ai loro capi sarà minore di quella voluta - o 220Ω).
DOMANDA: Arduino può erogare ~200mA di corrente e 5V di tensione; bastano per alimentare i due integrati?
RISPOSTA: Guardando i datasheet, ci rendiamo conto che entrambi richiedono in ingresso un paio di μA e possono essere alimentati a 5V, quindi Arduino è perfettamente in grado di alimentare il nostro circuito.
DOMANDA: L'uscita del trigger è a circa 5V (in realtà è inferiore, ma ragioniamo per eccesso)... va bene, per l'input del contatore?
RISPOSTA: Secondo il datasheet il contatore può sopportare fino a Vdd + 0.5V, quindi alimentando il contatore a 5V siamo perfettamente in regola.
FASE FINALE: REALIZZIAMO IL TUTTO
A questo punto, abbiamo un'idea abbastanza chiara della forma del nostro circuito. Guardando il datasheet del contatore per ricavarne la piedinatura, apprendiamo che possiamo ridisegnare il tutto così:
E apprendiamo inoltre (da un'apposita tabella a pagina 4 del datasheet) che gli ingressi 1,5, 8 (Preset enable, Clock enable, GND) vanno a massa e 9, 10 (Vdd, Binary/Dec) vanno connessi all'alimentazione: questo permetterà al nostro contatore di comportarsi come vogliamo.
A questo punto, dopo aver letto il datasheet del trigger per ricavare analoghi spunti (tra i quali si segnala la necessità di connettere tutti gli ingressi non utilizzati - sono i pin contrassegnati da una A, nel datasheet - a massa), possiamo montare il circuito, collegarlo ad Arduino, alimentare quest'ultimo e goderci il risultato: quattro LED che si illuminano in maniera molto natalizia per farci seguire la "conta del contatore" (la cui velocità, tra l'altro, possiamo cambiare usando il trimmer)!
NOTE CONCLUSIVE
Siamo giunti alla fine del progetto... un progetto semplice, ma senz'altro utile per chi si avvicina per la prima volta al mondo dell'elettronica, perchè permette di confrontarsi con tutti i quesiti che la progettazione di un (piccolo) circuito pone e, al contempo, iniziare ad usare Arduino realizzando qualcosa di carino.
Per brevità, si è volutamente tralasciata la spiegazione sull'utilizzo delle breadboard; per chi non avesse familiarità con questo oggetto, si consiglia la lettura di questa guida.
Un ultimo appunto: i calcoli, nella trattazione, sono stati ridotti al minimo e spesso approssimati o semplificati basandosi su considerazioni di caso pessimo... non è proprio così che un matematico li farebbe, ma va bene comunque: se supponiamo condizioni peggiori di quelle reali, ci prendiamo un margine di sicurezza che non fa mai male, soprattutto essendo i dati dei componenti in generale noti con approssimazioni non irrilevanti.
A margine, si ringraziano i miei colleghi L.P. ed E.Z. che hanno effettuato le misurazioni con l'oscilloscopio.
BIBLIOGRAFIA
[1] F. Maloberti: "Understanding microelectronics: a top-down approach", Wiley, 2011
[2] R. Perfetti: "Circuiti elettronici", Zanichelli, 2013
[3] A. Carullo, U. Pisani, A. Vallan: "Fondamenti di misure e strumentazione elettronica", CLUT, 2006
[4] Datasheet dei componenti: CD4029BE, SN74HC14N