Archivi categoria: elettronica

Arduino UNO R4 WiFi – DAC – generazione di onde sinusoidali, quadre e a dente di sega

Una delle nuove caratteristiche presenti in entrambe le schede Arduino Uno R4, Minima e WiFi, è l’inclusione di un singolo DAC a 12 bit. Questo può generare tensioni di uscita discrete da 0 a 5 volt. Poiché questa funzionalità può essere di estremo interesse nelle attività di laboratorio di Elettronica ne indico di seguito il principio di funzionamento per sviluppare future esercitazioni.

Principio di funzionamento

Un DAC, o Convertitore Digitale-Analogico (in inglese: Digital-to-Analog Converter), è un dispositivo che converte un valore digitale (in binario) in un valore analogico (segnali continui che possono assumere un’infinità di valori all’interno di un intervallo).
Si tratta dell’operazione inversa di quella eseguita da un ADC, o Convertitore Analogico-Digitale, che converte un segnale analogico in una rappresentazione digitale.

Il processo di conversione avviene in tre fasi:

  1. lettura in input dei dati digitali,
  2. conversione in analogico
  3. output del segnale analogico

Il DAC riceve in input un segnale digitale, che è rappresentato da una serie di valori binari (0 e 1), l’elettronica del DAC consente successivamente di convertire i valori binari in un segnale di output analogico che può essere utilizzato per pilotare dispositivi analogici come altoparlanti, motori, o altre apparecchiature che necessitano di un ingresso analogico.

Dal punto di vista pratico un DAC può essere utilizzato per creare un’uscita analogica a partire da un valore digitale utile per molte applicazioni, ad esempio per generare forme d’onda audio, per pilotare dispositivi che richiedono un input analogico, o per creare segnali di tensione variabile. Ad esempio nei sistemi audio un DAC converte i segnali audio digitali (come quelli presenti nei file MP3 o nei CD) in segnali analogici che possono essere riprodotti attraverso altoparlanti o cuffie.

Per semplificare ulteriormente nell’utilizzo con Arduino UNO R4, immaginate di avere un valore digitale che varia da 0 a 4095 (rappresentando un range di 12 bit). Un DAC potrebbe convertire questo valore in una tensione che varia, ad esempio, da 0V a 5V. Quindi, se il valore digitale fosse 512 (circa metà del range), l’uscita del DAC potrebbe essere di circa 0,6V.

Vediamo un esempio pratico.

Lo sketch che segue genera una forma d’onda sinusoidale o, meglio, una forma d’onda sinusoidale “simulata”. La frequenza della forma d’onda sinusoidale viene controllata da potenziometro.

Utilizzeremo un oscilloscopio per visualizzare l’onda sinusoidale, il collegamento è piuttosto semplice, abbiamo bisogno di un potenziometro lineare con una resistenza di 5 KOhm o superiore, io ho utilizzato un potenziometro da 10 KOhm.

La sonda dell’oscilloscopio deve essere connessa al pin A0 che viene usata come uscita del DAC. Il potenziometro ha il pin centrale connesso ad A5 (ingresso del DAC), un pin laterale connesso a 5V sulla scheda e l’altro pin laterale connesso a GND sulla scheda.

Se non possedete un oscilloscopio potete inviare l’output ad un amplificatore audio in modo che possiate ascoltare la tonalità generata, ricordate però che se procedete in questo modo bisogna assicurarsi che il controllo del volume sull’amplificatore sia al minimo, dopo di che lentamente aumentate il volume.

Il codice indicato di seguito è tratto dall’esempio di riferimento sul sito Arduino e all’interno degli esempi dell’IDE su cui ho inserito i commenti tradotti in italiano e fatto una piccola correzione.

La spiegazione del funzionamento la trovate nei commenti.

// Prof. Maffucci Michele
// Arduino UNO R4 Digital-to-Analog Converter (DAC)
// Sketch di esempio tratto da: https://docs.arduino.cc/tutorials/uno-r4-wifi/dac/

// libreria per la generazione di forme d'onda analogiche
#include "analogWave.h"

// Crea un'istanza della classe analogWave, usando il pin DAC
analogWave wave(DAC);

int frequenza = 10; // variabile intera che conterrà la frequenza rilevata

void setup() {
Serial.begin(115200);
// pinMode(A5, INPUT); // non necessaria perchè ingresso analogico
wave.sine(frequenza);
}

void loop() {
// legge un valore analogico dal pin A5 e lo mappa nell'intervallo 0 - 10000 Hz
frequenza = map(analogRead(A5), 0, 1024, 0, 10000);

// Stampa l'aggiornmento dell frequenza impostata sulla serial monitor
Serial.println("La frequenza e' " + String(frequenza) + " hz");

// Imposta la frequenza del generatore di forma d'onda sul valore aggiornato
wave.freq(frequenza);

// aspetta un secondo prima di ripetere la successiv rilevazione
delay(1000);
}

Volutamente ho lasciato commentata nel setup() la riga di codice in cui viene impostato il pinMode del pin A5 perché non è necessario inizializzare un pin Analogico, nell’esempio originale invece viene inizializzata.
A tal proposito per chi inizia con Arduino consiglio la lettura della guida: “Errori comuni nell’uso di Arduino – confondere pin analogici con pin digitali“.

Il risultato sarà il seguente:

E’ possibile quindi generare forme d’onda non solo sinusoidali, la funzione wave permette di impostare:

  • sine – onda sinusoidale
  • square – onda quadra
  • saw – onda a dente di sega

sarà sufficiente sostituire wave.sine(frequenza) presente nella sezione setup() rispettivamente con:

  • wave.square(frequenza);
  • wave.saw(frequenza);

Onda quadra:

Onda a dente di sega:

Buon Making a tutti 🙂

Lezione 2 – Corso di Elettronica Creativa con Arduino Sensor Kit

Come ormai tutti sappiamo un LED si presenta come un piccolo componente elettronico che emette luce quando attraversato da corrente elettrica. I LED sono molto usati nella vita di tutti i giorni in vari dispositivi come lampadine, schermi di telefoni e computer, telecomandi, e molto altro.

Immaginate il LED come una lampadina molto piccola, ma molto più efficiente ed ecologica. A differenza delle lampadine tradizionali, che producono luce riscaldando un filamento metallico, i LED producono luce attraverso un processo chiamato “elettroluminescenza”. Questo processo avviene quando la corrente elettrica passa attraverso un semiconduttore (il materiale di cui è costituito il LED) e lo stimola a emettere luce.

Un po’ di storia

Nel corso del primo Novecento, l’ingegnere inglese Henry Joseph Round fece una scoperta rivoluzionaria: l’elettroluminescenza, ovvero la proprietà di certi materiali di emettere luce quando attraversati da corrente elettrica. Da questa scoperta, nascono i LED acronimo di Light Emitting Diode (Diodo a Emissione di Luce), diodi specializzati nell’utilizzare tale fenomeno. Il primo LED, operante nell’infrarosso, venne introdotto nel 1961 e ancora oggi è ampiamente utilizzato in dispositivi come telecomandi e fotocellule.

L’anno successivo alla creazione del primo LED infrarosso, nel 1962, Nick Holonyak Jr. fece un ulteriore passo avanti sviluppando il primo LED rosso, capace di emettere luce visibile direttamente all’occhio umano. Gli studi su questi nuovi diodi proseguirono, focalizzandosi sulle varie applicazioni pratiche, come nell’ambito dei laser, e sull’esplorazione dei materiali necessari per produrre diverse tonalità di luce, combinando più fonti luminose per ottenere una vasta gamma di colori.

Durante gli anni cruciali della ricerca sui LED, un importante contributo venne dall’ingegnere americano M. George Craford, ex studente di Holonyak all’Università dell’Illinois. Nel 1972, Craford realizzò un significativo avanzamento creando i primi LED gialli che furono commercializzati dalla Monsanto, l’azienda per cui lavorava. Dedicate interamente al settore dei LED, le ricerche di Craford furono fondamentali per la loro prima larga diffusione, come dimostra il loro impiego in applicazioni quali semafori e segnalazioni luminose stradali.

