Info RS232 - TTL

Salve a tutti,

allora la situazione è semplice ma vi chiederei gentilmente di fornirmi delle delucidazioni a riguardo.

Io ho un sensore che esce con una RS232 (non con il DB9 ma direttamente con 4 fili : GND, VCC, TX, RX) ma che, da quello che dice il data sheet, può funzionare con alimentazione da 4,5 V a 30 V.

La domanda è: perchè non posso connetterlo ad Arduino nel pin dei 5 V ? Perchè necessito di un regolatore di voltaggio?

Evidentemente il mio ragionamento è sbagliato da qualche parte ma non essendo io un tecnico non riesco a capire dove è l'errore.

Qualcuno può gentilemente spiegarmi questa cosa?

Grazi mille a tutti per la collaborazione!

tieni presente sempre i due paramtri principe in elettronica, tensione e corrente

per quanto riguarda la tensione non ci sono problemi, 5V sono 5V, niente trucchi, niente inganni.

La corrente invece e' il probema, quanto assorbe questo sensore ? guarda sul datascheet, se assorbe una quantita' di corrente intorno ai 200mA vai tranquillo, altrimenti si trovano altre soluzioni.

capt_7:
Salve a tutti,

Io ho un sensore che esce con una RS232 (non con il DB9 ma direttamente con 4 fili : GND, VCC, TX, RX) ma che, da quello che dice il data sheet, può funzionare con alimentazione da 4,5 V a 30 V.

La domanda è: perchè non posso connetterlo ad Arduino nel pin dei 5 V ? Perchè necessito di un regolatore di voltaggio?

Se è RS232 le tensioni sono +- 12V.

Il livello 1 = -12V
0 = +12V

Per connetterlo ad aduino devi convertire in TTL.
Esistono dei chip che eseguono questa conversione, es. il MAX232,
si trovano in commercio anche dei convertitore già cablati.

Carletto

se viene alimenato a 5V dubito che possa mai avere 12V sulla seriale :wink:
la questione inversione e' invece da tener presente

capt_7:
da quello che dice il data sheet

Magari un Link al Data Sheet puo' tornar utile ad altri ed a capire la tua problematica

Ciao a tutti e grazie delle risposte,

allora il link del datasheet è questo:

http://www.xsens.com/images/stories/products/PDF_Brochures/mti%20leaflet.pdf

Il modello che ho io è lo standard: RS232-A53-G35

Per quello che dice Testato, avendo un consumo di 350 mW , se fornisco 5 V dovrei avere un assorbimento di corrente pari a 70 mA.

Se così fosse non ci sarebbe bisogno di nulla? Oppure vale la tesi di Carletto?

