Amplificare un segnale in tensione

qualcuno ah nozioni di amplificatori operazionali epr aiutarmi ad amplificare un segnale di oltre 1000 volte?
Grazie

Ciao,

non ho ben capito la tua domanda:

amplificare un segnale di oltre 1000 volte

Per segnale intendi forse che vuoi incrementare la tensione in uscita?
Ad esempio inserendo 5V che te ne escano 5000? :roll_eyes:

Me ne entrano 4.8 mV al massimo e devo portarli a 5V.
Il minimo deve essere zero.

N

dai un’occhiata, dovresti trovare ciò che cerchi:
http://digilander.libero.it/nick47/opam.htm
http://www.diee.unica.it/misure/Dispense/Misure_Elettroniche/A1-Circuiti_con_amplificatori_operazionali_07.pdf
http://www.nauticoartiglio.lu.it/didattica/elettronica/amplificatore_operazionale.pdf
credo che tu debba ricorrere alla configurazione ad anello aperto, sempre che tu debba fare solo questa conversione.

Direi proprio di evitare l’anello aperto, gli operazionali sono instabili in quella configurazione.

Allora un’amplificazione di 1000 è abbastanza elevata se hai un segnale che cambia rapidamente (alta frequenza) in genere servono più op-amp (ad esempio 2, uno che amplifica x30 uno che amplifica x34, 30x34=1000)

Se hai un segnale che cambia lentamente (es. DC o pochi hertz) con un op-amp con buon GBW riesci a fare tutto

Che banda ha il tuo segnale? Ovvero quanto cambia rapidamente?

Ciao

se devi complicargli così la vita, tanto vale mettere un tiny con l'ADC configurato a 1,1V. Ho specificato che può usarla se deve fare solo quello, proprio perché è instabile, ma l'instabilità in questo caso è trascurabile, visto che l'effetto che deve ottenere è quello di avere in uscita la tensione di alimentazione, quando in ingresso ha un valore, pur minimo, alternativo a 0.

Più che altro ad anello aperto come imposti il guadagno?
Ad anello aperto basta un disturbo di 5nV con un operazionale come il comune LM358 che ha una banda di 1.1MHz per ritrovarsi l’uscita saturata

Ciao

