RS485 e MAX3088

Ciao a tutti,

Sto cercando di far comunicare il mio pc con arduino via RS485. Collegando la Leonardo con: e su PC:

Tutto funziona, apro il teminale scrivo sul l'adattatore usb e aprendo il terminale di leonardo leggo il rispettivo valore numerico ASCII ricevuto. (es. se premo "1" sulla tastiera Leonardo mi scrive 49 nel terminale.

Volendo fare un pcb dedicato alla RS485 ho acquistato un MAX3088. Collego elettricamente come di seguito: |500x213

RO (pin 1) lo collego a RX di Leonardo. RE DE li collego entrambi a massa. DI (pin 4) lo collego a TX di Leonardo.

I Pin 6 e 7 li collego ai 2 rispettivi terminali che arrivano dall'adattatore USB.

Quando però vado a digitare nel terminale della'adattatore USB, Leonardo mi risponde con valori sbagliati.

Es:

Digito sulla tastiera 1 (valore 49 della tabella ASCII) -> Leonardo riceve come valore 103.

Come mai cambiando driver RS485 non ricevo i valori corretti??

Un altra precisazione, Per ricevere qualcosa ho dovuto collegare il terminale A di MAX3088 al terminale B dell'adattatore USB. Cosa che prima non facevo. Se collego correttamente A con A e B con B, ricevo sempre il valore "0" qualsiasi carattere io invii.

Hai inserito i due resistori di terminazione?

Ne ho inserito solo uno da 100ohm su max3088. L'adattatore USB dovrebbe averlo integrato. Visto che con l'altra configurazione non inserivo nessun resistore.

Il valore corretto dei due resistori è 120 ohm e non credo sia presente sull'adattatore USB.

Il fatto che ti abbia funzionato non vuol dire che sia affidabile e, comunque, provare non costa.

se non erro quel IC ha il circuito di autoswitch integrato che funziona tramite un comparatore sulle linee AB ed è imperativo la corretta polarizzazione del bus per poter lavorare correttamente...cintrolla sul datasheet del medesimo...mi sa che il tuo adattatore USB ha la resistenza di terminazione sul bus ma non quelle di polarizzazione del medesimo,cioè A verso 5 volt e B verso massa

cyberhs: Il valore corretto dei due resistori è 120 ohm e non credo sia presente sull'adattatore USB.

Il fatto che ti abbia funzionato non vuol dire che sia affidabile e, comunque, provare non costa.

Vedo recuperarne perchè in casa ho solo resistori da 100 Ohm. Ma non credo che 20 Ohm facciano la differenza.

ibbba: se non erro quel IC ha il circuito di autoswitch integrato che funziona tramite un comparatore sulle linee AB ed è imperativo la corretta polarizzazione del bus per poter lavorare correttamente...cintrolla sul datasheet del medesimo...mi sa che il tuo adattatore USB ha la resistenza di terminazione sul bus ma non quelle di polarizzazione del medesimo,cioè A verso 5 volt e B verso massa

L'IC ha questa features:

These devices feature fail-safe circuitry, which guarantees a logic-high receiver output when the receiver inputs are open or shorted. This means that the receiver output will be a logic high if all transmitters on a terminated bus are disabled (high impedance).

Non so se sia questa "funzione" a generarmi problemi. Comunque ho provato a inserire 2 resistori da 560 Ohm come mi hai suggerito ma il problema rimane.

La stranezza è che se collego A con A e B con B non ricevo nulla.. o meglio ricevo sempre il valore "0" zero.

maverikgoos: Vedo recuperarne perchè in casa ho solo resistori da 100 Ohm. Ma non credo che 20 Ohm facciano la differenza.

L'IC ha questa features:

Non so se sia questa "funzione" a generarmi problemi. Comunque ho provato a inserire 2 resistori da 560 Ohm come mi hai suggerito ma il problema rimane.

La stranezza è che se collego A con A e B con B non ricevo nulla.. o meglio ricevo sempre il valore "0" zero.

scusa ho controllato adesso il datasheet e questo IC non ha l'autoswitch...tu collegando RE e DE a massa stabilisci quaindi a priori una comunicazione monodirezionale PC--> Arduino....strano,in questo caso anche senza alcuna terminazione nin dovresti avere problemi...sei sicuro di non avere invertito i pin di A e B sul micro??..a me è capitato...

ibbba: sei sicuro di non avere invertito i pin di A e B sul micro??..a me è capitato...

Ho ricontrollato più e più volte. Ho cambiato anche IC perché ne ho presi 10. Ma il risultato non cambia. Quando invio un carattere qualsiasi esso sia mi restituisce 0. Ma perché 0?

Dopo provo a spostarmi di posizione nella breadboard sia mai sia un qualche cavolo di contatto ma non credo. Sembrava una cavolata collegare un IC RS485 ma si sta rivelando una tragedia greca.

maverikgoos: Ho ricontrollato più e più volte. Ho cambiato anche IC perché ne ho presi 10. Ma il risultato non cambia. Quando invio un carattere qualsiasi esso sia mi restituisce 0. Ma perché 0?

Dopo provo a spostarmi di posizione nella breadboard sia mai sia un qualche cavolo di contatto ma non credo. Sembrava una cavolata collegare un IC RS485 ma si sta rivelando una tragedia greca.

boh strano...in effetti è proprio sempre una cavolata...

Per scrupolo ho rifatto il circuito, ma senza risultato. Stesso identico problema. Non so più che fare...