A proposito ti ringrazio per la risposta Carletto, potresti indicarmi un link di un convertitore già cablato? Il chip con presa DB9 e uscita TTL già lo ho
(http://www.microbot.it/documents/mr002-001_datasheet_it.pdf) ma da quello che ho capito non basta da solo, correggimi se sbaglio.

Comunque qualcosa che non va c'è perchè i valori che escono dalla seriale (che vedo sul serial monitor) non c'entrano nulla con quelli che dovrei ricevere. Pensavo potesse essere per causa del collegamento elettrico, ma sono qui a chiedere lumi appositamente.

Grazie a tutti.

capt_7:
(che vedo sul serial monitor) non c'entrano nulla con quelli che dovrei ricevere.

Questo presuppone che hai gia controllato quanto esce dalla RS232 collengandola ad terminale
Hyperterminal , PuTTY et similia
Anche rileggendo i post non mi pare di aver letto una affermazione in questo sensoù

Edit :
Presumo che tra sensore e DB9 del convertitore i segnali andranno incrociati
Diversamente , lato TTL , forse andranno TX su TX ed RX su RX ; cosi almeno e' sul convertitore che ho io del tutto simile al tuo
Realizza uno programmino che alla pressione di un pulsante invii la stringa ciao sulla seraiale e verifica la funzionalita del tuo convertitore collegando la DB9 F del convertitore direttamete sul DB9 M del PC dove avrai aperto in attesa un terminale di cui sopra

No Bruno, ho semplicemente commesso un'imprudenza perchè non sapevo del problema tra RS232 e TTL; infatti ho collegato il sensore RS232 direttamente ai pin di Arduino e ho visto quello che arrivava dalla porta seriale.

Fortunatamente non è saltato nessun pin in quell'occasione e poi non ci ho più riprovato.

Ora stavo leggendo il data sheet della Mega 2560 e ho visto che sui pin può passare una corrente max di 50 mA; quindi forse, dal conto che ho fatto in un post precedente, se collego il sensore che assorbe 70 mA non va bene.

Che ne pensate?

capt_7:
sui pin può passare una corrente max di 50 mA
il sensore che assorbe 70 mA

Il sensore assorbira' 70mA sull'alimentazione ; sui pin TX RX la corrente e' insignificante

Il tuo problema e' appunto la 232 che ha livelli di segnale incompatibili con Arduino
Ci vuole per forza il convertitore in mezzo

Personalmente opterei per un12 volts di alimentazione del sensore da cui deriverei con 4 o 5 diodi in serie il VIn di Arduino ; i diodi giusto per scendere a 8 9 volts sul VIn
Il convertitore alimentato dal + 5 di Arduino ; ovviamente i GND comune a tutti i circuiti

Fai un passo alla volta come consigliato piu' sopra e vedrai che arrivi alla fine del tuo progetto

va bene cerco di seguire il tuo consiglio. Non posso utilizzare una resistenza per far cadere il potenziale da 12 a 5 V? Inoltre potresti illustrarmi il collegamento magari con Fritzing o qualcosa del genere?

Se anche qualche altra persona ha delle indicazioni in merito vi prego di farmi sapere!!! GRazie!!!

io inizierei ad alimentarlo a 5V (vai tranquiallo con la V di arduino stesso) e misurare tx-rx-gnd con il tester, per capire se la seriale esce a 5V

Testato:
se viene alimenato a 5V dubito che possa mai avere 12V sulla seriale :wink:
la questione inversione e' invece da tener presente

Per esempio il MAX232 ha 2 pompe di tensione (fatto con 4 condensatori) che producono dai 5V di alimentazione ca +/-10V sufficenti per un RS232.

Ciao Uwe

capt_7:
va bene cerco di seguire il tuo consiglio. Non posso utilizzare una resistenza per far cadere il potenziale da 12 a 5 V? Inoltre potresti illustrarmi il collegamento magari con Fritzing o qualcosa del genere?

Se anche qualche altra persona ha delle indicazioni in merito vi prego di farmi sapere!!! GRazie!!!

Non puoi usare resistenze per diminuire la tensione perché

  1. la rs232 ha anche tensioni negative
  2. la caduta di tensione sulla resistenza dipende dalla corrente.

Se l' interfaccia é una rs232 allora i livelli di tensione sono quelli della RS232. Usa un integrato come il MAX232 per adeguar i livelli.

Ciao Uwe

uwefed:

Testato:
se viene alimenato a 5V dubito che possa mai avere 12V sulla seriale :wink:
la questione inversione e' invece da tener presente

Per esempio il MAX232 ha 2 pompe di tensione (fatto con 4 condensatori) che producono dai 5V di alimentazione ca +/-10V sufficenti per un RS232.
Ciao Uwe

ci avevo pensato, infatti dopo ho consigliato di misurare, alimentando a 5v, proprio per capire di cosa stiamo parlando :wink:

uwefed:
Usa un integrato come il MAX232 per adeguar i livelli.

Ma da quel che si legge ha in mano il classico convertitore RS232 TTL

Io insisterei nel verificare le parti una alla volta
Verifico con un PC cosa esce dal sensore
Verifico cosa esce da Arduino col PC usando il convertitore
Almeno so' chi e cosa funziona

Allora per rispondere a Testato: ho collegato il sensore ai 5 v di Arduino e i pin TX e RX escono a 5 V.

Vi devo però dire che fino ad ora non ho messo in comune la massa di Arduino con quella del sensore e mi sa che ho sbagliato. Ora non so se questa è una soluzione al problema dei valori errati che leggo in uscita dalla seriale, secondo voi?

Per Bruno: il sensore l'ho già collegato al PC con un cavo FTDI e con un software del sensore ho visto i dati in uscita , i quali sono giusti. I valori sballano quando provo ad acquisirli attraverso la seriale di Arduino.

Avendo un convertitore RS232 - TTL come faccio a ottenere un integrato MAX232? Potete linkarmi per favore? (ammesso che il fatto della massa in comune non risolva il tutto).

Grazie a tutti per l'aiuto!

capt_7:
Avendo un convertitore RS232 - TTL come faccio a ottenere un integrato MAX232? Potete linkarmi per favore? (ammesso che il fatto della massa in comune non risolva il tutto).

Ma il tuo convertitore e' tutto quello che ti serve
La DB9 F la infili sul Maschio del PC
GND +5 TX ed RX su ARDUINO
In quello che ho io il TX va su TX e RX su RX ; non incrociati

Preventivamente metti su Arduino un Serial print che ti invii una stringa ( CIAO + CR + LF ) con una pausa di 1000
Ogni secondo dovrebbe arrivarti CIAO sul PC

Il tutto inizializzato alla stessa velocita ovviamente
Alla prima prova il mio non andava perche' avevo incrociato TX RX

capt_7:
Allora per rispondere a Testato: ho collegato il sensore ai 5 v di Arduino e i pin TX e RX escono a 5 V.

Ottimo, quindi niente pompa in gioco che eleva la tensione.

A questo punto io ci giocherei senza null'altro in mezzo, prova con GND connessa ad arduino ed rx-tx, dopo invertili se non vanno.

Allora ragazzi ho degli aggiornamenti,

Ho provato a fare come dice Testato: ho alimentato il sensore a 5V con la GND in comune alla scheda. Risultato: uguale ai casi precedenti, valori sbagliati (anche se la struttura del messaggio è quella giusta).

Ora per Bruno: scusa ma siccome non sono proprio esperto potresti dettagliarmi meglio il collegamento che hai descritto nell'ultimo post? Tieni presente che non dovrei collegare un maschio al mio convertitore RS232-TTL in quanto penso che dalla DBF9 devo inserire i cavi della seriale del sensore, o no? Se ho capito proprio male allora ti chiedo per favore di spiegarmi meglio quello che intendevi.

Scusate se chiedo tutte queste cose sui collegamenti ma non sono un tecnico e non vorrei fare danni.

Grazie a tutti per l'aiuto!