RS232 <=> TTL <=> RS485

Lavorando con i microntrollori succede spesso che il circuito sul quale si sta lavorando sia semplicissimo: la MCU, un quarzo, pochi condensatori e qualche connettore. Solo per il periodo dello sviluppo c'è la necessità di colloquiare con la MCU tramite una seriale. Una volta finito il debug la parte composta dal MAX232 e dai componenti che gli girano intorno non serve più.
Per questo ho deciso di fare una piccola interfaccia esterna per adattare la RS232 del PC ai livelli TTL del PIC ed usarla tutte le volte che mi serve senza doverla implementare ogni volta sulle singole schede.
Poi... L'appetito vien mangiando... Perché non completare il circuito anche con un'interfaccia RS485. Il circuito si è complicato un po' e si è ampliato il suo campo di utilizzo. Può essere usato come interfaccia da RS232 a TTL, da RS485 a TTL o da RS232 a RS485.

Con questo circuito, dal momento che avevo appena costruito il bromografo, ho anche sbrogliato il mio primo circuito stampato con Eagle, mi è servito per prendere pratica con la parte "board" di questo bellissimo (anche se non semplicissimo) programma.

Come si vede dallo schema, la parte di alimentazione è basata su un MAX667, un regolatore di tensione a 5V LDO (Low DropOut), gli basta infatti una tensione in ingresso di poche centinaia di mV superiore a quella in uscita per garantire la stabilità. In questo modo il circuito può essere alimentato anche direttamente dalla porta RS232 del PC (segnali DTR e/o RTS). Se la tensione fornita dai segnali RS232 non è sufficiente a garantire i 5V si accenderà il led rosso LED3 ed allora si dovrà fornire un'alimentazione esterna.

La sezione RS232 è quella classica: un MAX232 e 4 condensatori.

Schema elettrico
La parte RS485 è necessariamente più complicata. Il MAX485 è un driver half-duplex, per commutare RX/TX si può usare sia il segnale RTS (se il programma lo prevede) sia la modalità "Auto TX Enable". Per comprendere esattamente come funziona questa modalità, consiglio la lettura dell'articolo di Jan Axelson su Circuit Cellar #107 del giugno 1999: "Designing RS-485 Circuits". Le due modalità si possono selezionare tramite il jumper JP4.
Il ritardo introdotto nell'abilitazione del TX non è un valore critico, sono sufficienti due diversi valori, uno sotto i 9600bps l'altro per alte velocità, selezionabili tramite JP3.
La parte RX del MAX485 può essere comandata dallo stesso segnale che pilota il TX oppure rimanere sempre accesa, ritornando verso il terminale lo stesso segnale trasmesso (echo) ad esempio per un debug. Le due modalità sono selezionabili tramite JP2.
I jumper JP5-6-7 servono per abilitare le resistenze di terminazione e di bias in caso di linea di trasmissione ai limiti delle specifiche RS485. Se la velocità di trasmissione non è elevata e/o la linea non è molto lunga, si può fare a meno di usare queste terminazioni, in questo modo il circuito consuma molta meno corrente e potrebbe essere sufficiente quella fornita dalla porta RS232 del PC.
Per una spiegazione approfondita del protocollo RS485 e delle caratteristiche che deve avere la linea di trasmissione, rimando all'ottimo tutorial di Vincenzo Villa.

Tramite JP1 si possono selezionare le modalità RS234<=>TTL, RS485<=>TTL oppure RS232<=>RS485.

Il prototipo su millefori
aggiornato il 22 - 12 - 2006