Interfaccia USB/RS-485

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).

Figura 1: schema del convertitore USB/RS-485

Figura 1: schema del convertitore USB/RS-485

 

Figura 2: utilizzo del transceiver RS-485 isolato MAX3535E

Figura 2: utilizzo del transceiver RS-485 isolato MAX3535E

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.

 

 

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS

2 Commenti

  1. Daniele Valanzuolo Daniele Valanzuolo 7 gennaio 2017
  2. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 7 gennaio 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS