Archivi categoria: Elettronica

Storica rivista "Nuova ELETTRONICA"

Vi segnalo un’altra rivista, ormai chiusa da molti anni, ma che ha dato molto alla divulgazione in Italia nell’ambito dell’elettronica: “Nuova ELETTRONICA“.



Nel sito di Roberto Bizzarri sono presenti tutti i 250 numeri della rivista, da quello di agosto 1969 a quello di settembre/ottobre 2012, nonché varie monografie su temi specifici, tutti liberamente scaricabili in PDF (il lavoro di scansione deve essere stato imponente…).

Ovviamente molti progetti saranno ormai superati dalle nuove tecnologie (nuovi componenti, circuiti integrati, schede programmabili ecc.), però dal punto di vista didattico è sempre una buona base.

Peccato che i kit che venivano venduti a supporto degli articoli non siano più disponibili, salvo che non li troviate su eBay da qualche vecchio amatore oppure in qualche negozio di elettronica (anche online) che ha ancora qualche rimanenza di magazzino.

Buona lettura!
Winking smile

Rivista "FARE ELETTRONICA"

E’ un periodo in cui faccio molte scoperte… questa volta tocca a una rivista di elettronica che non avevo mai visto prima: “FARE ELETTRONICA“.

FE


La rivista esiste ormai da parecchi anni e mette a disposizione i numeri dal 2003 al 2017 gratuitamente, previa iscrizione al sito. Per quanto riguarda l’iscrizione, vengono richiesti pochi dati e, nel mio caso, ho avuto qualche problema nel completare l’iscrizione. Infatti il mio cognome “DE GHETTO” contiene la parola “ghetto” che il sistema non gradisce in quanto (così dice) lo ritiene un tentativo di spam o qualcosa di simile. E’ stato sufficiente togliere lo spazio intermedio (“DeGhetto”) per riuscire a finire la procedura di iscrizione. Dopo l’accesso ho poi potuto correggere il cognome (solo il nome utente non è modificabile) e il successivo salvataggio è andato a buon fine.

Dai primi anni in cui sono disponibili ben 12 numeri per ogni anno (uno al mese) si passa purtroppo al 2017 dove di numeri ce ne sono solo 5 (ogni due mesi, saltando qualche mese).

Per quanto riguarda i numeri del 2018, il download non è ancora disponibile. E’ possibile che vengano pubblicati di volta in volta nel riquadro verde presente sulla parte destra della pagina (attualmente è scaricabile senza iscrizione il numero di giugno/luglio 2018) e poi, dopo il termine dell’anno, che vengano pubblicati nella sezione delle ANNATE (in questo caso 2018).

Comunque sia, attualmente sono scaricabili (salvo errori) 139 numeri della rivista, dal 2003 al 2017, tenendo conto che qualche numero (non molti) mi ha dato errore durante il download.

Buona lettura!

Winking smile


Rivista "The MagPi" gratuita

Ho appena scoperto la rivista “The MagPi” con articoli riguardanti Raspberry Pi (ovviamente in inglese): https://www.raspberrypi.org/magpi/.


image