Non lo imposti, sappiamo che il guadagno è teoricamente infinito, quindi, qualunque sia la tensione in ingresso (in base alla sensibilità dell'op amp) avrai sull'uscita la tensione di alimentazione; è una cosa che ho fatto alcune volte, proprio in casi simili, cioè per effettuare una conversione AD con range di valori di piccole dimensioni.

Me ne entrano 4.8 mV al massimo e devo portarli a 5V.
Il minimo deve essere zero.

Avevo capito che voleva amplificare senza distorsioni, ha in input un valore da 0 a 4.8mV che deve essere amplificato nel range 0 - 4.8V, in anello aperto avrebbe solamente una soglia ON/OFF tra l'altro non "super-immune" ai disturbi.

Ad ogni modo aspettiamo notizie da contecavour per capire bene cosa vuole fare e, se vuole amplificare senza distorsioni, se ha un segnale che varia velocemente o lentamente

Ciao

Grazie flz47655, da come scrivi, ho capito che hai capito il mio livello. Sono un softwarista.

Allora in un post internazionale mi hanno anche consigliato un AD7715.
Oppure come OP un

TI LMV358 (dual) or the TI LMV324 (quad)

.

Allora io ho un sensore di carico loading cell
http://www.phidgets.com/documentation/Phidgets/3132_0_Datasheet.pdf
Lo alimento a 5V quindi mi esce con un valore da 0 a 4,0 mV.
Arduino legge in analogico 0-5V quindi devo ampificare di 1025 volte.
Potrei anche settare il fondo scala del mio MEGA a 1.1 V ma qualcosa dovrei fare ugualmente.

Il mio obiettivo è fare il minor sforzo con l'elettronica e concentrarmi sul progetto.
Cosa mi consigliate.
L'operazionale (doppio o triplo stadio) o il AD7715 ?
E quest'ultimo come lo devo collegare?

Grazie

Michele Menniti, non ho capito.
Cos'è il tiny?

A scusate, la larghezza di banda penso sia minima, devo fare una pesata, quindi posso anche aspettere un certo tempo che si stabilizza.
N

Ciao, anch'io sono stato a lungo tempo softwarista prima di buttarmi sull'elettronica :slight_smile:

L'AD7715 diciamo che è più complicato e costoso dell'utilizzo di un semplice operazionale anche se sicuramente permette buoni risultati. Se non sei molto pratico però rischi di incasinarti, ti consiglio di provare prima le altre soluzioni.

L' LMV358 e l'LMV324 sarebbero ideali perché rail-to-rail (ovvero in uscita possono andare da 0 a 5 Volt se l'alimentazione è 5 volt) ma purtroppo sono disponibili solamente in SMD, se costruisci tu il circuito potresti avere problemi se non hai mai saldato questi componenti.

Se ti accontenti di un segnale amplificato nel range 0-3 volt, rilevabile senza problemi dall'ADC interno ad arduino, soprattutto se impostato a 3.3V potresti amplificare di 750 volte con un semplice LM358 (non è rail to rail quindi la sua uscita non raggiunge 5 volt e quindi se non vuoi alimentarlo a parte con una tensione superiore devi impostare un amplificazione più bassa per non farlo saturare) che trovi in formato DIP con semplicità e saldarlo senza problemi. Secondo me questa soluzione può andare bene, naturalmente testala per bene per vedere se hai problemi di accuratezza, hai eventualmente un oscilloscopio a disposizione?

Riesci a fare tutto addirittura con un singolo operazionale (l'IC ne contiene due al suo interno) e quindi potresti gestire addirittura 2 sensori perché se non hai un segnale che varia velocemente l'amplificazione è maggiore.

Per amplificare devi utilizzare ad esempio l'amplificatore in configurazione invertente Amplificatore operazionale - Wikipedia con le due resistenze dimensionate in modo da averne una (tra uscita e ingresso non invertente) 750 volte più grande dell'altra. Non scegliere valori assurdi, ad esempio 100 e 75K dovrebbero andare bene (ho visto che il suo sensore ha un'impedenza di uscita di 1K ohm, se c'è qualcuno più esperto di me dica se i valori che ho scelto non sono ottimali)

In parallelo alla resistenza "grossa" se metti un condensatore riesci a filtrare il rumore, per calcolare il condensatore puoi semplicemente usare la formula del circuito RC passa basso Filtro passa basso - Wikipedia impostando come frequenza una decina di Hertz, la resistenza sarà 75K se usi il valore che ti ho dato prima. Ti lascio questo conto, fammi sapere se hai difficoltà.

In pratica gli operazionali hanno un parametro GBW che sarebbe il guadagno massimo in continua, l'LM358 ha 1.1MHz quindi in teoria può amplificare di un milione di volte un segnale costante (l'uscita naturalmente si fermerà alla tensione di alimentazione meno qualche volt e si dirà saturata quando non può più crescere).

Se però hai un segnale che varia, ad esempio 10 volte al secondo, o a 10 Hz (è una semplificazione, il segnale dovrebbe essere una sinusoide perfetta in questo esempio) non puoi amplificare più di GBW / f quindi non più di 110K volte. E' bene non avvicinarsi troppo ai limiti per evitare distorsioni però.

Ciao

PS: Non leggerai mai il valore 0 perché il sensore da sempre almeno 0.8mV in uscita, da software devi quindi tarare correttamente il sensore

Intanto grazie.

Non ci sono rail to rail da montare su breadboard quindi? Neanche comprando online all'estero?

Io ho un Arduino MEGA:
DEFAULT: the default analog reference of 5 volts (on 5V Arduino boards) or 3.3 volts (on 3.3V Arduino boards)
INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)
INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)
Quindi posso scegliere o 1.1 o 2.56 o 5V

Parliamo per adesso del LM358. Io lo alimenterei con le tensioni di power di arduino che sono o 5V o 3V (3.3???)
Di sensore comunque ne ho solo uno, quindi posso usarlo come 2 stadi?

Perchè mi consigli invertente? E mui sai spiegare nella pratica che differenza c'è?
In tutti gli esempi che avevo selezionato lo avevo trovato non invertente.

Come filtro passa basso intendi l'attivo vero?
Non dovrei aver difficoltà a calcolarlo
C= 1/ 2 piGreco R f

Come frequenza non vedo valori...devo fare una pesata. quindi aspettare che il segnale si stabilizzi (credo)
Che ne dici?

N

V

flz47655:
PS: Non leggerai mai il valore 0 perché il sensore da sempre almeno 0.8mV in uscita, da software devi quindi tarare correttamente il sensore

Mi ero perso questa cosa.
Ma perchè?
N

E di questo che ne dite AD8047/AD8048 ?

N

Ma tra questi ce ne è uno che andrebbe bene per me?
rail to rail 1250 di guadagno DIP

http://it.rs-online.com/web/p/products/0403036/?cm_mmc=IT-PPC-0411-_-google-_-3_EEM-MPN-_-mcp6002-i/p_Broad
http://docs-europe.electrocomponents.com/webdocs/002f/0900766b8002ffab.pdf

...

MCP6002-I/P
MCP602-I/P
MCP607-I/P
TLV272IP
TLV2372IP
TLC2272CP
TLV2462CP
OPA2340PA
OPA2743PA
OPA2350PA
OPA2336P
OPA2251PA
OPA2241PA
OPA2704PA

Nic

Si, puoi utilizzare un MCP6002, è rail-to-rail ed in formato DIP al posto di un LM358 ma non credere che la situazione migliori di molto.. il risultato secondo me è già molto buono ai fini pratici.

