- Nozioni di base sull'amplificatore operazionale
- Amplificatore a guadagno programmabile funzionante
- Componenti richiesti
- Diagramma schematico
- Codice Arduino per PGA
- Calcoli per amplificatore di guadagno programmabile
- Test del circuito amplificatore a guadagno programmabile
- Pro e contro dell'amplificatore a guadagno programmabile
- Ulteriore miglioramento
Nel settore della misurazione, un blocco funzionale molto cruciale è un amplificatore a guadagno programmabile (PGA). Se sei un appassionato di elettronica o uno studente universitario, probabilmente hai visto un multimetro o un oscilloscopio misurare tensioni molto piccole in modo molto prezioso perché il circuito ha un PGA integrato insieme a un potente ADC che aiuta con il processo di misurazione preciso.
Al giorno d'oggi, l'amplificatore PGA standard offre un amplificatore operazionale, un amplificatore non invertente con un fattore di guadagno programmabile dall'utente. Questo tipo di dispositivo ha un'impedenza di ingresso molto elevata, un'ampia larghezza di banda e un riferimento di tensione di ingresso selezionabile integrato nell'IC. Ma tutte queste funzionalità hanno un costo e, per me, non vale la pena mettere quel costoso chip per un'applicazione generica.
Quindi, per superare queste situazioni, ho escogitato un arrangiamento composto da un amplificatore operazionale, MOSFET e Arduino, attraverso il quale sono stato in grado di modificare il guadagno dell'amplificatore operazionale a livello di programmazione. Quindi, in questo tutorial, ti mostrerò come costruire il tuo amplificatore di guadagno programmabile con un amplificatore operazionale LM358 e MOSFET, e discuterò alcuni pro e contro del circuito insieme ai test.
Nozioni di base sull'amplificatore operazionale
Per capire il funzionamento di questo circuito, è molto importante sapere come funziona un amplificatore operazionale. Scopri di più sull'amplificatore operazionale seguendo questo circuito del tester operazionale.
Nella figura sopra, puoi vedere un amplificatore operazionale. Il lavoro di base di un amplificatore è amplificare un segnale in ingresso, oltre all'amplificazione, l'amplificatore operazionale può anche eseguire varie operazioni come somma, differenziazione, integrazione, ecc. Ulteriori informazioni sull'amplificatore sommatore e sull'amplificatore differenziale qui.
L'amplificatore operazionale ha solo tre terminali. Il terminale con il segno (+) è chiamato ingresso non invertente e il terminale con il segno (-) è chiamato ingresso invertente. Oltre a questi due terminali, il terzo terminale è il terminale di uscita.
Un amplificatore operazionale segue solo due regole
- Nessuna corrente scorre dentro o fuori dagli ingressi dell'amplificatore operazionale.
- L'amplificatore operazionale cerca di mantenere gli ingressi agli stessi livelli di tensione.
Quindi, con queste due regole chiarite, possiamo analizzare i circuiti seguenti. Inoltre, scopri di più sull'amplificatore operazionale passando attraverso vari circuiti basati sull'amplificatore operazionale.
Amplificatore a guadagno programmabile funzionante
La figura sopra ti dà un'idea di base sulla disposizione dei circuiti del mio grezzo amplificatore PGA. In questo circuito, l' amplificatore operazionale è configurato come un amplificatore non invertente e, come tutti sappiamo con una disposizione del circuito non invertente, possiamo cambiare il guadagno dell'amplificatore operazionale cambiando il resistore di feedback o il resistore di ingresso, come puoi vedere dalla disposizione del circuito sopra, ho solo bisogno di cambiare i MOSFET uno alla volta per cambiare il guadagno dell'amplificatore operazionale.
Nella sezione di test, ho fatto solo che ho acceso i MOSFET uno alla volta e ho confrontato i valori misurati con i valori pratici, e puoi osservare i risultati nella sezione "test del circuito" sotto.
Componenti richiesti
- Arduino Nano - 1
- LM358 IC - 1
- Regolatore LM7805 - 1
- Transistor NPN generico BC548 - 2
- MOSFET generico a canale N BS170 - 2
- Resistore 200K - 1
- Resistenza 50K - 2
- Resistenza 24K - 2
- Resistore 6.8K - 1
- Resistenza 1K - 4
- Resistore 4.7K - 1
- 220R, 1% Resistenza - 1
- Interruttore tattile generico - 1
- LED ambra 3mm - 2
- Tagliere generico - 1
- Cavi ponticello generico - 10
- Alimentazione ± 12V - 1
Diagramma schematico
Per una dimostrazione dell'amplificatore a guadagno programmabile, il circuito è costruito su una breadboard senza saldatura con l'aiuto dello schema; Per ridurre l'induttanza parassita interna e la capacità della breadboard, tutti i componenti sono stati posizionati il più vicino possibile.
E se ti stai chiedendo perché c'è un ammasso di fili nella mia breadboard? lasciate che vi dica che serve a fare una buona connessione a terra poiché le connessioni a terra interne in una breadboard sono molto scarse.
Qui l'amplificatore operazionale nel circuito è configurato come un amplificatore non invertente e la tensione di ingresso dal regolatore di tensione 7805 è 4,99 V.
Il valore misurato per il resistore R6 è 6,75K e R7 è 220,8R, questi due resistori formano un partitore di tensione che viene utilizzato per generare la tensione di prova in ingresso per l'amplificatore operazionale. I resistori R8 e R9 vengono utilizzati per limitare la corrente di base in ingresso dei transistor T3 e T4. I resistori R10 e R11 vengono utilizzati per limitare la velocità di commutazione dei MOSFET T1 e T2, altrimenti può causare oscillazioni nel circuito.
In questo blog, voglio mostrarti il motivo per utilizzare un MOSFET piuttosto che un BJT, da cui la disposizione del circuito.
Codice Arduino per PGA
Qui Arduino Nano viene utilizzato per controllare la base del transistor e il gate dei MOSFET, e un multimetro viene utilizzato per mostrare i livelli di tensione perché l'ADC integrato di Arduino fa un pessimo lavoro, quando si tratta di misurare bassi livelli di tensione.
Di seguito viene fornito il codice Arduino completo per questo progetto. Poiché si tratta di un codice Arduino molto semplice, non è necessario includere alcuna libreria. Ma abbiamo bisogno di definire alcune costanti e pin di input come mostrato nel codice.
La void setup () è il principale blocco funzionale dove lettura e un'operazione di scrittura per tutti gli ingressi e le uscite sono eseguite secondo il requisito.
#define BS170_WITH_50K_PIN 9 #define BS170_WITH_24K_PIN 8 #define BC548_WITH_24K_PIN 7 #define BC548_WITH_50K_PIN 6 #define BUTTON_PIN 5 #define LED_PIN1 2 #INdefine 3 LED_PINFINE_PRESS int debounce_counter = 0; void setup () {pinMode (BS170_WITH_50K_PIN, OUTPUT); pinMode (BS170_WITH_24K_PIN, OUTPUT); pinMode (BC548_WITH_24K_PIN, OUTPUT); pinMode (BC548_WITH_50K_PIN, OUTPUT); pinMode (LED_PIN1, OUTPUT); pinMode (LED_PIN2, OUTPUT); pinMode (BUTTON_PIN, INPUT); } void loop () {bool val = digitalRead (BUTTON_PIN); // legge il valore di input if (val == LOW) {debounce_counter ++; if (debounce_counter> PRESSED_CONFIDENCE_LEVEL) {debounce_counter = 0; button_is_pressed ++; } if (button_is_pressed == 0) {digitalWrite (BS170_WITH_50K_PIN, HIGH); digitalWrite (BS170_WITH_24K_PIN, LOW);digitalWrite (BC548_WITH_24K_PIN, LOW); digitalWrite (BC548_WITH_50K_PIN, LOW); digitalWrite (LED_PIN1, LOW); digitalWrite (LED_PIN2, LOW); } if (button_is_pressed == 2) {digitalWrite (BS170_WITH_24K_PIN, HIGH); digitalWrite (BS170_WITH_50K_PIN, LOW); digitalWrite (BC548_WITH_24K_PIN, LOW); digitalWrite (BC548_WITH_50K_PIN, LOW); digitalWrite (LED_PIN1, LOW); digitalWrite (LED_PIN2, HIGH); } if (button_is_pressed == 3) {digitalWrite (BC548_WITH_24K_PIN, HIGH); digitalWrite (BC548_WITH_50K_PIN, LOW); digitalWrite (BS170_WITH_24K_PIN, LOW); digitalWrite (BS170_WITH_50K_PIN, LOW); digitalWrite (LED_PIN1, HIGH); digitalWrite (LED_PIN2, HIGH); } if (button_is_pressed == 1) {digitalWrite (BC548_WITH_50K_PIN, HIGH); digitalWrite (BS170_WITH_50K_PIN, LOW); digitalWrite (BS170_WITH_24K_PIN, LOW); digitalWrite (BC548_WITH_24K_PIN, LOW); digitalWrite (LED_PIN1, HIGH);digitalWrite (LED_PIN2, LOW); } if (button_is_pressed> = 4) {button_is_pressed = 0; }}}
Calcoli per amplificatore di guadagno programmabile
Di seguito sono riportati i valori misurati per il circuito dell'amplificatore PGA.
Vin = 4,99 V R7 = 220,8 Ω R6 = 6,82 KΩ R5 = 199,5 K R4 = 50,45 K R3 = 23,99 K R2 = 23,98 K R1 = 50,5 K
Nota! I valori misurati del resistore sono mostrati perché con i valori misurati del resistore possiamo confrontare strettamente i valori teorici e quelli pratici.
Ora il calcolo dal calcolatore del partitore di tensione è mostrato di seguito,
L'uscita del partitore di tensione è 0,1564 V.
Calcolo del guadagno dell'amplificatore non invertente per le 4 resistenze
Vout quando R1 è il resistore selezionato
Vout = (1+ (199,5 / 50,5)) * 0,1564 = 0,77425 V.
Vout quando R2 è il resistore selezionato
Vout = (1+ (199,5 / 23,98)) * 0,1564 = 1,45755 V.
Vout quando R3 è il resistore selezionato
Vout = (1+ (199,5 / 23,99)) * 0,1564 = 1,45701V
Vout quando R4 è il resistore selezionato
Vout = (1+ (199,5 / 50,45)) * 0,1564 = 0,77486 V.
Ho fatto tutto questo per confrontare i valori teorici e pratici il più vicino possibile.
Dopo aver eseguito tutti i calcoli, possiamo passare alla sezione dei test.
Test del circuito amplificatore a guadagno programmabile
L'immagine sopra mostra la tensione di uscita quando il MOSFET T1 è acceso, quindi la corrente scorre attraverso il resistore R1.
L'immagine sopra mostra la tensione di uscita quando il transistor T4 è acceso, quindi la corrente scorre attraverso il resistore R4.
L'immagine sopra mostra la tensione di uscita quando il MOSFET T2 è acceso, quindi la corrente scorre attraverso il resistore R2.
L'immagine sopra mostra la tensione di uscita quando il transistor T3 è acceso, quindi la corrente scorre attraverso il resistore R3.
Come puoi vedere dallo schema che T1, T2 sono MOSFET e T3, T4 sono transistor. Quindi, quando vengono utilizzati i MOSFET, l'errore è compreso tra 1 e 5 mV, ma quando i transistor vengono utilizzati come interruttori otteniamo un errore tra 10 e 50 mV.
Con i risultati di cui sopra, è chiaro che il MOSFET è la soluzione goto per questo tipo di applicazione, e gli errori teorici e pratici possono essere causati dall'errore di offset dell'amplificatore operazionale.
Nota! Tieni presente che ho aggiunto due LED solo per motivi di test e non puoi trovarli nello schema reale, mostra il codice binario per mostrare quale pin è attivo
Pro e contro dell'amplificatore a guadagno programmabile
Poiché questo circuito è economico, facile e semplice, può essere implementato in molte applicazioni diverse.
Qui il MOSFET viene utilizzato come interruttore per far passare tutta la corrente attraverso il resistore a terra, ecco perché l'effetto della temperatura non è certo, e con i miei limitati strumenti e apparecchiature di prova, non sono stato in grado di mostrarti gli effetti della variazione della temperatura su il circuito.
L'obiettivo di utilizzare un BJT insieme ai MOSFET è perché voglio mostrarti quanto può essere scarso un BJT per questo tipo di applicazione.
I valori dei resistori di retroazione e dei resistori di ingresso devono essere nell'intervallo KΩ, questo perché con valori di resistenza inferiori, più corrente fluirà attraverso il MOSFET, quindi più tensione cadrà attraverso il MOSFET causando risultati imprevedibili.
Ulteriore miglioramento
Il circuito può essere ulteriormente modificato per migliorare le sue prestazioni come se potessimo aggiungere il filtro per respingere i rumori ad alta frequenza.
Poiché in questo test viene utilizzato l'amplificatore operazionale LM358 jelly bean, gli errori di offset dell'amplificatore operazionale giocano un ruolo importante nella tensione di uscita. Quindi può essere ulteriormente migliorato utilizzando un amplificatore strumentale piuttosto che un LM358.
Questo circuito è realizzato solo a scopo dimostrativo. Se stai pensando di utilizzare questo circuito in un'applicazione pratica, devi utilizzare un amplificatore operazionale di tipo chopper e una resistenza da 0,1 ohm ad alta precisione per ottenere una stabilità assoluta.
Spero che questo articolo ti sia piaciuto e che abbia imparato qualcosa di nuovo da esso. Se hai qualche dubbio, puoi chiedere nei commenti qui sotto o puoi usare i nostri forum per una discussione dettagliata.