Interfacciare 4-20mA e RS232 con arduino

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.

Io pensavo a questa:

http://www.ladyada.net/products/thermalprinter/

Che ne dici?
Per l'elettronica non c'è problema, son perito elettroni, quello che mi manca è la programmazione :grin:

La comunicazione è unidirezionale (solo da strumento a unità ricevente) e le trasmissioni sono una stringa ASCII a 32 caratter

Ci avevo azzeccato :slight_smile:
Soldi ?
Cioe' perche' non usare la stampante o il sw ufficiale del prodotto visto che non parliamo di un discorso hobbiestico ?

Io sto usando il software ufficiale, ma non è in vendita una stampante ufficiale. Per questo volevo provare a collegarne una seriale o una qualsiasi altra tramite arduino. Ho la necessità di stampare direttamente ad intervalli regolari, anchè perchè lo strumento non è in una zona di facile accesso quindi andar li ogni volta con portatile e cavi vari diventa un dramma. Ho provato anche stamattina a collegarlo ad hyperterminal ma niente, non da segni di vita. Tra l'altro non capisco come usarlo sto benedetto hyperterminal! :~

9six4:
Io pensavo a questa:

Direi che va benissimo.

astrobeed:
Sicuramente ti conviene usare la comunicazione RS232 tramite moduli Xbee e questo adattatore per gli strumenti.

Se compri questo adattatore leggi la mia fulminea esperienza con un oggetto del tutto simile sempre da Robot Italy ( costa anche meta' )
http://arduino.cc/forum/index.php/topic,99991.new.html#new

Ciao