In questo articolo, descriveremo come realizzare un multimetro digitale, semplice ed a basso costo, per misurare tensioni, diodi, resistenze e continuità ohmica. Nel corso del progetto sarà utilizzata la scheda di sviluppo Arduino Nano come controllore ed elaboratore delle misure, un display OLED per la visualizzazione dei valori misurati, un circuito integrato regolatore di tensione, due batterie per alimentare il multimetro, vari componenti passivi come resistori, un pulsante, due coppie di Jack per collegare i puntali di test, ed un buzzer. Occorre premettere che il progetto del multimetro, seppur correttamente funzionante, è puramente dimostrativo, in quanto non può essere considerato alla stregua di uno strumento professionale, ma può essere considerato comunque come una guida di base per coloro che volessero cimentarsi a realizzare un multimetro più prestante, sfruttando le potenzialità offerte dai microcontrollori Arduino come Arduino Nano.
Il multimetro digitale: introduzione
Un multimetro digitale è un dispositivo elettronico versatile utilizzato per misurare varie proprietà elettriche, tra cui tensione, corrente e resistenza. Il dispositivo visualizza le misurazioni su uno schermo digitale, rendendo facile la lettura e la comprensione accurata dei risultati. I multimetri digitali hanno sostituito i tradizionali misuratori analogici e offrono maggiore precisione e affidabilità. I multimetri digitali hanno diversi vantaggi rispetto ai misuratori analogici, tra cui:
• Misurazioni precise: forniscono misurazioni più precise rispetto ai misuratori analogici, rendendoli ideali per misurazioni elettriche ad alta precisione. Hanno una risoluzione più elevata, che consente loro di misurare le variazioni nei piccoli segnali elettrici in modo più preciso.
• Prestazioni affidabili: hanno prestazioni più stabili e affidabili rispetto ai misuratori analogici. Sono meno sensibili alle variazioni di temperatura e hanno meno probabilità di degrado nel tempo.
• Alta impedenza: hanno un'elevata impedenza di ingresso. Ciò aiuta a garantire misurazioni precise e previene danni ai componenti elettronici sensibili.
I multimetri digitali includono funzionalità di diversi misuratori monouso, tra cui voltmetri, amperometri e ohmmetri, in un unico dispositivo completo. Inoltre, spesso incorporano funzionalità specializzate e opzioni di personalizzazione, rendendoli strumenti versatili e adattabili per i tecnici.
Un multimetro digitale è costituito da quattro parti principali:
• Schermo: utilizzato per visualizzare le misurazioni
• Pulsanti: utilizzati per selezionare le funzioni
• Quadrante di selezione: utilizzato per scegliere il tipo di misurazione
• Jack: utilizzati per collegare i puntali di misura
• Puntali di misura: sono conduttori flessibili e isolati che sono in genere codificati a colori: rosso per il positivo e nero per il negativo. I cavi servono come connettori essenziali tra il dispositivo in fase di test e il multimetro digitale. La forma a punta alle estremità di questi cavi è fondamentale per condurre test sicuri anche su minuscole parti di un circuito.
Risoluzione dei multimetri digitali
Quando si tratta di multimetri digitali, utilizziamo i termini "conteggi" e "cifre" per parlare di quanto precisamente possono misurare le cose. Conoscere la risoluzione di un multimetro aiuta i tecnici a capire se lo strumento riesce a individuare variazioni davvero minuscole nel segnale che sta misurando. Ad esempio, se un multimetro riesce a misurare 1 millivolt (1 mV) con l'impostazione a 4 volt, significa che riesce a rilevare piccole variazioni come 1 millivolt, che è solo 1/1000 di volt, anche quando misura 1 volt.
Descrizione del progetto
In Figura 1 è riportato lo schema elettrico del multimetro digitale.
Il funzionamento del circuito è basato sul microcontrollore Arduino Nano (U1), che rappresenta il tuttofare del multimetro: acquisisce le grandezze elettriche applicate agli ingressi J1 e J2 per le misure di tensione, agli ingressi J3 e J4 per la misura dei diodi, della resistenza e della continuità ohmica; elabora i dati delle misure, ed i risultati li invia serialmente al display OLED SSD1306 OLED (OLED1) per visualizzarli. Arduino Nano gestisce inoltre lo stato del pulsante P1 con il quale viene selezionato il tipo di misurazione. Il resistore R1 collegato al jack J1, unitamente al parallelo dei due resistori R2 e R3, realizzano un partitore di tensione necessario per limitare a 5 V la massima tensione applicabile all’ingresso della porta ADC A0 di Arduino Nano, considerando che la massima tensione misurabile all’ingresso del multimetro, ovvero fra J1 e J2, non deve essere maggiore di 24 V. Applicare una tensione superiore a 5 V alle porte ADC può provocare danni irreversibili al microcontrollore Arduino Nano. Il resistore R4 collegato al jack J3 contribuisce alle misurazioni di diodi e LED nella modalità Diode/LED del multimetro. Il circuito di alimentazione a +5 V è costituito dalle batterie BAT1 e BAT2 ai Polimeri di Litio (LiPo) da 3,7 V-300 mAh, dallo switch SW1 e dal circuito integrato regolatore di tensione LM1117 (U2), che fissa la tensione di uscita a +5 V. Il buzzer (BUZ1) viene impiegato per segnalare la presenza di continuità ohmica (cortocircuito) di ciò che si va a misurare fra J3 e J4. Il multimetro digitale presentato in questo articolo è in grado di misurare tensioni continue fino a 24 V, la caduta di tensione di diodi e LED, il valore in ohm della resistenza di resistori e la continuità ohmica.
Descrizione del codice
Il codice per far funzionare il multimetro digitale basato su Arduino è descritto di seguito. Il codice inizia includendo le librerie per controllare il display OLED:
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>
Successivamente, sono definite le dimensioni e l'indirizzo dello schermo del display OLED:
#define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 32 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) #define SCREEN_ADDRESS 0x3C /// See datasheet for Address
Poi viene creata un'istanza della libreria Adafruit_SSD1306 denominata “display” assegnandole le relative dimensioni definite prima:
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Poi si inizializzano tutte le variabili richieste dal programma:
int analogInput = 0; float vout = 0.0; float vin = 0.0; float R1 = 10000.0; // resistance of R1 (100K) -see text! float R2 = 2200.0; // resistance of R2 (2.2K) - see text! int value = 0; int mode = 0; int interval = 300; unsigned long previousMillis = 0; int raw = 0; int Vin = 5; float Vout = 0; float R11 = 1000; float R22 = 0; float buffer = 0;
Nella funzione setup() è prima impostata la velocità del monitor seriale e poi configurati i pin ADC e pulsante come input, e buzzer come output:
Serial.begin(9600); pinMode(analogInput, INPUT); pinMode(9, OUTPUT); pinMode(7, INPUT_PULLUP); digitalWrite(9, HIGH); delay(40); digitalWrite(9, LOW); Successivamente, viene utilizzato il metodo begin() dell'istanza display per inizializzare il display:
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { Serial.println(F("SSD1306 allocation failed")); for (;;); // Don't proceed, loop forever }
All'interno della funzione loop() sono presenti quattro modalità di misurazione; queste modalità possono essere cambiate tramite il pulsante P1 di selezione della modalità: mode0 è la funzione di misurazione della tensione, mode1 è per la modalità di test diodi, mode2 è la modalità di misurazione in OHM, infine, mode3 è la modalità di test di continuità ohmica. In “mode 0” viene letta la tensione sul pin ADC A0, il cui valore viene memorizzato nella variabile “value”. A questo punto, il programma calcola il valore misurato, lo memorizza nella variabile “vin” e lo visualizza sul display OLED:
if (mode == 0) { // Measure Voltage value = analogRead(A0); vout = (value * 5.0) / 1024.0; vin = vout / (R2 / (R1 + R2)); if (vin < 0.09) { vin = 0.0; //statement to quash undesired reading ! } display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println("Voltmeter Mode"); display.setTextSize(2); display.setCursor(10, 12); display.print((vin)); display.print("V"); display.display(); }
Con la selezione “mode 1”, all’ingresso dell’ADC A2 viene misurata e calcolata la caduta di tensione di un diodo:
if (mode == 1) { // Diode Test value = analogRead(A2); vout = (value * 5.0) / 1024.0; // convert vout to V vout = 5 - vout; display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println("Diode/LED Test"); display.setTextSize(2); display.setCursor(10, 12); display.print((vout)); display.print(" V"); display.display(); }
La modalità “mode 2” imposta il multimetro come Ohmmetro. I dati acquisiti e convertiti dall’ADC A2 di Arduino Nano consentono di calcolare il valore in ohm di un resistore, che sarà visualizzato sul display OLED:
if (mode == 2) { // OHM Meter raw = analogRead(A2); buffer = raw * Vin; Vout = (buffer) / 1024.0; buffer = (Vin / Vout) - 1; R22 = R11 * buffer; Serial.print(Vout); Serial.print("R2: "); Serial.println(R22); display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println("Modalità OHM Meter"); display.setTextSize(2); display.setCursor(2, 12); se (R22 < 1000) { display. setCursor(2, 12); display. print((R22)); display. print(" OHM"); } altrimenti { display. setCursor(10, 12); display. print((R22 / 1000)); display. print(" K"); } display. display(); //ritardo(300); }
Con l’ultima modalità “mode 3” del multimetro digitale viene testata la continuità ohmica. Se il valore in ohm misurato è inferiore al valore minimo reimpostato, il microcontrollore attiva il buzzer.
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2547 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.