Come controllare un amplificatore operazionale invertente usando Arduino UNO e un potenziometro digitale

Cosa è un amplificatore operazionale?

L’amplificatore operazionale (detto anche opamp) è un componente elettronico analogico a stato solido capace, come dice anche il suo nome, di amplificare un segnale elettrico. È definito operazionale perché è in grado di svolgere alcune operazioni matematiche in maniera totalmente analogica su segnali elettrici. Le operazioni generalmente possibili sono la somma, la sottrazione, la derivazione e l’integrazione, il logaritmo etc etc.
È anche parte fondamentale dei filtri attivi passa-basso, passa-alto, passa-banda, notch etc etc.

È dotato di due ingressi, uno invertente (indicato col segno -) e uno non invertente (indicato col segno +), e di una uscita. Viene alimentato, in genere, con una tensione duale (di solito indicata coi segni V+ e V).

Nel caso il segnale entri attraverso l’ingresso non invertente, il segnale di uscita si trova con la stessa fase del segnale di ingresso. Se invece il segnale entra nell’ingresso invertente, il segnale di uscita sarà in opposizione di fase (sfasato cioè di 180 gradi) rispetto al segnale in ingresso.

Un amplificatore invertente è, quindi, un amplifcatore operazionale il cui ingresso non invertente è collegato a massa mentre quello invertente è collegato alla sorgente di ingresso VINPUT.

Schema elettrico di un amplificatore operazionale in configurazione invertente
Schema elettrico di un amplificatore operazionale in configurazione invertente

Questo circuito prende il segnale al morsetto INPUT e lo ripropone in OUTPUT amplificato (cioè moltiplicato per un valore chiamato guadagno che indicheremo col simbolo G).

Quindi, in formula, abbiamo che:

VOUTPUT = G * VINPUT

Abbiamo detto che questo amplificatore inverte la fase del segnale di uscita rispetto alla fase del segnale in ingresso (i due segnali sono sfasati di 180°). Questo significa che il valore di G è negativo. Se per esempio il segnale in ingresso fosse amplificato di 10 volte, avremmo che G = -10 [V/V] e quindi:

VOUTPUT = -10 * VINPUT

Se, per esempio, il segnale VINPUT = 1V avremmo che VOUTPUT = -10 V mentre con VINPUT = -1 V avremmo VOUTPUT = 10 V.

In pratica il segnale in uscita è dato dal segnale di ingresso ingrandito di 10 volte e ribaltato.

NOTA: il guadagno, essendo il rapporto tra due tensioni

G = VOUTPUT / VINPUT

è espresso da un numero puro. Possiamo comunque esprimerlo, alternativamente, con la notazione [V/V] (che è sempre un numero puro).

Come si imposta il guadagno dell’amplificatore invertente?

Il guadagno è facilmente determinato a partire dai valori delle due resistenze R1 e R2. In particolare abbiamo che il guadagno, in valore assoluto, è dato da:

|G| = R2 / R1

Quindi, se avessimo R1 = 1 kΩ e R2 = 10 KΩ, avremmo che |G| = 10.

Considerando lo sfasamento di 180° abbiamo che

G = -R2 / R1

Con i valori dell’esempio precedente abbiamo che G = -10 [V/V].

Detto in altre parole:

VOUTPUT = -(R2 / R1) * VINPUT

cioè:

VOUTPUT = -10 * VINPUT

Il guadagno può essere anche espresso in dB (decibel) secondo la relazione:

GdB = 20 * log(|G|) = 20 * log(|-R2 / R1|) = 20 * log (R2 / R1)

Per esempio, se R1 e R2 fossero da 1 kΩ e 10 kΩ rispettivamente, si avrebbe G = -10 [V/V] e GdB = 20 dB. Se R1 e R2 fossero da 2 kΩ e 15 kΩ rispettivamente, si avrebbe G = -7.5 [V/V] e GdB = 17.5 dB.

Volendo simulare il circuito, si può ricorrere al ben noto software LTspice che anche noi abbiamo abbondantemente utilizzato col nostro amplificatore.

Prima di tutto disegniamo lo schematico e poi lo simuliamo (nel dominio del tempo e nel dominio della frequenza):

Un amplificatore invertente simulato con LTSpice
Un amplificatore invertente simulato con LTSpice

