Lo standard EIA RS-485 descrive il livello fisico di un bus multi-punto differenziale che impiega soltanto due fili per la comunicazione seriale di dati su distanze piuttosto elevate (fino a oltre 1 Km). Caratteristiche quali l’elevato bitrate raggiungibile (alcune decine di Mbit/s), l’immunità ai disturbi garantita dalla segnalazione differenziale, la notevole estensione fisica possibile e la natura multi-punto (bus) hanno contribuito ad una notevolissima diffusione di questo standard in settori quali quello industriale, navale e perfino avionico.
Introduzione
Il bus è utilizzato per consentire la comunicazione tra un’unità di controllo centrale, che di solito agisce da master e alcuni dispositivi periferici (sensori o attuatori) che in genere funzionano da slave. Dal momento che lo standard specifica soltanto le caratteristiche del livello fisico, è possibile utilizzare diversi formati e codifiche dei dati e diversi protocolli di comunicazione. Di solito i dati sono inviati sul bus tramite una UART, quindi essi si presentano come in una normale trasmissione seriale asincrona, cioè dotati di un bit di start, 7 o 8 bit di dati ed almeno un bit di stop. Anche le velocità scelte di solito coincidono con quelle utilizzate per le connessioni RS-232. Questo permette di collegarsi facilmente ad un bus RS-485 tramite una porta RS-232. Questa soluzione è adottata comunemente da molto tempo, e richiede solamente di gestire la conversione dei livelli e di abilitare la scrittura sul bus RS-485 in corrispondenza ad una trasmissione della porta seriale. Questa funzione può essere gestita tramite i segnali di controllo di flusso presenti sulle porte RS-232 (RTS, CTS, etc.), oppure rilevando il cambiamento di stato della linea di trasmissione in corrispondenza al bit di start. Più recentemente, con la sempre minore diffusione delle porte seriali nei personal computer (soprattutto nei portatili), risulta sempre più difficile adottare soluzioni semplici e poco costose come quella descritta in precedenza. Le alternative consistono di solito nell’impiego della porta USB al posto della seriale, con l’impiego di un “adattatore” USB/RS-232, oppure direttamente USB/RS-485. La prima soluzione può essere particolarmente economica, ma non sempre garantisce un corretto funzionamento (ad esempio per la mancanza dei segnali di hadshake o per livelli di segnalazione non conformi), la seconda può risultare invece particolarmente costosa. In alternativa gestire l’interfacciamento risulta notevolmente più complicato, non solo dal punto di vista hardware, ma anche da quello software, in quanto è necessario utilizzare driver appositi che spesso sono disponibili solamente per specifici sistemi operativi, o scriverne di propri. Nel successivo paragrafo è descritto un circuito che può risolvere in maniera molto semplice ed economica il problema dell’interfacciamento di un PC ad un bus RS-485.
Convertitore USB/RS-485
Il convertitore proposto impiega l’integrato FT232R di FTDI per consentire la conversione USB/seriale. Questo componente rappresenta l’evoluzione del noto FT232B, uno dei primi componenti apparsi sul mercato capace di semplificare enormemente l’interfacciamento tramite bus USB. A differenza delle versioni precedenti l’FT232R presenta una serie di caratteristiche aggiuntive molto interessanti che rendono il componente molto più versatile e semplice da usare. Tra queste vanno citate la presenza di un oscillatore e di una EEPROM integrata, che permettono di utilizzare l’integrato senza bisogno di alcun componente esterno (oltre ai condensatori di disaccoppiamento).
Un’altra interessante caratteristica consiste nella disponibilità di alcuni piedini di I/O configurabili (CBUSx), che possono svolgere diverse funzioni, tra cui pilotaggio di LED che indicano lo stato di attività del dispositivo, I/O comandati, segnali di handshake e generazione di clock. Nelle impostazioni di default il segnale CBUS2 è associato alla funzione TXDEN#, che è usata per segnalare le operazioni di trasmissione. Questo segnale può essere utilizzato direttamente per pilotare l’abilitazione della scrittura sul bus in un comune transceiver RS-485. Il segnale CBUS0 invece è associato alla funzione PWREN#, che segnala lo stato attivo del dispositivo e che può quindi essere utilizzato per abilitare la ricezione dal bus. Lo schema di una completa interfaccia USB/RS-485 è mostrato in figura 1. Data la compatibilità pin-to-pin della maggior parte dei transceiver RS-485, può essere utilizzato un componente qualsiasi (es. MAX3085, o simili). Il circuito può essere gestito dal punto di vista del software in maniera semplice e trasparente per la maggior parte delle applicazioni: la FTDI infatti fornisce un driver royalty-free disponibile per i più comuni sistemi operativi. Il driver permette di vedere la periferica come una porta COM virtuale, che può essere utilizzata esattamente come una porta COM tradizionale. L’applicazione quindi dovrà semplicemente collegarsi alla nuova porta COM ed eseguire le normali operazioni di lettura e scrittura. In questo modo sarà possibile utilizzare senza alcuna modifica tutto il software preesistente.
Isolamento
Se si desidera ottenere un isolamento galvanico tra il bus ed il PC è possibile ricorrere ad una soluzione alternativa rispetto all’impiego dei comuni optoisolatori: impiegare un transceiver isolato quale il MAX3535E (oppure l’ADM2485 di Analog Devices). Questo integrato garantisce un isolamento fino a 2500V e comprende anche un driver per il trasformatore d’isolamento, permettendo di sostituire di fatto gli optoisolatori, il transceiver ed il driver per il trasformatore con un solo componente. Lo schema da utilizzare è mostrato in figura 2.
Conclusione
Utilizzando gli schemi proposti è possibile realizzare un’interfaccia USB/RS-485 estremamente semplice e versatile, che impiega soltanto due componenti attivi e presenta un costo estremamente contenuto. L’interfaccia inoltre risulta compatibile con i più comuni sistemi operativi.

Lo standard RS485 ha segnato un’epoca delle comunicazioni in ambito industriale (vedi il protocollo PROFIBUS che utilizza il livello fisico RS485), in quanto l’utilizzo di una trasmissione differenziale con livelli di tensione anche di 10V garantisce una robustezza al rumore anche su distanze elevate, cose che lo standard RS232. molto più comune e utilizzato in applicazioni generiche, non garantisce (infatti veniva utilizzato ad esempio per le periferiche dei PC ma con distanze inferiore ai 2metri).
Come si vede dalla figura 2 risulta molto importante il concetto di barriera di isolamento. Per funzionare correttamente il chip deve avere una alimentazione RS485 completamente isolata dall’alimentazione e dai sengali in ingresso. La seconda alimentazione può essere ricavata con un trasformatore di isolamento (come in figura 2) oppure con uno stadio indipendente (quando ad esempio di vuole avere una tensione differenziale diversa dalle tensioni utilizzate per la logica del proprio dispositivo).
A tal proposito vi consiglio questo articolo di approfondimento http://it.emcelettronica.com/rs-485-le-caratteristiche-della-rs485-spiegate-da-maxim