Vantaggi nell’uso dei diodi LED

  • Consumano meno energia: sono molto più efficienti delle lampadine tradizionali, il che significa che usano meno elettricità per produrre la stessa quantità di luce.
  • Durano più a lungo: possono funzionare per migliaia di ore prima di dover essere sostituiti.
  • Sono robusti: non contengono filamenti o parti fragili che si possono rompere facilmente.
  • Offrono diverse colorazioni: i LED possono emettere luce di vari colori senza l’uso di filtri colorati.

Un esempio pratico molto semplice che potete realizzare a scuola è collegare un LED a una batteria con un piccolo resistore (di seguito sono fornite le indicazioni per il calcolo del valore del resistore) per limitare la corrente e proteggere il LED: noterete come si illumina, dimostrando in modo semplice ed efficace come funziona.

Struttura Fisica del LED

Un LED è composto principalmente da un chip di materiale semiconduttore in cui sono presenti impurità per creare una giunzione P-N. La giunzione è dove avviene l’elettroluminescenza (emissione di luce). Il chip è incapsulato in un guscio di plastica o vetro, che può essere modellato per focalizzare o diffondere la luce. I LED hanno due terminali: un anodo (+) e un catodo (-). La corrente elettrica fluisce dall’anodo al catodo, e questo flusso di corrente permette al LED di emettere luce.

Modalità di Polarizzazione

Per funzionare correttamente, un LED deve essere polarizzato in modo diretto, il che significa che l’anodo deve essere collegato al polo positivo della fonte di alimentazione e il catodo al polo negativo. Se il LED è collegato al contrario (polarizzazione inversa), non si accenderà perché la corrente non può fluire attraverso di esso nel modo giusto.

Calcolo della Resistenza Serie

Per proteggere il LED da correnti eccessive, si usa una resistore connesso in serie. Il calcolo di questa della resistenza (R) dipende dalla tensione di alimentazione (VS), dalla tensione del LED (VI​) e dalla corrente desiderata attraverso il LED (ILED​):

Dove:

  • VS​ è la tensione di alimentazione
  • VLED​ è la tensione di funzionamento del LED, tipicamente tra 1.8V e 3.3V a seconda del colore
  • ILED​ è la corrente di funzionamento desiderata per il LED, solitamente intorno a 20mA per la maggior parte dei LED, ma può variare.

Corrente di Funzionamento e Colore

La corrente di funzionamento del LED influisce sulla luminosità, ma anche il colore del LED ha un ruolo nella determinazione della tensione di funzionamento. Ecco alcune tensioni di funzionamento approssimative in base al colore:

  • Rosso: 1.8V – 2.2V
  • Verde: 2.0V – 3.0V
  • Blu, Bianco, UV: 3.0V – 3.5V

Questi valori possono variare a seconda del tipo specifico di LED. Per un funzionamento sicuro, è essenziale controllare le specifiche del produttore del LED che si sta utilizzando.

Ricordate, utilizzare un resistore di valore adeguato è cruciale per prevenire il danneggiamento del LED a causa di una corrente troppo elevata. Il calcolo della resistenza in serie aiuta a garantire che il LED riceva la corrente corretta per il suo ottimale funzionamento e durata.

Di seguito un esempio di collegamenti per controllare l’accensione di un diodo LED rosso:

Materiali Necessari

  • 1 LED rosso
  • 1 resistenza (calcoleremo il valore)
  • 1 batteria (per esempio, una batteria da 9V)
  •  Cavi di collegamento

Calcolo della Resistenza

Prima di collegare il circuito, dobbiamo calcolare il valore della resistenza necessaria per proteggere il LED. Supponendo che il LED rosso abbia una tensione di funzionamento di circa 2V e che la corrente ideale per il LED sia di 20mA (0,02A), usiamo una batteria da 9V come alimentazione. Il calcolo della resistenza (R) si basa sulla formula precedentemente indicata dove:

  • Vs, tensione di alimentazione vale 9V
  • VLED​, tensione di funzionamento del LED vale 2V per un LED rosso
  • ILED, corrente di funzionamento desiderata per il LED, vale 0,02A (2 mA)