Vogliamo determinare il guadagno dell’amplificatore in funzione del valore di R2.

Nel nostro schema è presente una direttiva SPICE (.step param R 1k 10k 1k) che fa in modo che la simulazione venga effettuata per vari valori di R2. La resistenza R2 quindi assumerà il valore iniziale di 1 kΩ e verrà incrementata di 1 kΩ per ogni step fino a raggiungere il valore massimo di 10 kΩ. Se eseguiamo la simulazione nel dominio della frequenza possiamo osservare che il guadagno GdB varia in funzione del valore di R2:

  • R1 = 1KΩ, R2 = 1KΩ, |G| = 1, GdB = 0 dB, Vin-picco = 0.1 V, Vout-picco = 0.1 V
  • R1 = 1KΩ, R2 = 2KΩ, |G| = 2, GdB = 6 dB, Vin-picco = 0.1 V, Vout-picco = 0.2 V
  • R1 = 1KΩ, R2 = 3KΩ, |G| = 3, GdB = 9.54 dB, Vin-picco = 0.1 V, Vout-picco = 0.3 V
  • R1 = 1KΩ, R2 = 4KΩ, |G| = 4, GdB = 12 dB, Vin-picco = 0.1 V, Vout-picco = 0.4 V
  • R1 = 1KΩ, R2 = 5KΩ, |G| = 5, GdB = 14 dB, Vin-picco = 0.1 V, Vout-picco = 0.5 V
  • R1 = 1KΩ, R2 = 6KΩ, |G| = 6, GdB = 15.6 dB, Vin-picco = 0.1 V, Vout-picco = 0.6 V
  • R1 = 1KΩ, R2 = 7KΩ, |G| = 7, GdB = 16.9 dB, Vin-picco = 0.1 V, Vout-picco = 0.7 V
  • R1 = 1KΩ, R2 = 8KΩ, |G| = 8, GdB = 18 dB, Vin-picco = 0.1 V, Vout-picco = 0.8 V
  • R1 = 1KΩ, R2 = 9KΩ, |G| = 9, GdB = 19.1 dB, Vin-picco = 0.1 V, Vout-picco = 0.9 V
  • R1 = 1KΩ, R2 = 10KΩ, |G| = 10, GdB = 20 dB, Vin-picco = 0.1 V, Vout-picco = 1 V

Facendo la simulazione vediamo come il guadagno varia ad ogni step:

Diagrammi di Bode che mostrano la variazione del guadagno al variare di R2
Diagrammi di Bode che mostrano la variazione del guadagno al variare di R2

Nell’immagine sotto si possono osservare le variazioni di VOUTPUT al variare del guadagno G (a sua volta funzione di R2):

L'ampiezza del segnale in uscita cambia al variare del valore di G
L’ampiezza del segnale in uscita cambia al variare del valore di G

Proviamo ora a realizzare un semplice prototipo di amplificatore con guadagno fisso. Se prendiamo R1 ed R2 uguali a 1 kΩ e Rd uguale a 4.7 kΩ il guadagno sarà pari a G = – (R2 + Rd)/R1 = -5.7 [V/V] (15.12 dB):

Amplificatore invertente con guadagno fisso
Amplificatore invertente con guadagno fisso

Di che componenti abbiamo bisogno?

La lista dei componenti non è particolarmente lunga:

  • una breadboard per connettere la scheda Arduino UNO agli altri componenti
  • alcuni fili DuPont (maschio – maschio, maschio – femmina, femmina – femmina)
  • 2 resistori da 10kΩ
  • 2 resistori da 47kΩ
  • 1 resistore da 4.7kΩ
  • un amplificatore operazionale LM833
  • un potenziometro digitale MCP41010
  • un connettore per batteria da 9V
  • una batteria da 9V
  • e, ovviamente, una scheda Arduino UNO!

Realizzazione del prototipo

Proviamo ora a realizzare il circuito su breadboard seguendo lo schema Fritzing sottostante:

Schema di collegamento dell'amplificatore invertente con guadagno fisso
Schema di collegamento dell’amplificatore invertente con guadagno fisso

I due resistori da 47kΩ dividono la tensione di alimentazione (9V) in modo da creare una massa virtuale. Quindi la giunzione dei due resistori è la massa del circuito mentre le due alimentazioni duali saranno V+ = 4.5V e V = -4.5V rispetto alla massa virtuale.

