Interfacciare 4-20mA e RS232 con arduino

Buongiorno a tutti, mi presento, mi chiamo Alberto, ho 30 anni e sono di padova. Ne approfitto anche per farvi i complimenti, vi leggo spesso e ammiro alcuni di voi, molto preparati e competenti.
Vi espongo il motivo della mia richiesta:
ho un piccolo impiantino di riciclo acque bianche a casa con delle centraline di misurazione in linea che monitorano costantemente i valori di pH, conducibilità e temperatura dell' acqua. Ora però mi piacerebbe avere una documentazione su questi valori che mi consenta di avere sempre sott'occhio la situazione. Mi piacerebbe cioè fare una stampa ad intervalli di tempo regolari di questi dati per poi verificarne l' andamento. Ho visto che esiste una stampantina termica per Arduino e mi piacerebbe usare quella. Ora, dai miei strumenti posso tirarmi fuori i dati o tramite un' uscita 4-20mA presente in alcuni di essi oppure, da un'uscita RS 232. Il mio dilemma è come farli entrare nell'Arduino. Posso fare entrare una 4-20mA cosi com'è? E per quanto riguarda l'RS 232? Ultima cosa, vorrei che la comunicazione avvenisse wireless, cosa mi consigliate? Io uso arduino UNO.
Grazie mille
Alberto

I sensori che citi vanno collegati ad una tensione meglio se stabilizzata tramite un opportuna resistenza R. Ai capi di questa misurerai la sua caduta che vale V=IR dalla quale deduci I

metti il link ad uno dei sensori di cui vuoi parlare.

ne deduco che hai sia un'uscita analogica, che una digitale, la seriale.

l'analogica la dovresti gestire con gli ingressi Ax di arduino, per la seriale diventa tutto piu' complicato, ma anche piu' interessante. Che documentazione viene fornita ? conosci il protocollo usato ?

per la stampante, nooooooo, siamo nel 2012, ancora a stampare ? una bella microsd dove buttare i dati, oppure volendo fare il salto di qualita' una ethernet shield e buttare tutto su pathcube :slight_smile:

Scusate forse mi sono spiegato male io, quelli di pH, conducibilità e temperatura non sono sensori, ma veri e propri strumenti. In essi sono già presenti l'uscita 4-20mA oppure l'RS232. Purtroppo però dell'RS232 non conososco il protocollo di comunicazione. Senza di quello non posso far nulla suppongo vero?

Per ciò che riguarda la stampa concordo con te Testato solo che volevo usarla per impratichirmi col mezzo visto che ho in mente un altro progetto in cui la userò, e in questo progetto secondario l'utilizzo della stampate è d'obbligo.

Per quanto rigurda l'uscita 4-20mA posso farla entrare direttamente in uno degli ingressi Ax di arduino? Mi pare che fino 200mA arduino non abbia problemi, sbaglio?

9six4:
Posso fare entrare una 4-20mA cosi com'è?

Come gia' risposto si puo' usare il 4-20 con una resistenza
Per essere piu' chiari ..
Per la nota legge ... V=R*I ... ne viene che se metti una resistenza da 500 ohm ai capi del 4-20 ne ricaverai una tensione da 2 a 10 Volts
Avendo un ingresso Max5 V. ( Ingressi Analogici ) presumo che mettendone una da 250 ( si trova il 270 ) avrai un 1 - 5 ( 5,4 con il 270 )
Rapporti il tuo 1 - 5 con la scala reale che vuoi leggere ed ecco acquisiti i valori .
Ciao

9six4:
Per quanto rigurda l'uscita 4-20mA posso farla entrare direttamente in uno degli ingressi Ax di arduino? Mi pare che fino 200mA arduino non abbia problemi, sbaglio?

Sbagli
Confondi Uscite con Ingressi
Tu devi portare la tua lettura 4-20 convertita in TENSIONE sugli ingressi Analogici
Poi con AnalogRead avrai un valore 0-1023 da eleborare
Poi , visto che hai 1-5 , il tuo range e' di 4 volts per cui anche il 1023 andra' ridotto ; 1023 / 5 * 4 = +/- 818
Il tuo 818 rappresenta il valore massimo dei tuo valori sul 4 - 20 ; un calcolo proporzionale o la funzione http://arduino.cc/en/Reference/Map ricavi il valore che vuoi archiviare

Io farei cosi' ... poi magari c'e' qualcuno piu' lungimirante di me

Grazie Bruno, sei stato gentilissimo, proverò cosi. Per quanto riguarda la stampa hai nulla da suggerirmi?

Scusa Bruno, mi è venuto un dubbio... non è che, essendo che il mio range varia da 1 a 5V Arduino me li legga da 1023-818 cioè circa 205 a 1023 anzichè da 0 a 818? Se cosi fosse non dovrei settare il limite alto a 818 ma quello inferiore a 205, no?

9six4:
Grazie Bruno, sei stato gentilissimo, proverò cosi. Per quanto riguarda la stampa hai nulla da suggerirmi?

Di niente
Qui si chiede quello che non si sa' e si pareggia dando quello che si conosce
Putroppo per la stampa non ho suggerimenti

9six4:
Scusa Bruno, mi è venuto un dubbio... non è che, essendo che il mio range varia da 1 a 5V Arduino me li legga da 1023-818 cioè circa 205 a 1023 anzichè da 0 a 818? Se cosi fosse non dovrei settare il limite alto a 818 ma quello inferiore a 205, no?