Sostituendo i valori nella formula otteniamo:

Il valore 350 Ohm è quello calcolato, bisognerà quindi ora scegliere il valore commerciale prossimo al valore calcolato, si potrà scegliere quindi tra 330 Ohm o 360 Ohm.

Collegamento del Circuito

  1. Collega un’estremità della resistenza a uno dei terminali della batteria (il polo positivo, se state usando un portabatterie con i cavi già attaccati).
  2. Collega l’altra estremità della resistenza al terminale più lungo (anodo) del LED. L’anodo è il lato positivo del LED.
  3. Collega il terminale più corto (catodo) del LED al polo negativo della batteria. Puoi fare questo direttamente o usando un cavo.
  4. Una volta completato il collegamento, il LED dovrebbe accendersi. Se non si accende, verifica i collegamenti e assicurati che la batteria sia carica.

Ricordate come detto sopra, è importante non invertire la polarità del LED, perché non si illuminerà se collegato al contrario.

Nel modulo Grove LED incluso nell’Arduino Sensor Kit, la resistenza di limitazione della corrente è già integrata sul PCB (circuito stampato), quindi, non c’è bisogno di preoccuparsi di aggiungere manualmente una resistenza esterna quando lo usate; questa parte del lavoro è già stata fatta per voi. Questo tipo di collegamento verrà approfondito in un corso successivo.

Ricordate, state partecipando a un corso introduttivo il cui scopo è guidarvi, passo dopo passo, nel mondo della programmazione e nella realizzazione di sistemi elettronici. Questo approccio semplificato vi permette di concentrarvi sull’apprendimento delle basi, evitando inizialmente di soffermarvi troppo sui dettagli tecnici.

Utilizzare l’Arduino Sensor Kit

Le funzioni che verranno usate nei programmi che seguono saranno le seguenti:

pinMode()
La funzione pinMode() in Arduino è essenziale per impostare la modalità di funzionamento di uno specifico pin della scheda Arduino. Questa funzione permette di definire se un pin deve comportarsi come un ingresso (input) ovvero riceve un segnale in ingresso o come un’uscita (output) ovvero fornisce un segnale in uscita.

digitalWrite()
La funzione digitalWrite() in Arduino è utilizzata per scrivere un valore HIGH (1 logico corrispondente a 5V) o LOW (0 logico, corrispondente a 0V) su un pin configurato come OUTPUT. Questo permette di controllare dispositivi elettronici come LED, motori e altri componenti elettronici.

delay()
La funzione delay() in Arduino è utilizzata per introdurre un ritardo nel programma per un determinato numero di millisecondi. Durante questo ritardo, il programma si ferma e non esegue altre istruzioni. Questo può essere utile per controllare il timing di varie operazioni, come il lampeggio di un LED, il ritardo tra due azioni. Vedremo in lezioni successive come utilizzare un’altra tecnica per la gestione dei ritardi che permette di non bloccare l’intera esecuzione del programma.

Sketch 1

// Prof. Maffucci Michele
// Blink del LED connesso al pin digitale 6

// #define permette di assegnare un none ad un valore costante prima che
// il programma venga compilato.
// Le costanti così definite non occupano spazio nella memoria del mirocontrollore

#define LED 6

void setup() {
// inserire quì il codice che deve essere eseguito una sola volta
// dal momento che colleghi all'alimentazione Arduino
pinMode(LED, OUTPUT); // con pinMode indichiamo come verrà usato il pin, in questo caso come output
}

void loop() {
// Inseriamo nel loop il codice che vogliamo
// venga ripetuto continuamente

digitalWrite(LED, HIGH); // Imposta ad HIGH (5V) la tensione sull'anodo del LED
delay(1000); // Attesa di 1000 millisecondi
digitalWrite(LED, LOW); // Imposta ad LOW (0V) la tensione sull'anodo del LED
delay(1000); // Attesa di 1000 millisecondi
}

Sketch 2

Continua a leggere

Contenitore per stazione meteorologica

