Interfacciare 4-20mA e RS232 con arduino

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

Scusa la domanda banale: "Hai selezionato nel PC la giusta porta Com per HyperTerminal?".

Quel "rilevamento auto" dopo il cursore arriva dall'esterno perche' se apri il terminale appare solo il cursore , di norma .

Mi sono espresso male, questa scritta appare in basso, affianco al timer, dove sulla tua immagine appare la scritta "ANSIW", credo sia il tipo di emulazione.

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.

Se come handshake intendi il controllo di flusso, già fatto, ho messo nessuno.

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

Da me c'è solo il cursore che lampeggia (trattino basso come su word)

Scusa la domanda banale: "Hai selezionato nel PC la giusta porta Com per HyperTerminal?".

Lo collego con la seriale RS232 quindi se non erro dovrebbe essere la COM1 di default

Allora... dopo vari tentativi, sono riuscito a fare dialogare hyperterminal con uno strumento.
Ad ogni tanto che premo però mi da di ritorno una faccina ed un cuore che significa? Come posso gestire questa cosa?

probabilmente sono la rappresentazione in codici ascii del dato che ricevi.
guarda sulla tabella ascii

Cercato, corrisponde ai numeri 2 e 3...

Scusate ma avrei bisogno di un aiutino... sto cercando di leggere con l'arduino una tensione ai capi di una resistenza collegata ad un circuito esterno. Attraverso la resistenza da 270 ohm passa una corrente 4-20mA ed io tramite Analogread vorrei misurare la tensione ai capi per poi poter elaborare il dato. La resistenza però è alimentata da un circuito esterno all'arduino e la cosa mi spiazza un pò, come potrei collegarla all'arduino per leggerne la tensione ai capi?
Grazie

9six4:
come potrei collegarla all'arduino per leggerne la tensione ai capi?

Colleghi i 2 capi della resistenza fra GND ed AnalogIn di Arduino
Se uno dei capi della resistenza e' collegato al GND dello strumento ( ammesso che sia verificabile ) collega il suddetto capo al gnd di arduino
Sarebbe preferibile che i 2 gnd fossero collegati assieme e non incrociati

Grazie bruno, scusa la domanda stupida ma avevo bisogno di una certezza. Funziona e sembra abbastanza preciso. Adesso provo a trasformare il dato in punti pH, visualizzarlo a display e stamparlo a cadenza regolare su carta. Per quanto riguarda la risposta del mio strumento collegato via RS232 sai dirmi nulla?