Amperometro con Arduino, shunt e LM358

Un saluto a tutti.

Allo scopo di sperimentare con Arduino e applicare un po' di conoscenza appresa durante gli studi di elettronica, ho realizzato un circuito che vorrei inserire in un alimentatore 13,8 V. - 30 A. max per uso radioamatoriale.

La misurazione di corrente avviene grazie ad uno shunt da 0,0015 ohm applicato in modalità "low side" da cui si preleva una debole tensione nell'ordine di pochi mV. (75 mV max. a 50 A.).

Per amplificare la tensione e traslarla nel range 0 - 5V. per applicarla sulla porta analogica A0 di Arduino, ho usato un OPAmp LM358: le misure con il voltmetro hanno dato esito positivo.

A questo punto sono passato alla fase successiva, cioè quella di collegare Arduino per campionare la tensione in uscita dal LM358. Per alimentare Arduino ho usato la stessa tensione dell'alimentatore utilizzando il pin VIN, ma nel momento in cui accendo il circuito, Arduino si accende regolarmente ma l'LM358 smette di amplificare e in uscita (pin 1 del LM358) mi ritrovo più o meno la stessa tensione di ingresso (applicata sul pin 3).

Ho quindi rimosso il collegamento del pin VIN di Arduino e l'LM358 ha ripreso a funzionare (ovviamente Arduino si è spento).

A questo punto ho alimentato Arduino con un secondo alimentatore da 9 volt, tenendo le masse collegate per avere un unico riferimento a GND, collegando il pin VIN di Arduino al +9V e il circuito ha funzionato correttamente.

Sono certo che c'è una spiegazione a tutto ciò, ma mio malgrado, non sono riuscito a trovarla.

Sarei grato a chi - avendo più esperienza di me - potesse spiegarmi il motivo di questo "strano fenomeno" e aiutarmi a trovare una soluzione.

Allego lo schema realizzato a penna, scusandomi in anticipo per la qualità.

Grazie.

1 Like

Buongiorno e benvenuto, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà (eventuali risposte verrebbero cancellate), quindi ti consiglio di farla al più presto. :wink:

Ok, fatto! Scusa... regolamento letto!

Ciao, benvenuto! :slight_smile:

E' da ieri che osservo il tuo schema, molto chiaro, ma non riesco proprio a trovare un errore! Sembra che con 13,8V accada qualcosa di indesiderato...

+1 per la chiarezza. Grazie!

Concordo, non vedo cose particolari per cui non dovrebbe funzionare ... :roll_eyes:

In ogni caso, 13.8V su VIN sono comunque eccessivi ... ricordiamoci che c'è un regolatore lineare che deve portare i 13.8V a 5V ... 8.8V di caduta, moltiplicati anche solo per 100mA che può assorbire Arduino, portano ad una dissipazone di 880mW :fire: :fire: :fire:

Su VIN si possono dare dai 7 ai 12V, 9V vanno benone, già 12V provocano facilmente, con poche cose collegate. qualche surriscaldamento del regolatore.

Guglielmo

Ti faccio notare che con 13.8 v l'uscita del LM 358 può arrivare a 11,8 volt tensione non tollerabile da Arduino(max 5 v), anche a 9v è troppo alta, 7V.
Ti consiglio di limitare la tensione a 5 volts mettendo in serie una resistenza da 1k e uno zener da 5v1 o 4v7

Grazie Icio ... della parte analogica proprio non mi ero preoccupato ... :crazy_face:

Guglielmo

Inoltre metti un condensatore tra pin3 lm358 e massa, da 100nF o più, vedrai che funzionerà tutto

@Datman @gpb01 @icio anche con un IC uA7809 su VIN fa lo stesso

@icio provo e ti faccio sapere

Capisco quello che affermi, ma se lo shunt a 50 A. fornisce una tensione max. di 0,075V. è sufficiente calcolare il guadagno in modo da ottenere il picco di 5V, quindi pur alimentando l'LM358 a tensione superiore a 5, in uscita avrò sempre una tensione compresa tra 0 e 5V.

