Come misurare un induttore con Arduino (induttometro)
Introduzione
Gli induttori, indicati con L in onore di Emil Lenz, sono usati nei circuiti induttore-condensatore (LC) per generare segnali con una frequenza specifica o filtrare un segnale per limitare la sua banda di frequenza.
Un condensatore è un componente passivo che può immagazzinare energia nel suo campo elettrico tra le due armature (per approfondire link ).
Al contrario, un induttore è sempre un componente passivo, ma può immagazzinare energia nel suo campo magnetico (per approfondire link).
Un induttore collegato a un condensatore carico è anche definito circuito oscillante LC.
In questa configurazione la corrente, generata dal condensatore carico, inizia a fluire attraverso l’induttore che genera un campo magnetico al suo interno.
L’energia immagazzinata dal condensatore è stata trasferita all’induttore sottoforma di campo magnetico.
Successivamente, l’energia del campo magnetico immagazzinata nell’induttore, verrà rilasciata sottoforma di una corrente elettrica, che a sua volta ricarica il condensatore.
Questo processo continua finché l’energia verrà dissipata nel circuito sotto forma di calore (dovuta alla non idealità dei componenti L e C) o di radiazione elettromagnetica.
In breve, il collegamento di un induttore a un condensatore carico crea un circuito oscillante in cui l’energia viene continuamente trasferita dall’induttore al condensatore e viceversa.
La frequenza di oscillazione è determinata dalle caratteristiche del circuito LC.
Questa configurazione circuitale può essere utilizzata per generare segnali di frequenza specifica o per filtrare.
la frequenza di oscillazione può essere calcolata utilizzando la seguente equazione:
dove f rappresenta la frequenza di oscillazione, unità di misura in Hertz (Hz), L rappresenta l’induttanza dell’induttore misurata in Henry (H) e C rappresenta la capacità del condensatore misurata in Farad (F).
La frequenza di oscillazione del circuito LC è inversamente proporzionale alla radice quadrata del prodotto dell’induttanza e della capacità del circuito.
Ciò significa che se aumentiamo il valore dell’induttanza e/o della capacità del circuito, la frequenza di oscillazione diminuirà e viceversa.
L’oscillazione di un circuito LC non può proseguire indefinitamente, senza fornire energia dall’esterno, a causa della resistenza parassita interna ai componenti, l’oscillazione si attenuerà nel tempo.
Come misurare il valore dell’induttore
Nel paragrafo precedente ho fornito alcuni concetti fisici sulle caratteristiche dell’induttore, ma in particolare ho descritto il principio di funzionamento di un circuito LC.
Per determinare il valore di un induttore, è possibile utilizzare le proprietà di un circuito LC.
In particolare, si può collegare un condensatore di valore noto in parallelo all’induttore incognito, realizzando così un circuito LC.
Caricheremo, con un impulso il condensatore, il circuito oscillerà, e misureremo la frequenza del segnale in uscita e dalla relazione f = 1 / (2π√(LC)), ricaveremo il valore dell’induttore.
Il segnale in uscita ad un circuito LC ha forma sinusoidale che smorza nel tempo, come in figura 1.
Collegheremo il segnale sinusoidale generato dal circuito LC all’ingresso di un dispositivo chiamato comparatore.
In questo modo, il segnale verrà convertito in onda quadra.
La tensione di uscita del comparatore sarà uguale quella di alimentazione, se il livello di tensione sul pin di ingresso più (+) è maggiore di quella sul pin di ingresso negativo (–) e viceversa.
L’uscita del comparatore sarà un’onda quadra che avrà la stessa frequenza della sinusoide generata dal circuito LC.
In altre parole, l’onda quadra in uscita dal comparatore di tensione sarà una rappresentazione dell’oscillazione del circuito LC alla stessa frequenza del segnale sinusoidale originale.
Un condensatore ceramico collegato in parallelo all’induttore riduce lo smorzamento dell’oscillazione prodotta dal circuito LC rispetto all’utilizzo di un condensatore elettrolitico.
Un condensatore elettrolitico è meno efficiente alle alte frequenze rispetto a un condensatore ceramico, a causa della maggiore resistenza in serie equivalente (ESR) e induttanza (ESL), che ha come conseguenza tempi di carica e scarica più lunghi.
Schema elettrico
Codice
#include <Adafruit_SSD1306.h> // libreria Adafruit SSD1306 int width = 128; // dimensioni dispaly OLED int height = 32; // Adafruit_SSD1306 oled(width, height, &Wire, -1); int voltPin = A0; // impulso per circuito LC int LM393pin = A1; // lettura frequenza float capacitor = 1.0; //condensatore campione μF int timeout = 1000; // timeout float pulse, pulse1, pulse2, frequency, inductance; void setup() { pinMode(voltPin, OUTPUT); // oled.begin(SSD1306_SWITCHCAPVCC, 0x 3C); // indirizzo OLED I2C oled.clearDisplay(); oled.setTextColor(WHITE); oled.setTextSize(1); oled.display(); } void loop() { digitalWrite(voltPin, HIGH); // uscita per innescare le oscillazioni del circuito LC delay(5); // attesa per caricare il condensatore digitalWrite(voltPin,LOW); // pulse1 = pulseIn(LM393pin, HIGH, timeout); // misuriamo il perido dell'impulso pulse2 = pulseIn(LM393pin, HIGH, timeout);// facciamo una seconda misura if(pulse2 > 0) pulse = (pulse1+pulse2)/2.0; // facciamo la media tra le due misure else pulse = pulse1; if(pulse > 0) { frequency = 1E6/(2.0*pulse); // calcoliamo la frquenza del segnale inductance = pulse*pulse/(PI*PI*capacitor); //misuriamo il valore del dell'induttore oled.clearDisplay(); oled.setCursor(0,0); // display results oled.print("inductance uH "); oled.println(inductance,0); oled.print("frequency Hz "); oled.println(frequency,0); oled.print("high time us "); oled.print(pulse,0); oled.display(); } delay(1000); }
#include <Adafruit_SSD1306.h>
Questa riga di codice include la libreria “Adafruit_SSD1306.h”, che è una libreria per il display OLED SSD1306 prodotto da Adafruit. La libreria fornisce una serie di funzioni che semplificano l’utilizzo del display OLED, come ad esempio la scrittura di testo, la visualizzazione di immagini e la gestione della luminosità del display.
int width = 128; int height = 32;
Queste due righe di codice definiscono le dimensioni del display OLED. In particolare, “width” indica la larghezza del display in pixel, mentre “height” indica l’altezza del display in pixel.
Nel codice sorgente, queste variabili sono utilizzate per configurare il display OLED.
Adafruit_SSD1306 oled(width, height, &Wire, -1);
Questa riga di codice crea un oggetto “oled” della classe “Adafruit_SSD1306”, che rappresenta il display OLED collegato ad Arduino.
Il costruttore della classe “Adafruit_SSD1306” richiede quattro parametri: “width” e “height” che indicano le dimensioni del display, “&Wire” che indica l’interfaccia I2C utilizzata per comunicare con il display e “-1” che indica il pin di reset del display (se necessario).
Quindi, il codice crea un oggetto “oled” con le dimensioni specificate (128×32 pixel), utilizzando l’interfaccia I2C “Wire” e non specificando un pin di reset per il display.
oled.begin(SSD1306_SWITCH CAPVCC, 0x3C);
“begin()” è una funzione della classe “Adafruit_SSD1306” che inizializza il display OLED e lo configura con i parametri specificati.
Il primo parametro della funzione “begin()” indica il tipo di alimentazione del display (“SSD1306_SWITCH_CAPVCC” specifica la tensione di alimentazione.
Il secondo parametro imposta l’indirizzo I2C del display OLED (0x3C in questo caso).
digitalWrite(voltPin, HIGH);
L’uscita del pin voltPin a livello logico alto, al fine di innescare le oscillazioni del circuito LC.
delay(5);
Delay, per consentire la carica del condensatore
digitalWrite(voltPin,LOW);
Dopo aver innescato le oscillazioni si disattiva l’uscita.
pulse1 = pulseIn(LM393pin, HIGH, timeout);
Misura il periodo dell’impulso all’uscita del comparatore LM393.
pulse2 = pulseIn(LM393pin, HIGH, timeout);
Facciamo una seconda misura.
pulse = (pulse1+pulse2)/2.0;
Facciamo la media tra le due misure.
frequency = 1E6/(2.0*pulse);
Calcoliamo la frequenza di oscillazione del circuito LC.
inductance = pulse*pulse/(PI*PI*capacitor);
Calcoliamo il valore del dell’induttore.
Conclusioni
Questo progetto semplice ma interessante ci permette di comprendere molti dei concetti teorici di base che riguardano il funzionamento di un induttore.
In caso di dubbi o domande, non esitate a scrivermi nel form qui di seguito.
Buon lavoro!