Interfacciare 4-20mA e RS232 con arduino

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?

Ciao,

ho guardato la pagina 17 del manuale da te indicato.
Lo strumento manda in output ogni uno o due secondi, a seconda delle versioni, 32 caratteri il cui significato e' spiegato nella pagina del manuale.
Gli ultimi due sono CR (carriage return) e LF (line feed).

Se vuoi vedere piu' facilmente i caratteri, allora puoi utilizzare un monitor per la porta seriale, ad esempio Free Serial Port Monitor. Lanci il programma originale (o hyperterminal) e vedi le stringhe sul serial monitor.

Se hai il programma originale di lettura dati puoi vedere anche il baudrate e gli altri parametri della porta seriale. Per far questo devi andare nel menu' strumenti e aprire "impostazioni" (la penultima) e li' trovi "IOCTL consecutivi". Seleziona la visualizzazione di IOCTL_SERIAL_GET_BAUD_RATE e IOCTL_SERIAL_GET_LINE_CONTROL.
All'inizio della finestra "richieste" vedrai i dati su baudrate, wordlength, parity e stopbits.

I byte singoli li vedrai col corrispettivo valore (esadecimale, decimale, ASCII, ... a seconda della visualizzazione che utilizzi), tipo byte 11 = unita' di misura della temperatura, mentre per i dati che utilizzano piu' byte dovrai ricavare il corrispondente valore.

Ciao,
marco.

visto che e' a pagamentgo, perche' si chiama Free ? :stuck_out_tongue_closed_eyes:

Grazie Marco, appena riprendo in mano il discorso RS232 provo.
Ora sto provando ad eseguire delle letture ma ho dei problemi a visualizzare il giusto risultato a LCD.
Questo è il programmino:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() 
{
  lcd.begin(20, 4);
  Serial.begin(9600);
}

void loop() 
{
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
  float pHvalue = ((sensorValue-226)/53)+1;
  Serial.println(pHvalue); 
  lcd.clear();
  lcd.print("pH = ");
  lcd.print(pHvalue);
  delay (1000);
}

In pratica misura la tensione ai capi di una resistenza tramite l'ingresso A0 e tramite una formula matematica la converte in punti pH. Il problema, e non capisco il perchè, è che il risultato è sempre un numero giusto (ovvero 7.00 oppure 5.00) mentre dovrebbe avere 2 decimali diversi da 00.
Qualcuno mi spiega dove sbaglio?
Grazie

Testato:
visto che e' a pagamentgo, perche' si chiama Free ? :stuck_out_tongue_closed_eyes:

A pagamento è solo l'invio del programma su CD, se lo scarichi non paghi nulla.

grazie, non ci avevo fatto caso.
purtroppo non funziona su win7, almeno il mio a 64 :blush:
ne conosci uno simile ?

Testato:
ne conosci uno simile ?

Per la seriale e la parallela è da sempre che uso Portmon, è molto vecchio come software però è un ottimo strumento di analisi, fa vedere tutto quello che succede a livello evento di sistema nei dettagli.
Funziona bene con tutti i sistemi operativi Windows a partire da W98 in poi, incluso W7 32 bit, con la versione a 64 bit non l'ho mai provato quindi non posso garantirti che funziona.

Scusatemi, non ne vengo fuori con sto discorso dei decimali, qualcuno sa dirmi dovo sbaglio? :~

Ho risolto usando questa formula. Se non metto i decimali mi restituisce sempre un intero.

float pHvalue = ((sensorValue-226.00)/53.00)+1.00;

Ho notato una cosa però, l'analogread di arduino oscilla parecchio, di poche unità ma oscilla, mentre la tensione ai capi della resistenza è bella fissa. A cosa è dovuta questa oscillazione?

9six4:
A cosa è dovuta questa oscillazione?

Esegui il collegamento con del cavo schermato a 2 fili e collega la calza al GND di Arduino

Grazie Bruno, nei prossimi giorni ne compero un pò e provo!

Gentili signori,
dopo giorni di prove nulla da fare. Ricapitolo, ho questo strumento:

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

come potete notare a pag 17 del manuale spiega il collegamento tramite RS232 e le stringhe trasmesse.
Ho anche il relativo software però volevo gestire queste stringhe direttamente con Arduino per poterle memorizzare in una SD oppure stamparle.
Ho provato a connetterlo con Hyperterminal ma non sembra comunicare, o non sono io in grado di farlo.
Come posso per tirarmi fuori queste stringhe?
Grazie

Ok ce l'ho fatta a visualizzare l'uscita dello strumento su hypertermina, ora qualcuno saprebbe dirmi come posso far si che queste stringhe ASCII a 32 caratteri vengano lette da arduino?
Ho provato a collegare la massa dell'RS232 con la massa dell'arduino e Tx arduino con Rx 232... Tx arduino con Rx 232... ma niente, non mi legge nulla.

il tuo obiettivo e' rompere arduino ?
sei sulla buona strada, o forse lo hai gia' fatto :slight_smile:

mi sembra che avevamo gia' detto ti servise un convertitore, non puoi usare rs232 su arduino in modo diretto

astrobeed:

Testato:
ne conosci uno simile ?

Per la seriale e la parallela è da sempre che uso Portmon

yep, conosco, e' di quella societa' che fa tante utility e che poi e' stata acquistata da mcrosoft direttamente, ora e' un tool ufficiale microsof.
peccato niente 64bit, provato, non vede porprio la seriale.

purtroppo sono strumenti che si interfacciano direttamente al driver, e quindi senza driver 64bit non c'e' nulla da fare.
per ora ne ho trovato solo e soltanto uno, ma carissimo.
non credevo che non ci fossero tool gratuiti per una cosa del genere

mi sembra che avevamo gia' detto ti servise un convertitore, non puoi usare rs232 su arduino in modo diretto

Si scusa, non l'ho scritto, sto usando un max 232, ho aperto un nuovo post perché non avendo trovato nulla, magari poteva essere utile a qualcuno, il nuovo post è questo, se ci dessi una letta mi faresti contento perché non riesco ad andarne fuori. In rete tutti gli schemi sono per un collegamento arduino -> 232 -> periferica, io invece necessito periferica -> 232 ->arduino

http://arduino.cc/forum/index.php/topic,105465.0.html