1 Like

Ho inserito un 7809 su VIN per evitare di sovraccaricare ARDUINO (anche se nello schema non c'è)

Prova a mettere 100nF + 47uF fra l'8 e il 4, ma non mi sembra un problema dovuto ad autooscillazioni.

@Datman ok, provo e ti faccio sapere. Grazie ancora :wink:

Altra prova che farei : se invece di staccare il positivo dell'arduino scolleghi A0 cosa succede all'LM358?
Poi, rinnovando i complimenti fatti da Datman circa l'esposizione del problema (cosa ahimè rara sui forum), non sarebbe male anche avere una foto completa del setup, perchè aldilà dello schema (che è chiaro), ritengo sia necessario capire come e dove sono effettivamente realizzati i collegamenti.

Ciao, Ale.

Fa lo stesso anche con A0 scollegato.... in pratica basta alimentare Arduino sulla stessa alimentazione del LM358 per mandare in tilt quest'ultimo.

Stasera applicherò i consigli che sono emersi in questa discussione e - sostituirò l'LM358 con un altro LM358... mi sta venendo il dubbio che il problema sia l'IC stesso.

Allora segui i consigli che ti sono stati dati, a cui aggiungerei di occuparsi anche degli ingressi liberi dell'LM358, vedi es. qui.

Ciao, Ale.

Buonasera,

torno sull'argomento poichè oggi ho avuto un po' di tempo di seguire in vostri consigli e dedicarmi a questo problema.

La situazione non è cambiata in nessuno dei casi.

Tuttavia ho continuato a smanettare sul circuito, staccando del tutto Arduino, ed è emerso quanto segue

Ho alimentato il circuito (escludendo Arduino) a cui avevo aggiunto un uA7809 per non sovraccaricare Arduino e ho usato come CARICO una lampadina 12V che assorbe circa 1,7 A. Ponendo il Voltmetro ai capi dello shunt misuro circa 2,5 mV. e facendo lo stesso all'uscita del LM358, misuro circa 250 mV.

Questi dati sono coerenti poichè il guadagno impostato sul OPamp è di circa 100 e lo shunt è 75mV. su 50A: 0,075 : 50 = x : 1,7 = 0,00255 V. è la tensione teorica sullo shunt, mentre 0,00255 * 100 = 0,255 dovrebbe essere quella prelevata all'uscita del OPamp.

Fin qui tutto fila liscio.

A questo punto, invece di collegare Arduino - come ho fatto in precedenza - sulla stessa linea di alimentazione del LM358, ho usato una piccola porzione di striscia LED che a 9V. assorbe circa 20mA. e l'ho collegata tra il pin 8 (Vcc) del LM358 e GND.

La striscia Led si accende regolarmente, sullo shunt misuro sempre 2,5 mV., ma all'uscita (pin 1) dell'OPamp, la tensione è pressappoco quella in ingresso. Il fenomeno diventa evidente staccando e collegando la piccola striscia led, la tensione infatti, torna ai livelli attesi quando la stacco e ripiomba quasi a zero quando l'attacco.

A corredo di tutte le prove effettuate, aggiungo che sono stati applicati anche i suggerimenti che mi sono stati forniti.

Vi ringrazio ancora per l'aiuto e soprattutto la pazienza, poichè - a questo punto - si deduce che Arduino non c'entra niente e non so nemmeno se questo post sia pertinente con il Forum.

Saluti

Per completezza aggiungo un paio di foto nel dettaglio del circuito

Assorbendo 20mA dall'alimentazione dell'LM358 non deve cambiare nulla! Hai un falso contatto sulla breadboard... Assorbendo quei 20mA, la tensione direttamente sui pin dell'LM358 varia?
Mi sa che è il ponticello fra il 4 e massa che non fa contatto...