Come promesso nei scorsi giorni sui social, spero di fare cosa gradita nel condividere i progetti per la realizzazione di una piccola casetta da esterno per ospitare i circuiti elettronici che serviranno per realizzare una stazione meteorologica. Nel video allegato il contenitore della stazione meteorologica realizzato in compensato e tagliato a laser che può essere anche stampato in 3D.

La struttura è volutamente realizzata ad incastro per facilitarne la realizzazione e l’assemblaggio. All’interno saranno inseriti i circuiti necessari che in funzione della classe frequentata dagli studenti potranno essere: microbit, schede Arduino, Esp32 ecc…

L’attività con i ragazzi prevede: corso di meteorologia, esercitazioni sulle tecnologie elettroniche e realizzazione della stazione meteorologica.

Sul tetto del della stazione meteorologica verrà disposto un piccolo pannello solare che permetterà la ricarica della batteria di alimentazione utilizzata per i circuiti elettronici.

Per prelevare i sorgenti per il taglio laser e la stampa 3D seguire il link su Thingiverse.

Buon Making a tutti 🙂

EduRobot Circuit Blocks – dalla manualità al PCB: L’Evoluzione di un Apprendimento Pratico dell’elettronica

Nella mia esperienza come giovane studente, l’apprendimento pratico della teoria elettronica ha avuto inizio con l’uso di semplici blocchetti in cui erano inseriti componenti elettronici. Questi blocchetti venivano collegati tra loro mediante cavi dotati di connettori a coccodrillo o banana. Questo sistema, da giovanissimo studente, mi rendeva estremamente semplice la connessione con i puntali dei multimetri digitali, consentendo di realizzare senza sforzi collegamenti in serie e parallelo di resistori e di eseguire misurazioni della resistenza equivalente. Era altresì intuitivo inserire strumenti all’interno di un circuito per misurare correnti e tensioni.

Ricordo con affetto quella fase iniziale, un periodo in cui l’elettronica sembrava un magico puzzle da esplorare e comprendere. Con il tempo, la mia esperienza pratica si è evoluta: sono passato all’uso di breadboard, poi alle basette millefiori e, infine, alla progettazione e realizzazione di PCB.

Tuttavia, recentemente, la mia attività di insegnamento è tornata a quei blocchetti iniziali un po’ per necessità pratica ed un po’ per la gestione di classi “particolari” da motivare. Mi è stato chiesto di ideare lezioni con un’attività di laboratorio della durata di non più di 45 minuti per classi di seconda superiore. Ho constatato che molti studenti non avevano mai avuto esperienza diretta con componenti elettronici o strumenti di misura. Da qui l’idea di reintrodurre l’approccio “manuale” e intuitivo delle mie origini. Ho pensato a blocchetti stampati in 3D in cui inserire i reofori dei resistori, fissati mediante viti e bulloni. Queste viti, estendendo i reofori, facilitano il collegamento con altri resistori mediante connettori a coccodrillo.

Continua a leggere

Costruiamo EduRobot Black Panther – kit robotico didattico multipiattaforma

Un robot che costa meno di un libro.

Al fine di supportare i colleghi che seguono i miei corsi, ho realizzato una struttura robotica che deriva da un precedente progetto che ho sviluppato per i miei studenti, si tratta della versione n. 6 del kit robotico che ho chiamato EduRobot, nominata “Black Panther”.

Ho pensato ad una struttura estremamente economica in cui, ad esclusione delle viti di serraggio delle varie parti, il resto dei materiali è costituito da schede di controllo, motori e sensori.

La struttura minima richiede almeno 3 livelli, ma è possibile innalzarla per aggiungere tutta l’elettronica necessaria per espandere le funzionalità del robot.

Tutti gli elementi sono stati stampati in 3D ed il materiale scelto è il PLA.

I costi complessivi di stampa, viti di serraggio e dadi, non supera i 10€.

Per prelevare i sorgenti per la stampa 3D seguire il link sulla mia pagina su Thingiverse.

Le funzioni che possono essere programmate sono le medesime dei più blasonati kit robotici in commercio, pertanto se la vostra scuola ha acquistato una stampante 3D, sarà sufficiente una manciata di elettronica a basso costo per realizzerete robot assolutamente inclusivo, sia per il portafoglio delle famiglie degli allievi che di quelle del docente.

