Archivi tag: 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 🙂

Electronic Prototyping Base Plate – ordine sulla banco di lavoro


L’attività di formazione nel settore delle tecnologie didattiche mi coinvolge parecchio ed ogni volta la parte più complessa del lavoro risiede nell’organizzare la regia degli oggetti che gestisco e mostro online. Realizzare robot, serre, stazioni meteorologiche o comunque automazioni elettroniche richiede ordine, e mantenere una disposizione corretta degli apparati durante una lezione in diretta online richiede, almeno da parte mia, uno sforzo notevole.
Durante la lezione vi sono diverse fasi in cui operando con microcontrollori, micro:bit o Arduino, è necessario sviluppare dei semielaborati che devono mostrare ad esempio l’evoluzione di una stazione meteorologica, con l’aggiunta via via di sensori.
Per ottimizzare il processo di costruzione ho deciso di sperimentare qualcosa che in realtà è stato realizzato da altri, la Prototyping Base Plate di Boris Humberg, io ne ho fatto una versione più grande cambiando alcune misure in modo da adattarla alle mie necessità, con molta fantasia ho voluto chiamarla Electronic Prototyping Base Plate, per poter scaricare i sorgenti per la stampa 3D e il taglio laser seguire il link su Thingiverse.

Si tratta di una basetta di compensato da 4mm di spessore con le dimensioni di un foglio A4 forata. I fori della basetta sono da 3mm distanziati 10 mm l’uno dall’altro. Gli elementi di supporto dei circuiti a forma di L hanno dimensioni tali da poter alloggiare viti M3 e potete utilizzarli in tutti e due i sensi.

Aggiungo tra gli elementi supporti per connettori Wago, contenitore porta oggetti, supporto per mini breadboard e servomotore. Ho aggiunto dei piedini in modo da distanziare le viti dalla base di appoggio.

La basetta è stata realizzata con una macchina a taglio laser, però potreste utilizzare qualsiasi pezzo di compensato e con un piccolo trapano effettuate i fori là dove vi servono, quindi è sufficiente stampare in 3D tutti gli elementi ed utilizzare la base di appoggio.

Spero che questo progetto possa servire anche ad altri.

Buon Making a tutti 🙂

EduRobot beam – sistema di framing per progetti elettronici

L’ordine sul banco di lavoro in laboratorio è fondamentale, pertanto è spesso utile disporre i progetti elettronici su strutture meccaniche componibili, ma la prototipazione meccanica, almeno da parte mia, richiede parecchio tempo. In questi giorni di calma lavorativa sto riscrivendo i miei corsi STEAM che svolgerò nei prossimi mesi e a tal proposito, in aggiunta alla varie proposte sperimentali, mostrerò come ottimizzare la costruzione degli esperimenti, pertanto ho realizzato una struttura di freaming costituita da barre ed elementi di fissaggio. Le barre ricordano i MakerBeam o i T-slot in alluminio, che permettono di costruire strutture di supporto meccanico per la nostra elettronica in modo rapido. Questo semplice progetto non è nulla di nuovo, trovare soluzioni simili ovunque, ma ho pensato di realizzarne una semplicissima e personalizzabile, ma soprattutto molto economica da stampare rapidamente in 3D. Le barre hanno una lunghezza di 100 mm (ma ne disegnerò altre di diversa lunghezza) un’area di base di 10×10 e fori da 3 mm di diametro disposti a 10 mm l’uno dall’altro. Nel video allegato si possono notare una serie di elementi di blocco. In questi giorni test e nelle prossime settimane realizzazione di supporti per motori, schede elettroniche, sensori da fissare alle barre.
Presto online per il download gratuito.

Buon Making a tutti!

 

Modular jumper wire holder

Quanti di voi perdono tempo nel cercare il filo giusto, del colore giusto per svolgere le sperimentazioni di elettronica? Mantenere ordine in laboratorio è fondamentale, gran parte del mio tempo di lavoro viene perso nel cercare e nel sistemare i jumper 🙂 pertanto in questa settimana, nelle pause tra uno scrutinio e l’altro ho realizzato una struttura modulare espandibile quanto si vuole per ospitare ogni tipo di jumper. Ho pensato di aggiungere alcuni fori sulla base dei supporti in modo che il tutto possa essere fissato su una base trasportabile.

P.S. fate attenzione alla modalità con cui inserite i dadi M3 (guardate le fotografie).

Vi condivido su Thingiverse i file sorgenti, spero che questo lavoro possa essere utile anche ad altri.

Di seguito alcune immagini e video che mostrano la struttura modulare.

Buon Making a tutti.

MicroCon 2020


Il lockdown come ben sapete ha creato nella scuola numerose criticità che hanno mutato radicalmente il nostro modo di studiare ed insegnare. Come insegnate di materia tecnica che vive quotidianamente il laboratorio ho necessariamente bisogno di pensare e sviluppare diverse modalità di making elettronico/didattico che da settembre bisognerà adottare a scuola in una situazione in cui tempi e comportamenti del fare e costruire saranno da rimodulare.

Ma come fare tutto ciò?

Pensieri, progetti nascenti, sperimentazioni di nuove tecnologie questo ed altro il 9 maggio al MicroCon 2020, evento online in cui si parlerà di elettronica, microcontrollori e di nuove frontiere dell’apprendimento nel settore delle nuove tecnologie.

La conferenza online e organizzata da Paolo Aliverti e Pier Aisa entrambi maker che da anni svolgono in modo egregio la loro opera di divulgazione nel settore dell’elettronica.

Maggiori informazioni sul programma e i relatori che interverranno su: www.microcon.it
Per partecipare è indispensabile l’iscrizione gratuita al seguente link.

Ringrazio Paolo e Pier per l’invito 🙂

Vi aspettiamo all’evento.