|
Autore |
Messaggio |
opzioni |
d-link
postato il: 19.02.2021, alle ore 23:12 |
Arduino pro mini 3.3V e interfaccia ADC per sensori industriali
Buonasera ragazzi, è da un po' che non mi faccio sentire sul forum.
Sto progettando un'interfaccia che possa essere utilizzabile con arduino pro mini alimentato a 3.3V e in grado di leggere (tramite l'ADC interno) i seguenti input:
- Sensori 0-10V
- Sensori 0-20mA
- Contatti liberi (es. finecorsa, etc...)
Cercando sul web, ho notato questa realizzazione sfruttando un Amplificatore operazionale:
Si tratta di una porzione dello schema completo della IonoBoard, azienda italiana (https://www.sferalabs.cc/files/ionoard/doc/ionoard-sch.pdf)...la soluzione mi sembra molto furba (Input pulito, tensione o corrente)!
Il problema è che ho solamente a disposizione una tensione di 3.3V e nient'altro: non voglio perdermi nell'utilizzare altre alimentazioni aggiuntive.
Per cercare di risolvere il problema (in quanto l'LM224D non è rail-to-rail), ho selezionato un LMV324A (https://datasheet.lcsc.com/szlcsc/2001151102_Texas-Instrumen…)
Dite che potrebbe funzionare? ci sono da adattare le resistenze dei partitori in ingresso all'amplificatore? c'è da adattare la resistenza di feedback?
Vi chiedo la cortesia di darmi una mano...non molto esperto di amplificatori operazionali e in generale ho bisogno di una bella spiegazione a supporto del mio ragionamento...che allo stato attuale è solamente dettato dall'intuito...
Vi ringrazio |
|
d-link
postato il: 19.02.2021, alle ore 23:12 |
P.S.: sono ben accette anche soluzioni differenti!
|
|
primok
postato il: 20.02.2021, alle ore 10:39 |
d-link: P.S.: sono ben accette anche soluzioni differenti!
Per me non devi cambiare nulla, la tensione d'uscita al massimo arriverà alla tensione di alimentazione dell'operazionale. Il diodo BAT54 impedisce che la tensione sul morsetto + superi la tensione del suo catodo.
Più piccola è la mente più grande è la presunzione. |
|
primok
postato il: 20.02.2021, alle ore 10:47 |
Se proprio vuoi essere pignolo dovresti applicare il principio di sovrapposizione degli effetti. Verificare che tensione è presente sul morsetto + quando uno degli ingressi è nullo e quando è massimo con il circuito che ne consegue. La resistenza di retroazione non dovrebbe influire molto. Il circuito dovrebbe essere un inseguitore.
Saluti.
Più piccola è la mente più grande è la presunzione. |
|
GioRock
postato il: 20.02.2021, alle ore 14:09 |
Ho simulato lo schema postato utilizzando un LMV321M5 che è un singolo OA con +3.3V di alimentazione, devo dire che la risposta in uscita è molto lineare e precisa, c'è solamente un piccolo OFFSET di circa 25mV con cui fare poi i conti con l'ADC, per quanto riguarda l'INPUT dei contatti puliti, se l'uscita supera l'OFFSET allora si ottiene un riscontro positivo, al pari o al di sopra dei 7V abbiamo l'OUTPUT MAX che risulta 8mV circa in meno dell'alimentazione essendo appunto un RAIL-TO-RAIL...
Queste comunque sono tutte cose da testare sul circuito reale prima ancora di programmare Arduino se si vogliono ottenere valori attendibili in lettura...
Gio |
|
d-link
postato il: 20.02.2021, alle ore 14:47 |
Grazie delle risposte, quindi mi viene da dire che non sono proprio fuori strada.
Adesso vorrei capire come poter ridurre al minimo l'offset che hai riscontrato, sto idealmente cercando di capire se utilizzando un NCS2006 posso ridurlo ancora di più: https://datasheet.lcsc.com/szlcsc/ON-Semicon-ON-NCS20062DR2G…
|
|
d-link
postato il: 20.02.2021, alle ore 14:50 |
GioRock, ho un paio di ulteriori domande:
- Come hai fatto a simulare il circuito?
- La resistenza in uscita dall'op-amp (per intenderci la R36), è eliminabile? mi sembra che risulti come resistenza di limitazione per la vecchia configurazione circuitale... |
|
GioRock
postato il: 20.02.2021, alle ore 18:02 |
Ho provato questo AD8601 ed ha un OFFSET di 275uV con un RAIL di 1mV o poco più rispetto a VCC, a me sembra più che buono, poi magari se ne trovano di ancora migliori...
Puoi ad ogni modo spalmare le letture in base alla risoluzione che utilizzerai tenendo conto dell'OFFSET, esempio a 10bit:
V = (RAIL - OFFSET) / 1023 = mV x punto
in seguito sommerai l'offset per avere il valore corretto...
La resistenza non influisce molto sull'uscita anzi, servirà da adattatore d'impedenza per l'ADC dell'Arduino, stai comunque lavorando in tensione e non ci saranno grosse variazioni nella linearità ...
Gio |
|
d-link
postato il: 20.02.2021, alle ore 18:40 |
Ti ringrazio delle info, ad ogni modo, la resistenza in uscita l'ho eliminata: mi sembra superflua.
Faccio alcune prove e vi dico, grazie intanto!
|
|
d-link
postato il: 04.03.2021, alle ore 16:20 |
@GioRock,
Sto iniziando a scrivere lo sketch e ho un paio di dubbi sulla quale probabilmente saprai darmi una mano...
L'atmega328p è alimentato a 3.3V (tramite un MCP1700) e gira a 8Mhz.
Dato che la tensione è regolata tramite l'MCP1700, intuisco che la soluzione più corretta può essere quella di lasciare il riferimento dell'ADC a default...o sbaglio?
Per quanto riguarda la misurazione del segnale 0-10V, alla fine della faccenda ho scelto di utilizzare un NCS2006 (https://www.onsemi.com/pdf/datasheet/ncs2006-d.pdf), ma non capisco se il valore di 4mV di offset che leggo sul datasheet è il valore che dovrò sostituire alla formula seguente:
V = (RAIL - OFFSET) / 1023 = mV x punto
che diventerebbe
V = (3.3 - 0.004) / 1023 = mV x punto -> mV x punto + 0.004 (Sommando l'offset)
Inoltre, sul datasheet non riesco ad individuare il valore massimo del cosiddetto rail to rail, che di solito è di qualche mV inferiore rispetto a VCC
Mi sto perdendo qualcosa?
|
|
|