Il cilindro di occupazione del robot ha un diametro di 135 mm e i motori sono esattamente centrati rispetto alla base del cilindro.

Per evitare spese aggiuntive al posto delle caster ball ho preferito utilizzare un elemento dotato di superficie curva, ovviamente tale elemento se lo desidera può essere sostituito da una caster ball metallica.

Sul terzo livello del robot sono stati già inseriti fori per fissare i microcontrollori: Arduino UNO R3 e BBC micro:bit e computer Raspberry Pi 3 o 4.

Sempre sul terzo livello nel caso si desidera utilizzare un BBC micro:bit, è possibile fissare una scheda motorbit.

Nel caso il controllo avvenisse con Arduino UNO R3 la scheda di controllo motori è costituita da un L298N che andrà impilato sulla scheda Arduino, secondo quanto indicato nel tutorial che segue.

Nei kit di base sul 3’ livello viene utilizzata una minibreadboard per facilitare la connessione tra i vari dispositivi elettronici.

Per entrambe le versioni il robot è dotato di un sensore ad ultrasuoni HC-SR04 fissato alla struttura. Per la valutazione della distanza dell’ostacolo si è preferito evitare l’utilizzo di un servomotore che facesse ruotare il sensore ad ultrasuoni al fine di ridurre i costi. La rotazione che valuta la distanza dell’ostacolo più vicino verrà svolta ruotando l’intero robot rispetto al suo baricentro.

Il robot è dotato di due sensori ad infrarossi da impiegare per la realizzazione di un robot segui linea.

Nella versione con scheda Arduino UNO R3 sarà possibile effettuare un controllo mediante scheda Bluetooth HC-05, il cui supporto potrà essere fissato sul terzo piano del robot.

Di seguito la lista dei materiali e le relative fotografie che ne dettagliano la costruzione delle parti meccaniche e delle schede, non viene dettagliata la connessione elettrica tra le parti e la programmazione, per ora riservato ai colleghi che frequentano o frequenteranno i miei corsi, ma molto probabilmente nel prossimo futuro, con un po’ di calma lavorativa estenderò a tutti la parte di spiegazione elettronica e programmazione.

Sto sviluppando corsi in cui mostro come, usando la medesima struttura robotica, sarà possibile controllare il robot mediante un Raspberry Pi oppure un Raspberry Pi Pico.

Per i colleghi insegnanti svolgerò nel prossimo futuro ulteriori corsi gratuiti a cui potrete iscrivervi attraverso la piattaforma ScuolaFutura, corsi che saranno svolti i diverse modalità: in presenza, MOOC e blended.

Per essere aggiornati sui progetti e sui corsi che svolgerò nel prossimo futuro vi invito ad iscrivervi al mio sito inserendo la vostra e-mail nel campo: “Iscriviti al blog tramite email” nella colonna destra in alto, in questo modo potrete essere aggiornati tempestivamente.

La sequenza di montaggio indicata di seguito è quella che secondo il mio parere vi consente di montare l’intera struttura in non più di 60 minuti, è essenziale però munirsi di cacciaviti a stella e pinza a becco lungo, ottimo sarebbe utilizzare un piccolo avvitatore.

In generale non è richiesta nessuna saldatura a stagno in quanto i motori (gialli) a 6V utilizzati possono essere acquistati anche con cavi già saldati, attenzione però che la connessione tra motore e cavi elettrici potrebbe essere delicata, pertanto si consiglia di serrare i cavi mediante una fascetta stringicavi, come dettagliato di seguito.

Se è necessario prolungare la lunghezza dei cavi è possibile adottare diversi metodi, quello che preferisco è l’utilizzo di connettori wago che possono essere acquistati con diverso numero di fori, nel caso di questo kit robot sono sufficienti wago da 3 fori.

Ovviamente, nel caso di rotture o disconnessione dei cavi dai poli del robot bisognerà per forza ricorrere alla saldatura a stagno. 

La fotografia che segue mostra tutti gli elementi da stampare in 3D per le due versioni di robot.

Di seguito elenco materiali e sequenza di montaggio.

Continua a leggere