Vai al contenuto
PLC Forum


RS485 e MAX3088


maverikgoos

Messaggi consigliati

Ciao a tutti,
Sto cercando di far comunicare il mio pc con arduino via RS485.


Collegando la Leonardo con:

images?q=tbn:ANd9GcSoAbYM3k-jI0Ycdu7ybxi
e su PC:

$_35.JPG?set_id=8800005007

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:

MAX3088-circuits.jpg


MAX3088-circuits.jpgRO (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??

Link al commento
Condividi su altri siti


maverikgoos non vorrei sbagliare ma devi gestire il DE non puoi lasciarlo a massa

Invii dal convertitore USB e dall'altro lato con /RE basso ricevi

Per ritrasmettere devi portare DE alto

(Il datasheet però dice che se porti /RE alto e DE basso il dispositivo va in basso consumo)

Per evitare storie o tieni /RE sempre basso e quindi ricevi anche la tua ritrasmissione oppure muovi i segnali in sequenza DE alto e poi /RE alto priam di iniziare a trasmettere per non vedere "l'eco" locale della tua trasmissione. Ovviamente a fine trasmissioni rimetti il driver in ricezione

Controlla com'è collegato il DE sulla scheda che funziona

Link al commento
Condividi su altri siti

si infatti...io neh o presi 5 in cina di questi componenti

Nekka trasmissione 485 c'e' un pin di uscita che abilita la trasmissione e la ricezione 

Link al commento
Condividi su altri siti

I pins /RE e DE (2 e 3) vanno collegati assieme e comandati da un segnale esterno che abilita la modalità Rx o Tx. Se nello schema indicato son messi entrambi a 0V si abilita il circuito alla ricezione.

Link al commento
Condividi su altri siti

I pins 3 e 4 sono volutamente collegati a 0 per garantire che il drivier sia sempre in ascolto. Non ho mai parlato di trasmettere. Il MAX3088 e configurato come ricevitore.

si infatti...io neh o presi 5 in cina di questi componenti
Nekka trasmissione 485 c'e' un pin di uscita che abilita la trasmissione e la ricezione 

walterword hai dei max3088 funzionanti? Se si mi potresti descrivere in che modo lavorano?

Link al commento
Condividi su altri siti

Ho provato anche questa configurazione ma senza risultato:

MAX485-Module-Sch1.jpg

Che tra l'altro è anche la configurazione della Shield descritta sopra.

Modificato: da maverikgoos
Link al commento
Condividi su altri siti

Ho provato anche questa configurazione ma senza risultato:

Se avessi letto, cercando di capire, quello che ho scritto prima, sapresti che questa configurazione abilita il circuito alla trasmissione, quindi se lo usi solo in ricezione non puoi ricevere.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Scusami, nello scema riportato sopra i pins 2 e 3 sono collegati a VCC. Leggendo lo schema così com'è effettivamente sembra in trasmissione. Ma R2 e R3 non le ho collegate. Esistono solo i pins 2 e 3 collegati a massa.

 

Questo intendevi giusto?

Link al commento
Condividi su altri siti

ne ho presi 5 impachettati ma non ho ancora avuto modo di provarli , credo  a breve lo farò.

comunque i driver 485 hanno tutti un pin tramite il quale si sceglie se spedire o ricevere, ovviamente bisogna dargli il tempo per fare in modo che si stabilizzi.Questo è lo schema della schedina 

Guarda qui e facci sapere

https://arduino-info.wikispaces.com/SoftwareSerialRS485Example

Dopodiche la storia e' solo software, per esempio implementi un protocollo binario dove spedisci e ricevi un flusso di bytes con valore da 0 a 255 , mentre se lo fai ASCII ricorda che il range di valori va da 0 a 127 .

Nel pc se usi java o .NET decidi tu come codificare i pacchetti , se usi hyperterminal o affini devi vedere come sono settati i parametri

 

Modificato: da walterword
Link al commento
Condividi su altri siti

Ma infatti è proprio da lì che ho preso lo schema sopra. E infatti io utilizzo proprio quelle schedine e con quelle tutto funziona. Se sostituisco la shield con IC collegandolo nel medesimo modo ho il problema riportato sopra.Se riesci puoi provare a vedere se a te funziona? Per scrupolo ho ordinato dei MAX1487 farò una prova con quelli che sono della stessa famiglia dei MAX485.

**** Non iserire spazi bianchi inutili, complicano la lettura specialmente con i portatili.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

in questo periodo non riesco a fare le prove che mi chiedi , Sinceramente non riesco a capire bene il tuo problema :toobad:

Stai facendo girare il software che viene indicato nel sito che ti ho postato?

Link al commento
Condividi su altri siti

Tulo usi solo per ricevere, quindi fai una prova semplicissima. Metti il dispositivo in ricezione, ma questo asserisci di averlo già fatto, poi porti A a +5V e B a 0V e misuri le uscite,dal lato arduino. Ripeti la misura scambiando i potenziali di A e B.

Se le misure confermano il buon funzionamento Hw e continui a non ricevere il problema lo hai o sullo Hw di arduino o sul software relativo. Questo ammesso che i segnali su A e B giungano corretti dalla linea seriale.

Link al commento
Condividi su altri siti

Anche staticamente, come ho consigliato, vedi se ci sono livelli non corretti e/o errori di colelgamento.

Poi è chiaro che la prova dinamica è comunque più completa.

Link al commento
Condividi su altri siti

Esatto. Ho già fatto la prova tenendolo sempre in ricezione. Mi manca effettivamente la prova che propone Livio, comandare manualmente A e B del IC per vedere cosa esce su RO.

Link al commento
Condividi su altri siti

Ho fatto le prove con DE ed RE a massa.

Ecco le letture su RO su MAX3088:

ABRO
VccGND3,74
GNDVcc2,08
GNDGND1,89
VccVcc3,93
NCNC3,7

Queste invece le letture fatte su Shield RS485 (quella del primo post)

VccGND4,95
GNDVcc0,15
GNDGND4,95
VccVcc0,17
NCNC4,95

 

 

Completamente diverse....

Modificato: da maverikgoos
Link al commento
Condividi su altri siti

Se 103 si ottiene pigiando il tasto 1 che equivale a g in ASCII che poi è la stessa cosa che premere 1 in logica invertita, allora perché non provi a settare questo parametro:


o così da software


SoftwareSerial(rxPin, txPin, inverse_logic);


oppure da VT


RX/TX = Inverted

 

Link al commento
Condividi su altri siti

La seconda non torna mi sa tanto di conflitto. RO è scollegato dal micro ?

La documentazione dice Vout min Vcc-1.5V quindii 3.74V della prima potrebbero anche starci ma il grafico del datasheet dice che per scendere a 4V devi erogare almeno 10mA possibile?

e non torna la terza il driver dovrebbe essere failsafe se c'è una tensione A-B minore della sua isteresi dovrebbe stare alto

Girock perchè dici logica invertita '1' =  0x31 mentre 103= 0x67

   
   
Link al commento
Condividi su altri siti

RO è scollegato dal micro ?

 Si RO è scollegato dal micro. Faccio la lettura con il Voltometro. Nessun carico.

Se 103 si ottiene pigiando il tasto 1 che equivale a g in ASCII che poi è la stessa cosa che premere 1 in logica invertita, allora perché non provi a settare questo parametro:

Anch'io ho fatto lo stesso pensiero, però se guardo il data sheet non dovrebbe avere logica invertita, è la medesima del MAX485.

 

Link al commento
Condividi su altri siti

  • 2 weeks later...

Solo per aggiornarvi. Sono arrivati i MAX1487, tolto il MAX3088 e inserito il 1487 funziona tutto. Quindi non ho idea del perché i 3088 non funzionano. Comunque spesi 20€ di questi integrati e buttati in un cestino...

Link al commento
Condividi su altri siti

se erano difettati e' un conto pero' mi sembra strano che non funzionino ...hai visto che c'erano anche altri link dove si dimostrava il loro funzionamento :toobad: 

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...