Con Arduino puoi impostare la tensione di riferimento a piacere (deve essere minore di 5v) basta utilizzare il pin Ref, quindi anche usando un LM358 alla fine non avresti problemi, se imposta la tensione di riferimento a 3.3V puoi utilizzare con semplicità anche l'LM358, ad ogni modo un MCP6002 ti evita questo passaggio.

Consigliavo l'LM358 perché in genere lo si ha già in casa o è di più facile reperibilità, ad ogni modo se utilizzi un MCP6001/2/4 (cambia il numero di op-amp all'interno dell'integrato) puoi usare il riferimento di default di 5v di Arduino.

Usare un AD8047 non ha molto senso.. sarebbe come fare il tiro con l'arco con un cannone.. è un op-amp pensato per segnali molto veloci, non costanti.

Il tuo sensore avrà una sua qualche elettronica dentro o si baserà su qualche fenomeno fisico che genera un output che parte da 0.8mV, basta sapere questo per poterlo usare, non viene detto il perché.

Parliamo per adesso del LM358. Io lo alimenterei con le tensioni di power di arduino che sono o 5V o 3V (3.3???)
Di sensore comunque ne ho solo uno, quindi posso usarlo come 2 stadi?

Arduino ha due regolatori di tensione che forniscono 3.3V e 5V. Puoi usarlo come due stadi ma visto che il segnale è praticamente DC (mettiamo 10Hz) cambierà molto poco (idealmente nulla), comunque ti consiglio di fare delle prove e scegliere la soluzione migliore.

Perchè mi consigli invertente? E mui sai spiegare nella pratica che differenza c'è?

Visto che il segnale è praticamente costante invertente o no non cambia nulla, è secondo me più semplice da costruire.
Nella pratica hai uno sfasamento di 90° per questo è detto invertente, uno sfasamento corrisponderebbe ad un piccolo ritardo, ad esempio se hai un segnale seno esce un segnale coseno.

Come filtro passa basso intendi l'attivo vero?
Non dovrei aver difficoltà a calcolarlo
C= 1/ 2 piGreco R f
Come frequenza non vedo valori...devo fare una pesata. quindi aspettare che il segnale si stabilizzi (credo)
Che ne dici?

E' indifferente, la formula è uguale alla rete R-C. Come detto al posto della frequenza usa 10 Hz. Per stabilizzare il segnale basta che non fai più di una pesata al secondo e sei a posto stando molto larghi. Potresti farne anche 10 al secondo ad ogni modo, La frequenza è inversamente proporzionale al tempo f=1/T.

Ciao

flz47655:
Con Arduino puoi impostare la tensione di riferimento a piacere (deve essere minore di 5v) basta utilizzare il pin Ref, quindi anche usando un LM358 alla fine non avresti problemi, se imposta la tensione di riferimento a 3.3V puoi utilizzare con semplicità anche l'LM358, ad ogni modo un MCP6002 ti evita questo passaggio.

Ma se uso Ref devo avere un generatore di tensione esterno?
Vorrei evitarlo. Preferirei stare sui valori generati direttamente da Arduino.
Non riesco ad usare il 2.56?

Arduino ha due regolatori di tensione che forniscono 3.3V e 5V. Puoi usarlo come due stadi ma visto che il segnale è praticamente DC (mettiamo 10Hz) cambierà molto poco (idealmente nulla), comunque ti consiglio di fare delle prove e scegliere la soluzione migliore.

Cosa vuol dire posso usarlo come un due stadi?

In parallelo alla resistenza "grossa" se metti un condensatore riesci a filtrare il rumore, per calcolare il condensatore puoi semplicemente usare la formula del circuito RC passa basso Filtro passa basso - Wikipedia impostando come frequenza una decina di Hertz, la resistenza sarà 75K se usi il valore che ti ho dato prima. Ti lascio questo conto, fammi sapere se hai difficoltà.

Per il calcolo uso questa regola?
C= 1/ 2 piGreco R f
C = 1 / 2 piGreco 75000 10
C = 2,1220659078919378102517835116335e-7
C=0,2122 uF
Ti sembra coerente?

Adesso sento che opAmp riesco a trovare e poi ti dico
Grazie mille

Ok vado sul LM358 gli altri li dovrei ordinare online.
Adesso prima di andare a far la spesa vorrei ripassare tutto.

LM358 lo alimento a 5 o a 3.3?

Per leggere la tensione amplificata posso scegliere tra questi settaggi (giusto?):
DEFAULT: the default analog reference of 5 volts (on 5V Arduino boards) or 3.3 volts (on 3.3V Arduino boards)
INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)
INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)

Quindi a quanto consigli di alimentarlo e su che tensione andiamo?
Forse converrebbe settare il MEGA a 1.1 in ingresso cosi amplifichiamo meno, pensi sia migliore?

Nic