Il tuo valore minimo corrisponde a 4 mA ed il Max a 20 che tradotti poi diventano 1-5 Volts
Tu pertanto avrai il tuo campo di lettura "spalmato" su 4 volts
Per praticita' direi che conviene togliere il primo Volt portanto quindi il range da 0 a xx

Perfetto grazie, farò un pò di prove e metterò i risultati in modo che se dovesse servire ad altra gente li potranno vedere.

lato analogico tutto ok, bruno ha fatto un'ottima analisi della situazione.

per il discorso seriale non lo abbondenerei cosi' velocemente, se parliamo di strumentazione puo' essere che stampino gia' in modo diretto in ascii.
ptrebbe essere che hai gia' tutto fatto e non lo sai.

attaccala alla seriale del pc e connettiti in hyperterminal, essendo una seriale sai gia' i piedini, 2-3 da usare, come settaggio parti dal classico 9600-8-n-1-n

poi ti alzi man mano con il clock.
se ci ho azzeccato potresti addirittura collegarci una stampante in modo diretto, senza circuiti nel mezzo, dovrebbero farle ancora le stampanti seriali, ne avevo una anni fa :slight_smile:

attaccala alla seriale del pc e connettiti in hyperterminal, essendo una seriale sai gia' i piedini, 2-3 da usare, come settaggio parti dal classico 9600-8-n-1-n

Ti chiedo scusa ma non so usare benissimo Hyperterminal. L'ho collegata con un cavo seriale bidirezionale. Ora mi mostra un timer che avanza ma non da alcun segno di vita. Il cursore (una lineetta) lampeggia ma se eseguo una call con ctrl+H non ottengo risposta. Provo a cambiare il baud rate? C'è qualche altro modo per capire se il pc dialoga con la periferica e viceversa?

9six4:
Ti chiedo scusa ma non so usare benissimo Hyperterminal.

Effettivamente se non si ha un minimo di manualetto la cosa diventa complicata
Io ho un marchingegno in cui bisogna inviare alcune volte la barra spaziatrice , dopo di che lui ti invia un menu' con le voci numerate per scegliere cosa si vuole leggere od inviare

Questi strumenti avranno pure un nome ; non e' che googlando si riesca a trovarli e magari reperire un manualetto

La casistica e' tale che a mani vuote si fa' poco
Ci sono strumenti predisposti per stampare come i tuoi su seriale
Colleghi il famigerato Terminale con attivata la cattura dei testi ; dallo strumento dai il comando di stampa e sul terminale appare tutta la sfilza di testi
A quel punto salvi il file di cattura e amen

Come vedi bisogna cercare uno straccio di istruzioni

Hai ragione, domani do un occhio e vi faccio sapere se trovo qualcosa. Tra l'altro ne avrei anche uno portatile con uscita mini-usb, può facilitarmi le cose?

9six4:
uscita mini-usb, può facilitarmi le cose?

Mi sa' che e' peggio
Sicuramente e' una presa per collegarlo al PC per cui con Arduino non ci fai niente
A meno che' non sia una presa ( Master ) per attaccarci una stampante ( slave ) perche' in questo caso avresti la stessa condizione PC<-> Arduino ; la vedo dura comunque che sia cosi'
I dispositivi USB hanno dei driver per essere riconosciuti per cui sicuramente lo strumento nasce per essere connesso ad un PC

Ecco qui il manuale di uno dei miei strumenti:

http://www.hanna.it/struct/catalogo/manuali/the/mank999ir2.pdf

Come potete vedere a pag 17 spiegano il collegamento tramite RS232.
Come potrei fare per gestire i dati con Arduino ed inviarli ad una stampantina?

9six4:
E per quanto riguarda l'RS 232? Ultima cosa, vorrei che la comunicazione avvenisse wireless, cosa mi consigliate? Io uso arduino UNO.

Sicuramente ti conviene usare la comunicazione RS232 tramite moduli Xbee e questo adattatore per gli strumenti.
Utilizzando gli Xbee serie 2 puoi facilmente creare un semplice network tramite il quale puoi ricevere i dati da tutti gli strumenti identificandoli anche se la comunicazione è unidirezionale, cioè lo strumento trasmette in automatico e in continuazione i suoi dati.
Su Arduino ti conviene usare questo adattatore così puoi collegare l'Xbee anche tramite seriale software lasciando disponile quella hardware, a mio avviso la soluzione migliore è salvare i dati in arrivo su una SD e poi li gestisci come meglio credi da un pc.

Grazie astrobeed,
proverò a fare cosi, solo che la necessità di stampa ce l'ho purtroppo. Secondo te è possibile che tutti i dati arrivino all'arduino e l'arduino, in base ad un'impostazione che gli do io, ogni X secondi mandi i dati in stampa?

9six4:
Secondo te è possibile che tutti i dati arrivino all'arduino e l'arduino, in base ad un'impostazione che gli do io, ogni X secondi mandi i dati in stampa?

Certo che è possibile, basta che utilizzi una stampante dotata di interfaccia seriale perché tramite Arduino non hai altro modo per inviare i dati, volendo anche questa potrebbe essere connessa wireless tramite un Xbee.
In alternativa puoi usare una stampante termica di quelle per i registratori di cassa, si trovano a pochi soldi sul mercato surplus, con un pochino di elettronica è facile interfacciarla ad Arduino, in rete ci sono vari progetti in merito.