Ecco come appare il nostro prototipo:

L'amplificatore invertente sotto test
L’amplificatore invertente sotto test

L’immagine sotto mostra il segnale di ingresso in celeste (con un valore di picco pari a 0.42V) e il segnale di uscita in giallo (con un valore di picco pari a 2.32V). Il valore assoluto del guadagno è quindi pari a 2.32V/0.42V = 5.52 [V/V]. Dall’immagine si può anche notare come i due segnali siano sfasati di 180° (sono cioè in opposizione di fase) proprio perchè si tratta di un amplificatore invertente (che inverte la fase del segnale di uscita rispetto a quella del segnale di ingresso):

I segnali di ingresso e uscita all'oscilloscopio
I segnali di ingresso e uscita all’oscilloscopio

Ora sostituiamo il resistore Rd col nostro potenziometro digitale.

Per maggiori informazioni su come controllare un potenziometro digitale tramite Arduino, vi invitiamo a dare un’occhiata al nostro articolo Come controllare un potenziometro digitale con Arduino UNO

Colleghiamo ora il nostro circuito come mostrato nella figura sottostante:

L'amplificatore invertente con il potenziometro digitale controllato da Arduino UNO
L’amplificatore invertente con il potenziometro digitale controllato da Arduino UNO

In questo caso abbiamo due alimentazioni separate: quella duale per l’operazionale che abbiamo visto prima e quella a 5V proveniente da Arduino per alimentare il potenziometro digitale.

La massa virtuale dell’operazionale e la massa di Arduino coincidono.

Lo sketch

Potete scaricare il codice dal link qua sotto:

Per il primo test impostiamo il valore di Rd a 4.7 kΩ quindi la funzione loop dello sketch dovrebbe essere così:

void loop() {
    int i = 128; // R = 4700 Ω
    spi_out(CS_signal, cmd_byte2, i);
}

In questo caso la resistenza è sempre costantemente impostata a 4.7 kΩ quindi il guadagno non varia.

Carichiamo lo sketch su Arduino, mettiamo in ingresso all’amplificatore un segnale sinusoidale (ampiezza 0.4 – 0.5 V, f = 1 khz) e misuriamo l’output.

Nel nostro circuito di test abbiamo questa situazione: valore di picco del segnale di ingresso 0.4V con f = 1khz, valore di picco del segnale in uscita 2.24V. Il guadagno è quindi pari a 5.6V/V.

I valori dei segnali di ingresso e di uscita (col potenziometro digitale collegato)
I valori dei segnali di ingresso e di uscita (col potenziometro digitale collegato)

Ora proviamo a cambiare dinamicamente il guadagno dell’amplificatore, alternando tra due valori di Rd (4.7 kΩ e 9 kΩ) quindi la funzione loop dello sketch dovrebbe apparire così:

void loop() {
    int i = 128; // R = 4700 Ω
    spi_out(CS_signal, cmd_byte2, i);
    Serial.print("value i = ");
    Serial.print(i);
    Serial.println(" R = 4700 Ω");
    delay(5000);

    i = 0; // R = 9000 Ω
    spi_out(CS_signal, cmd_byte2, i);
    Serial.print("value i = ");
    Serial.print(i);
    Serial.println(" R = 9000 Ω");
    delay(5000);
}

Nel video sotto si può osservare il risultato del test:

Guadagno modificato dinamicamente da Arduino misurato con l’oscilloscopio

ll guadagno varia tra 5.4 (corrispondente a Rd = 4.7 kΩ) e 9 (corrispondente a Rd = 9 kΩ).

Nel video sotto possiamo vedere come varia il valore di Rd misurato con un multimetro digitale (senza l’operazionale):

Variazione del valore di Rd misurato con un multimetro digitale

Newsletter

Se vuoi essere aggiornato sui nuovi articoli, iscriviti alla newsletter. Prima dell’iscrizione alla newsletter leggi la pagina Privacy Policy (UE)

Se ti vuoi disiscrivere dalla newsletter clicca sul link che troverai nella mail della newsletter.

Inserisci il tuo nome
Inserisci la tua email
0 0 votes
Valutazione articolo
guest
0 Commenti
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
Torna in alto