Per 55 sterline è possibile ricevere per 12 mesi la rivista cartacea e, con il primo numero, anche il kit con Raspberry Pi Zero W. Alternativamente è possibile fare una sottoscrizione gratuita e in tal caso riceverete la rivista in PDF direttamente in casella e-mail (https://magpi.raspberrypi.org/subscribe).

Avanti, c’è posto!

Winking smile

Intelligenza Artificiale (AI) – un articolo interessante

Se siete interessati ad argomenti come computer quantico, intelligenza artificiale, servizi cognitivi (Cognitive Services), Machine Learning e così via, con le opportunità e i rischi che saranno affrontati in un futuro non molto lontano, vi consiglio di leggere questo lungo articolo:

https://www.ai4business.it/intelligenza-artificiale/intelligenza-artificiale-cose/

Spiega molto bene cos’è l’intelligenza artificiale e gli sviluppi della tecnologia in questo vasto campo.

AI

Una grande novità che mi rende felice!

Bene, ora posso dirlo: dopo la chiusura della rivista ioProgrammo (mi è dispiaciuto molto della perdita di questo ultimo baluardo cartaceo italiano della programmazione generalista, dovuto probabilmente a una gestione poco accorta) e dopo aver trascorso questi mesi un po’ bloggando, un po’ studiando (MOLTO studiando!), un po’ navigando in Internet alla ricerca di nuovi lidi, ora ho trovato un nuovo “porto” dove sfogare la mia creatività!

Vi annuncio quindi che ieri ho firmato il contratto di collaborazione con Futura Group, editrice tra l’altro della rivista “ELETTRONICA IN”, una realtà italiana che esiste ormai da qualche decennio e che secondo me fa un egregio lavoro nell’ambito dell’elettronica, ma anche della programmazione, seppure orientata ai sistemi elettronici, alle schede con microcontroller (per esempio Arduino e Raspberry) e ora anche IoT.


image

image


Io mi dedicherò a “progetti misti” di “elettronica didattica” + programmazione, con qualche progettino interessante.

Nel tempo farò uso di schede Arduino e Raspberry, di componenti e sensori di vario genere, di ambienti di sviluppo dedicati o di Visual Studio, di Windows IoT Core e magari anche del cloud Azure: di idee ce ne sono tante, mi serve solo un po’ di tempo per metterle in ordine e svilupparle.

Ringrazio di cuore chi mi ha dato fiducia, rispondendo immediatamente alla mia candidatura e fornendomi tutte le informazioni necessarie per iniziare questa nuova avventura. Spero di non deludere le vostre aspettative!

A presto! Winking smile

Ora sì! Installiamo l’aggiornamento 1801.27 dell’add-in "Arduino for Visual Studio" di Visual Micro

A quanto pare ci siamo!

In un mio post del 17 gennaio avevo scritto di non installare l’aggiornamento di Visual Micro dell’add-in “Arduino for Visual Studio”: infatti la documentazione ufficiale riportava le note di rilascio con il testo barrato e quindi non era dato sapere se l’aggiornamento fosse funzionante o se introducesse ulteriori problemi. Io l’avevo installato per un breve test e tutto sembrava funzionare ma…

Avviando Visual Studio 2017 vedrete apparire un messaggio di avvertimento sulla possibilità di aggiornare l’add-in:

2018-01-28_11-51-52

Potete scaricare il nuovo aggiornamento dalla pagina ufficiale, oppure utilizzare la finestra Notifications di Visual Studio 2017: in ogni caso vi consiglio di fare questo aggiornamento, non si sa mai.

Nell’aggiornamento sono inclusi i soliti bug fix, ma anche qualche caratteristica in più:


Release 1801.27 – 27th Jan 2018 – Visual Studio 2012-2017

  • Workaround Visual Studio VSIX bug that suddenly refuses to include newtonsoft.json dll in the VSIX. This is the reason the last release was retracted.
  • Copy sub folders when copying/cloning library examples
  • Support the creation of projects with name containing period (dot)
  • Allow libraries to compile even if they specify an incompatible architecture= in the library.properties settings. Many libraries specify only “avr” when they actually do work with other architectures. The supposedly incompatible libraries will not be displayed on “Add Library” menus but adding #includes will enable intellisense and compile.
  • Add clearer messages when library headers can not be resolved.
  • Code efficiency: Prevent various internal code exceptions with better validation
  • Fix: Upload failed for Boards that did not use a programmer or a com/ip port to upload when a user had never previously connected a COM port whilst using Visual Micro.
  • Fix: Certain STM32 cores (any core that included both a wpogram.h and an arduino.h) would fail to compile. Visual Micro will now use the “arduino.h” if it exists in preference to the “wprogram.h”. This applies to the automatic #include created in the temp folder during compilation. If neither file exists in the core folder then the “arduino.h” is #included (and would be expected to be resolved via the automatically discovered include paths).
  • NB: Visual Micro uses the standard C# SerialPort object in the serial monitor. Some USB/Serial drivers are specified for Windows10 Universal only will fail with C# in WinXp, Win7, Win8 and Win10. Confusingly the arduino ide java serial access works better with Win10 universal drivers than Microsoft’s own C# serial port object! Rule of thumb is use the correct driver for the OpSys that you are using.
  • Improved intellisense for SAMD boards (_asm_(x) and _Pragma(x))
  • Free Use: To keep support to a minimum, unlicenced users must update this software before Feb 2019


Buona installazione! Winking smile

Non fate l’aggiornamento dell’add-in "Arduino for Visual Studio"…

Se avete installato l’add-in “Arduino for Visual Studio” per poter programmare gli sketch direttamente nell’editor di codice di Visual Studio 2017 (o versioni precedenti), probabilmente in questi giorni avrete visto che tra gli aggiornamenti è prevista proprio la nuova versione di questo add-in e precisamente la Release 1801.14 del 14 gennaio 2017.

Se però aprite la pagina dedicata al progetto, dalla quale potete anche scaricare il pacchetto di installazione del prodotto, potrete vedere che le righe di descrizione (le “Release Notes”) della versione che ho appena indicato sono completamente barrate:


image


Non sembrano esserci delle spiegazioni sui motivi che hanno indotto il team di sviluppo a barrare la descrizione e quindi non è dato sapere cosa sia successo, anche perché l’aggiornamento dell’add-in che ho provato in prima persona è andato a buon fine.

Ho provato a creare una nuova applicazione Visual C++ > Visual Micro > Blink Led Example e sembra essere totalmente funzionante, compreso il supporto di IntelliSense per il completamento delle parole chiave del linguaggio e dei parametri delle istruzioni.

Vedremo prossimamente se l’add-in sarà ulteriormente aggiornato o se invece sarà sistemata la pagina di supporto.

Buon Arduino a tutti!  Winking smile


Auguri per il nuovo anno, con in regalo (a breve) la mia nuova app-libro "Garage40 Elettronica"

Visto che il 2017 sta volgendo al termine e il 2018 sta già bussando alle porte di un quarto di mondo, tra i buoni propositi che mi pongo per il nuovo anno è una nuova app-libro: “Garage40 Elettronica“.

Si tratta di una app con contenuti dedicati all’elettronica di base, ai componenti elettronici, ad Arduino, a Internet of Things (IoT), in futuro anche a Raspberry e alle connessioni con altre tecnologie: Microsoft Azure (cloud), Visual Studio (per la programmazione), il software Fritzing (per disegnare gli schemi delle connessioni) e molto altro.

Il progetto è appena stato avviato e sarà pubblicato tra pochi giorni al prezzo iniziale di 0,00 €, cioè gratuito!

Con l’aumentare dei contenuti, aumenterà anche il prezzo dell’app, ma chi l’avrà già “acquistata” al prezzo valido al momento dell’installazione non dovrà pagare nulla.

BUON ANNO, BUON 2018 A TUTTI!

NOTA – se volete sostenere economicamente questo progetto con una donazione (di qualsiasi entità, anche piccola), potete farlo attraverso la seguente pagina: https://www.produzionidalbasso.com/project/appbook-elettronica/

Arduino & C. – Un mio articolo su ioProgrammo

Volete creare un pianoforte elettronico con Arduino e Visual Studio?

Su ioProgrammo in edicola in questi giorni (“Novembre 2017”) c’è il mio articolo con programmazione in Visual Basic e in C# (ved. riquadro in basso a destra).

Buona lettura e buon divertimento! Winking smile

ioprogrammo_november2017

Arduino Raspberry & C. – Windows 10 IoT Core, un libro interessante

Da quando ho iniziato a interessarmi a questo grande mondo dei microcontroller, appena un paio di mesi fa, ho studiato, sperimentato e scritto molto.
Tra le tante cose che ho visto e letto, sicuramente un posto di rispetto va al libro”Windows 10 IoT Core: Il manuale per maker”, 479 pagine per 19.90 € (per Kindle), reperibile su Amazon.
Vi si parla di Wiring, Virtual Shields e appunto di Windows 10 IoT Core, per Arduino e per Raspberry Pi.
Leggetelo, ne vale la “pena” 😉

Arduino & C. – Massimo Banzi ha spiegato la situazione attuale di Arduino

Oggi voglio mettervi al corrente brevemente di cosa ha riferito Massimo Banzi (uno dei 5 fondatori originali di Arduino) all’evento “MAKER FAIRE NEW YORK 2017” (23 settembre 2017) in merito alla situazione attuale di Arduino e quale sarà lo sviluppo futuro.

Banzi conferma per Arduino alcuni concetti chiave: open source, sviluppo aperto, il sito ufficiale è http://arduino.cc (da arduino.org ci sarà un redirezionamento automatico a arduino.cc) e il lancio di due nuovi fattori di forma di ARDUINO MKR.

Il mondo Arduino quindi appare nettamente in movimento verso il futuro: nuove schede, novità all’IDE e al linguaggio degli sketch, cloud e molto altro.

Eccovi alcune foto dell’evento Winking smile.

Fonte delle foto: https://blog.adafruit.com/2017/09/23/state-of-arduino


Arduino & C. – Una ulteriore considerazione sulla sicurezza

In tema di “sicurezza”, leggendo una discussione in un gruppo Facebook dedicato ad Arduino ho imparato una cosa che non sapevo e che nemmeno mi era passata per la mente.

sicurezza

Chi fa sperimentazione come sto facendo io, con Arduino (o Raspberry) e vari componenti elettronici, ha la tendenza di seguire questo modo di operare:

  1. a scheda staccata dall’alimentazione, predispongo i sensori o gli attuatori con i relativi collegamenti via jumper, alla breadboard o direttamente alla scheda del microcontroller;
  2. scrivo lo sketch da caricare sulla scheda (perlomeno uno sketch iniziale, soggetto a varie correzioni);
  3. attivo l’alimentazione della scheda;
  4. invio lo sketch alla scheda e verifico i risultati: se c’è qualcosa che non va bene, stacco l’alimentazione e cambio le connessioni oppure modifico lo sketch e lo ricarico nella scheda, finché non ho ottenuto il risultato desiderato.

Bene, non so quanti di voi hanno considerato cosa succede tra il punto 3 e il punto 4 (io no!): quando attaccate la scheda all’alimentazione, se non è una scheda nuova (dotata di un semplice Blinker), la scheda ha una prima fase di assestamento dei componenti e poi, a regime, avvia lo sketch che avevate caricato in precedenza. Ne consegue che potreste dare corrente in uscita su un pin che invece, nella nuova configurazione, dovrebbe leggere un valore da un sensore. Questo significa che, inconsapevolmente, potreste fare la cosa sbagliata, con il risultato di danneggiare qualcosa.

Per operare nella massima sicurezza, quindi, ricordatevi sempre questi “precetti”:

  • Regola n. 0: la sicurezza prima di tutto; state lavorando con la corrente (anche se a basso voltaggio), quindi state attenti;
  • Regola n. 1: quando finite un esperimento con una certa configurazione di componenti, prima di spegnere la scheda caricate uno sketch vuoto come questo:

void setup() {
}


void loop() {
}

In questo modo, alla riaccensione avrete una scheda che non fa assolutamente nulla (ma nemmeno danni!), finché non caricate lo sketch su cui state lavorando.

Mi raccomando, massima attenzione a quello che fate!

Buon divertimento Winking smile

Arduino & C. – Il pulsante

Un pulsante è un tipo di interruttore meccanico temporaneo in cui abbiamo sostanzialmente due contatti e una molla.

Possono esserci due specie di pulsanti:

  • pulsante normalmente aperto (NO: normally open): nella posizione di riposo i contatti sono separati e quindi il circuito è aperto (non scorre corrente, quindi ha lo stato LOW), premendo il pulsante si attiva il contatto e si chiude il circuito (stato HIGH). Nel rilasciare di nuovo il pulsante, la molla spinge il pulsante verso l’alto e separa i contatti (stato LOW);
  • pulsante normalmente chiuso (NC: normally closed): nella posizione di riposo i contatti sono attaccati e quindi il circuito è chiuso (scorre corrente, stato HIGH), premendo il pulsante si disattiva il contatto e si apre il circuito (stato LOW). Nel rilasciare di nuovo il pulsante, la molla spinge il pulsante verso l’alto e unisce i contatti (stato HIGH). Forse è poco intuitivo il fatto che, premendo il pulsante, la tensione venga cambiata da HIGH a LOW  (premendo il pulsante togliamo l’alimentazione al circuito) ma i “giochi” si fanno nel codice dello sketch, dove possiamo cambiare completamente la logica del circuito.

Nel kit che ho acquistato ci sono 5 pulsanti normalmente aperti, quindi in stato di “riposo” non scorre corrente e lo stato è LOW.

Questo è un esempio di pulsante con il suo schema elettrico:

Pulsante


Il fatto che ci siano quattro terminali può confondere, ma come si vede dallo schema in realtà ci sono due sezioni con due piedini ciascuna.

La forma dei piedini aiuta a posizionare il pulsante sulla breadboard evitando così dei cortocircuiti. In particolare, possiamo posizionare il pulsante a cavallo del canale centrale, con l’angolo sporgente dei piedini rivolto verso l’alto e verso il basso. Nella seguente figura vi mostro la posizione e l’orientamento del pulsante (ovviamente il pulsante va premuto sulla breadboard per inserire i piedini nel fori, ma in questa immagine l’ho estratto dalla breadboard per vedere meglio l’orientamento).

WP_20170828_06_19_45_Pro

Cosa si può fare con un pulsante? Be’, parecchie cose… Lo possiamo considerare come un semplice sensore, anche se di tipo meccanico, perché rileva se il pulsante è premuto oppure se è in stato di riposo. E’ anche un dispositivo di input, perché lo possiamo premere in qualsiasi momento e attivare le funzionalità che abbiamo associato con la pressione del pulsante.

Per iniziare, proviamo a lavorare ancora con il classico LED, pilotato però dal pulsante: per realizzare questo esempio possiamo prendere l’esempio del LED e inserire il pulsante tra il resistore e il jumper che porta al pin di alimentazione, oppure possiamo inserirlo tra il led e il jumper che porta al pin GND o, ancora, tra il LED e il resistore. E’ assolutamente indifferente. Questo è il circuito:

Untitled Sketch_bb


Se premete il pulsante il LED si accende, quando rilasciate il pulsante il LED si spegne. Tutto bene, anche se non è molto agevole tenere accesa una luce rimanendo con il dito attaccato al pulsante… Inoltre questo circuito potrebbe essere realizzato anche senza utilizzare una scheda Arduino: basta una comune pila (ovviamente tenendo in considerazione i calcoli per dimensionare correttamente il resistore in base al voltaggio).

Non è un grosso problema, ma possiamo utilizzare questo circuito solo per fare quello per cui è stato costruito: il pulsante messo in serie con il LED vincola il passaggio di corrente e non ci consente di sfruttare il microcontrollore attraverso il software.

Per esempio, se volessimo fare in modo di far diventare questo interruttore temporaneo un interruttore permanente come potremmo fare? Con questo circuito non possiamo farlo, mentre il software di Arduino può fare molto per risolvere questo e molti altri problemi. Dobbiamo, infatti, trasformare una “programmazione elettrica” (cioè una “logica circuitale” o “logica hardware”) in una “programmazione software” o a microcontrollore (ovvero una “logica programmata”).

Per migliorare questa situazione dobbiamo fare due cose:

  • separare il circuito del LED dal circuito del pulsante
  • caricare uno sketch in grado di gestire il pulsante

Per quanto riguarda il circuito, ecco la nuova situazione:

Schema

Sembra complicato, ma in realtà potete vedere chiaramente che il circuito del LED è ora separato dal circuito del pulsante: sul lato sinistro abbiamo il LED e una resistenza da 220 Ohm, il tutto collegato a GND e al pin 8; sul lato destro abbiamo un pulsante collegato ai 5 Volt (alimentazione) e a massa attraverso un resistore da 10 kiloOhm. Dato che abbiamo anche bisogno di rilevare se il pulsante è premuto o rilasciato, abbiamo anche una connessione al pin 6.

Ora non resta che creare uno sketch adeguato al compito che ci siamo prefissati:

#define LED 8
#define PULSANTE 6
int premuto = 0;
int statoLED = 0;


void setup() {
   pinMode(LED, OUTPUT);
   pinMode(PULSANTE, INPUT);
   digitalWrite(LED, LOW);
   Serial.begin(9600);
}


void loop() {

   premuto = digitalRead(PULSANTE);
 
if (premuto == HIGH) {
    statoLED = 1 – statoLED;
    if (statoLED == 1) {
      digitalWrite(LED, HIGH);
      Serial.println(“LED acceso”);
    } else {
      digitalWrite(LED, LOW);
      Serial.println(“LED spento”);
    }
     delay(250);
 
}
}

In questo sketch ho prima di tutto definito gli identificatori LED e PULSANTE, associandoli al rispettivo pin di attivazione (8) o di rilevazione (6). Poi ho definito due variabili assegnando loro il valore iniziale zero: premuto per memorizzare la lettura dello stato del pulsante e statoLED per ricordare se il LED è acceso o spento.

Nella funzione setup() ho impostato la direzione di input o output dei due componenti, ho spento il LED nell’eventualità che fosse acceso e ho aperto il canale di comunicazione con la porta seriale indicando anche la velocità in baud (Serial.begin(9600)).

Nella funzione loop(), invece, ho prima di tutto letto lo stato fisico del pulsante, ottenendo zero se lo stato è LOW e 1 se è HIGH.

Subito dopo c’è un blocco condizionale (if) che verifica se il pulsante è stato premuto: se sì, viene modificata la variabile statoLED invertendone il valore. Questa variabile, secondo le mie intenzioni, deve avere solo due valori possibili: zero oppure 1. L’istruzione statoLED= 1 – statoLED non fa altro che invertire il valore tra i due valori possibili: se statoLEDera uguale a zero, 1-0 = 1 e quindi statoLED diventa 1, se statoLED era uguale a 1, 1-1 = 0 e quindi statoLED diventa 0. Semplice no?

A questo punto non mi resta che verificare se statoLED è uguale a 1, nel qual caso accendo il LED e scrivo nella porta seriale “LED acceso”; in caso contrario lo spengo e scrivo “LED spento”.

Alla fine ho inserito un’istruzione delay(250) per evitare che la pressione del pulsante venga interpretata più di una volta in modo ravvicinato, accendendo e spegnendo il LED in modo incontrollato. Infatti Arduino è più veloce della nostra capacità di premere e rilasciare istantaneamente il pulsante e quindi nel tempo in cui lo facciamo, seppur breve, Arduino legge più volte lo stato del pulsante e inverte ogni volta lo stato del LED. Un’attesa di 250 millisecondi dovrebbe risolvere questo problema (anche se voi potete volontariamente tenere premuto il pulsante per vedere il LED che lampeggia due volte al secondo (quattro cambi di stato: acceso, spento, acceso, spento).

Se provate a caricare lo sketch, vedrete che il tutto funziona proprio come previsto.

Per quanto riguarda la comunicazione con la porta seriale, ne parliamo meglio in un post specifico.

Bene, dopo aver visto l’utilizzo del pulsante, sia in modo diretto (elettrico), sia in modo programmato (software), chiudo qui e vi auguro un buon fine settimana!  Winking smile

Arduino & C. – Misurare con il multimetro digitale

In questo post inizierò a rispondere ad alcune domande che mi sono posto io stesso (anticipando forse le vostre domande) e cioè:

  1. perché ho scelto un resistore da 220 Ohm?
  2. come faccio a misurare la corrente che sta passando nel circuito?
  3. sono daltonico, non vedo bene i colori, come faccio a scegliere il resistore giusto?
  4. se ho un LED con due terminali della stessa lunghezza come capisco qual è l’ànodo e il càtodo?

Iniziamo dalla prima:

1. Perché ho scelto un resistore da 220 Ohm?

Bisogna fare un po’ di calcoli, utilizzando anche delle formule matematiche, anche se molto semplici.

Prima di tutto fissiamo alcuni valori (V = Volt; A=Ampère; mA=milli-Ampère cioè un millesimo di Ampère; Ohm o Ω è la misura di resistenza):

  • l’alimentazione di una scheda Arduino è solitamente di 5 V (può essere anche di 3.3 V, verificate!)
  • la corrente presente nel circuito non può normalmente superare i 20 mA (si potrebbe arrivare a 30-40 mA, ma si rischia di scaldare prima e di bruciare poi qualche componente)
  • un LED deve avere una corrente tra i 15 mA e i 20 mA
  • la caduta di tensione tra i terminali di un LED dipende dal suo colore. Normalmente si registrano questi valori di tensione: rosso = 1,8 V; giallo = 1,9 V; verde = 2,0 V; arancio = 2,0 V; bianco 3,0 V; blu = 3,5 V.

La formula fondamentale che mette in relazione tensione, resistenza e corrente è questa:

V = R * I

La formula che calcola la potenza (in senso fisico è il “lavoro” fatto dal sistema, ovvero il “consumo”) è questa:

P = V * I

cioè

P = R * I * I

(P = R * I^2)

Dato che sul circuito collegato ad Arduino non possiamo/vogliamo avere più di 20 mA, utilizziamo la formula fondamentale e la trasformiamo così:

R = V / I

Prendiamo ora i valori reali per un LED rosso e facciamo il calcolo:

R = (5 – 1,8) / 0,020 = 160 Ohm

Per un LED bianco, invece:

R = (5 – 3,0) / 0,020 = 100 Ohm

 

Commercialmente sono valori di resistori non disponibili, quindi potremmo utilizzare una resistenza da 180 Ohm o da 220 Ohm. Ovviamente più grande è il valore del resistore, più il LED apparirà meno luminoso, fino a spegnersi.

Certamente avrete notato che nel calcolo della resistenza abbiamo sottratto la tensione del LED alla tensione di alimentazione. In questo caso, avendo inserito nel circuito un LED che possiamo considerare come un secondo resistore, la formula diventa la seguente:

R = (Va – Vled) / I

Altra considerazione: perché prendiamo come tensione di alimentazione esattamente di 5 Volt? Come ho già detto, le schede Arduino sono alimentate a 5 V, tranne quelle che hanno un’alimentazione di 3,3 V (attenzione a fare i calcoli giusti!).

Se abbiamo qualche dubbio in merito, possiamo fare una misurazione più precisa con il multimetro digitale.

Come possiamo fare il calcolo della tensione? Procediamo in questo modo:

  1. stacchiamo l’alimentazione della scheda Arduino (cavo USB, o alimentatore, o pile): mai effettuare modifiche sulle connessioni con la scheda alimentata!
  2. togliamo tutto e lasciamo collegati due jumper (ponticelli o cavetti) sulla scheda: uno a GND e uno a uno dei pin (diciamo il numero 8)
  3. l’altra estremità dei due ponticelli non deve essere collegata
  4. prendiamo il multimetro digitale e colleghiamo il cavo nero a COM (cioè al “comune” o GND o “terra” o “massa”, vedete voi… sono tutti sinonimi); poi collegate il cavo rosso al connettore che riporta il simbolo V (Volt). Il voltaggio della scheda Arduino è basso, quindi non ci sono problemi, ma comunque il multimetro che ho io arriva a un massimo di 1000V in continua e 750V in alternata, quindi problemi zero. Se invece dovete misurare la corrente (Ampère) potreste avere connettori separati (come ho io) per correnti fino a 10A oppure per correnti più piccole (milli- o micro- Ampère) e quindi bisogna stare attenti…
  5. girate il selettore (di solito una “ruota” con tante indicazioni intorno, in base a tipo di misurazione e grandezza da misurare) e posizionatelo su Volt in corrente continua (indicato da una linea orizzontale diritta con sotto una linea tratteggiata), massimo 60V (6V potrebbe bastare, ma per prudenza usiamo un ordine di grandezza superiore)
  6. attaccate il cavo USB della scheda al PC per alimentarla (se la scheda ha ancora lo sketch precedente (quello con cui facevamo lampeggiare un LED), avremo una tensione che alternativamente va su e va giù, ma senza LED non lo vediamo, quindi misuriamo)
  7. con il puntale nero del multimetro tocchiamo il cavetto collegato a GND, poi con il puntale rosso tocchiamo l’altro cavetto collegato al PIN 8

Sul display del multimetro dovremmo vedere la misura che va da 0V a 4,98V e poi di nuovo a 0V e poi di nuovo 4,98V.

Per vedere la tensione stabile, carichiamo uno sketch che accenda stabilmente il PIN 8:


void setup() {
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
pinMode(8, OUTPUT);
digitalWrite(8, HIGH);
}


void loop() {


}

Ora riproviamo a misurare la tensione: dopo una breve attesa, nel mio caso ho visto salire il valore a 4,99V e poi a 5,00V, quindi sono sicuro che la tensione è corretta.

Per poter toccare i cavetti con i puntali in modo stabile, senza avere un contatto incerto, potete utilizzare dei “coccodrilli”, cioè delle piccole pinze a coccodrillo come nell’immagine seguente:

coccodrilli

Se non avete pinze a coccodrillo, potete utilizzare uno dei seguenti trucchetti:

  • inserire le due estremità libere dei ponticelli in altrettanti fori della breadboard, facendo però attenzione di non inserire fino in fondo. Con il puntale potete poi toccare la parte di filo che sporge dal cavo e dalla breadboard, senza che questo “scappi via”.
  • in alternativa potete utilizzare delle mollette da bucato. Winking smile

 

2. Come faccio a misurare la corrente che sta passando nel circuito?

A proposito di misure: ma quanta corrente c’è in Arduino se non mettiamo alcun carico (come un LED)?

Riprendiamo il multimetro e cambiamo la posizione del connettore rosso: da V al simbolo di mA e poi spostiamo il selettore su A (di Ampère) a corrente continua, massimo 600m. Risultato = 85,5A.

Abbiamo la tensione (5V), abbiamo la corrente (85,5A), quindi possiamo misurare quanta resistenza c’è sul circuito. Applichiamo la formula  V = R * I, ovvero  R = V / I, cioè  R = 5 / 0,0855 = circa 58 Ohm.

3. Sono daltonico, non vedo bene i colori, come faccio a scegliere il resistore giusto?

Io non sono daltonico, ma anch’io ho qualche problema nell’identificare i colori, specialmente quando scuri: posso confondere il marrone con il verde scuro o con il grigio scuro e qualche volta con il blu scuro, a seconda della tonalità del colore stesso e della scarsa luminosità ambientale, quindi questo problema me lo sono subito posto anch’io.

Anche in questo caso la soluzione è il multimetro. Basta procedere nel seguente modo:

  1. mettere il connettore nero su COM (cioè a massa): va sempre lì, quindi non lo dirò più!  Winking smile
  2. mettere il connettore rosso sul simbolo di Ohm (cioè la lettera greca òmega)
  3. spostare il selettore sulla zona del simbolo degli Ohm (dato che parliamo di resistenze che vanno da 220 Ohm a valori anche di milioni di Ohm, cioè MOhm, possiamo provare con il valore 600 Ohm)
  4. prendiamo un terminale del resistore (staccato dal circuito!) e lo stringiamo con il puntale nero (con il dito, con un coccodrillo, con una molletta…)
  5. poi prendiamo l’altro terminale del resistore e lo stringiamo con il puntale rosso

Probabilmente bisogna lasciare un po’ di tempo al multimetro per assestarsi: nel mio caso, con un resistore da 220 Ohm, la misura è partita da circa 250 Ohm per poi scendere, prima velocemente e poi molto più lentamente, fino a 222 Ohm. Forse, attendendo ancora un po’, sarebbe arrivata vicino ai 220 Ohm dichiarati, ma non è troppo importante: 2 Ohm di differenza è una misura veramente piccola che non cambia la sostanza.

4. Se ho un LED con due terminali della stessa lunghezza come capisco qual è l’ànodo e il càtodo?

Normalmente i LED hanno l’ànodo più lungo del càtodo, proprio per poterli riconoscere subito. In qualche caso potrebbero essere della stessa lunghezza, perché magari sono stati tagliati per poter saldare il LED su di un circuito stampato. Come facciamo quindi a riconoscere i due terminali?

Questa operazione è molto semplice e possiamo utilizzare il seguente metodo: create un circuito come quello del mio post del 4 settembre 2017 e inviate lo sketch Blink (modificato per attivare il pin appropriato) alla scheda Arduino. Se il LED si accende, funziona ed è posizionato correttamente; se non si accende potrebbe essere bruciato (oppure è invertito, nel qual caso basta invertire il LED per verificare se funziona).

Una volta accertato in quale posizione funziona, sapete che il terminale collegato all’alimentazione è l’ànodo, mentre il terminale collegato a GND è il càtodo.

Per finire

Attenzione a utilizzare l’ordine di grandezza corretto nei calcoli:

  • nelle formule la tensione si indica in Volt (V): se sono (per esempio) milli-Volt bisogna convertire il valore in Volt
  • nelle formule la corrente si indica in Ampère (A): se sono (per esempio) milli-Ampère bisogna convertire il valore in Ampère
  • nelle formule la resistenza si indica in Ohm: se sono (per esempio) kilo-Ohm bisogna convertire il valore in Ohm

Ovviamente voi potreste avere dei valori leggermente diversi: va benissimo (se non sono MOLTO diversi), perché non è detto che i valori siano assolutamente precisi, l’importante è che siano abbastanza vicini e che teniate sempre presente i calcoli che abbiamo fatto in questo post per adattarli alla vostra situazione reale.

Buona misurazione!  Open-mouthed smile

Arduino & C. – Il LED

Nei miei post precedenti ho utilizzato il LED della scheda per fare qualche esempio di programmazione, ma la domanda potrebbe sorgere spontanea: che cos’è un LED?

Dal dizionario di Google leggiamo questa descrizione: “Diodo a semiconduttore che al passaggio di corrente elettrica emette radiazioni luminose, utilizzato come luce spia o, nei display, per formare caratteri luminosi.”.

Se cerchiamo in Wikipedia, invece, leggiamo questa introduzione: “In elettronica il LED (sigla inglese di Light Emitting Diode) o diodo a emissione di luce è un dispositivo optoelettronico che sfrutta la capacità di alcuni materiali semiconduttori di produrre fotoni attraverso un fenomeno di emissione spontanea. Questa si origina dalla ricombinazione di coppie elettrone-lacuna secondo il principio del diodo a giunzione, caratterizzato dalla presenza nel dispositivo di due zone drogate differentemente in modo da avere portatori di carica diversi.

Leggendo, si potrebbero fare diverse facili battute su alcuni termini: “radiazioni luminose” (… allora è radioattivo?), “luce spia” (… ci spiano!) e le “zone drogate” (… LED=LSD?). Tornando seri, vediamo come è fatto veramente un tipico LED e qual è il suo simbolo elettronico utilizzato negli schemi:

SchemaLED

 

SimboloLED

 

Come potete vedere il LED è un componente polarizzato: l’ànodo deve essere collegato al polo positivo e il càtodo al polo negativo. In un tipico LED, l’ànodo (+) si riconosce perché è il terminale più lungo mentre il càtodo è quello più corto (-). In sostanza il terminale più corto va collegato al pin GND (che sta per “ground”, ovvero “terra” o “massa”, identificato comunemente con il colore NERO per esempio nel cavo e nella presa del multimetro o nelle breadboard), mentre il terminale più lungo va collegato al pin di alimentazione o che emette una tensione (come i pin da 2 a 13 di un comune Arduino, solitamente identificato con il colore ROSSO, sempre nel cavo e nella presa del multimetro o in altre situazioni come nelle breadboard). Questo è un LED reale, dove potete vedere anche i due terminali, uno più lungo (ànodo +) e uno più corto (càtodo –):

led

 

Uno dei maggiori vantaggi dei LED è il basso consumo. Infatti, rispetto alle vecchie lampadine a incandescenza, le lampade a LED hanno la stessa resa in Lumen con un consumo in Watt molto inferiore:

ConsumoLED

“Bene, ora che abbiamo fatto un po’ di teoria, che cosa si fa ora?”, potreste chiedermi… Si fa ancora pratica, naturalmente.

Nei post precedenti abbiamo utilizzato il LED della scheda (identificato con la lettera “L”), ma non abbiamo ancora realizzato nulla, abbiamo solo provato il funzionamento della scheda e un po’ di programmazione.

Ora vediamo come si accende un LED esterno alla scheda e, per fare questo, utilizzeremo quanto segue:

  • una scheda Arduino o un suo clone
  • il cavo USB per collegare la scheda al PC
  • un LED colorato a vostro piacere (non dovete colorarlo voi, di solito si comprano già di un colore specifico!)
  • un resistore da 220 ohm
  • due ponticelli (indichiamo così i cavetti di connessione dalla scheda alla breadboard o tra un punto e l’altro della breadboard stessa)

Ecco il circuito che ho preparato: CircuitoLED1

 

… e questo è lo schema (più visibile) fatto con Fritzing:

 

CircuitoLED1b

 

Le connessioni mi sembrano piuttosto chiare e semplici. Nella simbologia Fritzing il LED ha un terminale diritto (càtodo –) e un terminale con una parte piegata (ànodo +): di conseguenza il terminale diritto l’abbiamo collegato a GND, mentre l’ànodo l’abbiamo collegato al PIN 8, ma passando attraverso un resistore da 220 ohm (controllate i colori se non ci credete…). Il resistore può essere inserito sul lato dell’ànodo o sul lato del càtodo, non importa, basta che ci sia, altrimenti un eccesso di corrente può bruciare il LED (che poi è da buttare).

Per far lampeggiare questo LED (che ora è spento) basta ricaricare lo sketch Blink e cambiare il PIN attivo:

#define LED 8

void setup() {

   pinMode(LED, OUTPUT);
}

void loop() {

   digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}

Et voilà, abbiamo completato il nostro “Hello World” avanzato! (si fa per dire…). Questo è il risultato:

CircuitoLED1c

NOTA: se invertite il LED, cioè collegate l’ànodo alla massa e il catodo all’alimentazione, non succede nulla. Sì, intendo proprio dire che non succede nulla: non si guasta nulla, ma non si accende nemmeno il LED. Questo succede perché il LED è un diodo e quindi la corrente può scorrere solo in un verso, mentre l’altro verso è interdetto. Ecco spiegato anche il simbolo elettronico del LED (simile a quello del diodo): la freccia indica la direzione in cui scorre la corrente, indietro non si torna!

Nel prossimo post faremo un ulteriore approfondimento su come si fanno le misurazioni e come si può calcolare quale resistenza dobbiamo inserire nel circuito, ovvero: “perché abbiamo scelto un resistore da 220 ohm?”, ma anche “non ci capisco niente con il codice dei colori dei resistori, anche perché non si distinguono bene (magari per un problema di daltonismo ecc.), come faccio a usare il resistore giusto?”. Suggerimento: ci serve un multimetro.

Per questa volta abbiamo finito.

Buon lampeggiamento!  Winking smile