Interfacciare 4-20mA e RS232 con arduino

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

Molto interessante bruno grazie,
devo solo trovare il modo per farlo dialogare con sto maledetto hyperterminal :~

9six4:
devo solo trovare il modo per farlo dialogare con sto maledetto hyperterminal :~

Non ho letto bene il manuale che hai linkato
Se l'uscita e' RS232 basta incrociare TX e RX ; poi il comune .
Quindi bisogna trovare velocita' e parametri ; il classico e' 9600 8N1
Ma su dei PLC ho trovato 9600 7E1
Anche il LOGO della Siemens e' per conto suo ed a suo tempo ho googlato di brutto per trovare i parametri adatti

Poi una volta che arrivano le stringhe al massimo dovrai impostare l'aggiunta di un LF se si sovrascrivono

Visto che il connettore sullo strumento e' particolare immagino che il cavetto sia acquistabile

Visto che il connettore sullo strumento e' particolare immagino che il cavetto sia acquistabile

Infatti la cosa divertente è che non riesco a farlo funzionare con il suo cavo originale! XD
Non riesco a capire come farlo dialogare con hyperterminal. Connetto il cavo, apro il programma, imposto il nome della connessione ed i parametri come da te consigliato (ne ho provati diversi) ma poi mi trovo sempre e solo una lineetta intermittente e la scritta "rilevamento auto" sotto con un timer che avanza, nient'altro :~
Ho provato a premere tutti i tasti: backspace, ctrl+h, h ecc ecc ma nessuna risposta.

9six4:
ma poi mi trovo sempre e solo una lineetta intermittente e la scritta "rilevamento auto" sotto con un timer che avanza, nient'altro :~

Io proverei ad aprire Hyperterminal e dopo accenderei lo strumento
Quel "rilevamento auto" dopo il cursore arriva dall'esterno perche' se apri il terminale appare solo il cursore , di norma .
Il timer indica il tempo di connessione
Per curiosita'
Premi il telefono con la cornetta alzata ; si ferma la connessione
Premi il pulsante con la mano ; proprieta'
Tab impostazioni + impostazioni ASCII
Su ricezione ASCII spunta " Aggiungi avanzamento riga ....

Tutto questo per capire se la scritta che vedi e' una sola oppure un continuo , continuamente sovrascritto nel caso ci fosse solo il CR a fine stringa
Aggiungendo l'avanzamento riga vengono scritte una sotto l'altra

Alla fine premi sul telefono con la cornetta giu per riattivare la connessione
Al peggio ti trovi una riga scritta ed una vuota

9six4:
Non riesco a capire come farlo dialogare con hyperterminal. Connetto il cavo, apro il programma, imposto il nome della connessione ed i parametri come da te consigliato (ne ho provati diversi)

Se non è chiaramente scritta sul manuale dello strumento la velocità la devi trovare a tentativi, tipicamente quegli oggetti lavorano a 9600,8,1 oppure 19200,n,8,1 , in tutti i casi dovresti vedere lo stesso qualcosa arrivare anche se la velocità è sbagliata, in questo caso vedi caratteri senza senso.
Quello che sicuramente hai scordato di fare è impostare l'handshake come "NONE", se non lo fai Hyperterminal rimane in eterna attesa dei consensi hardware che lo strumento sicuramente non fornisce.

astrobeed:
Quello che sicuramente hai scordato di fare è impostare l'handshake come "NONE",

Eh gia' ..
Allego una cattura della videata di H.T. dove ricevo la risposta di un ping
Giusto per capire cosa si vede di solito :slight_smile:

SS_HypertTerminal.png