Interfaccia RS485 optoisolata
Nei miei progetti mi è capitato di usare spesso collegamenti seriali usando l'interfaccia RS485. Inizialmente mi ero affidato a moduli reperiti in rete ma dopo numerosi guasti che non sempre si limitavano al modulo di interfaccia ho deciso di realizzare questa interfaccia optoisolata e (spero) adeguatamente protetta.
Caratteristiche
- Interfaccia RS485 optoisolata
- Possibilità di utilizzare vari integrati di interfaccia (SN75176, MAX485, MAX 13487, etc...)
- Attivazione della trasmissione col segnale RTS per gli integrati che lo richiedono, anche con logica negata
- Ingressi e uscite compatibili con segnali a 3,3V oppure a 5V
- Possibilità di alimentazione separata del DC/DC converter per utilizzare i più economici moduli con ingresso a 5V
- Led per l'indicazione di stato di alimentazione e delle linee RX, TX, RTS
- Uscita con morsettiera o connettore passo 100 mils
- Ingresso con connettore JST XH
Schema elettrico
Elenco componenti
- C1 = 1µF ceramico SMD 1206
- C2 = 10nF ceramico SMD 0805
- C3 = 10µF ceramico SMD 1206
- C4 = 100nF ceramico SMD 0805
Tutti i LED sono SMD 1206
- D1 = LED verde (RX)
- D2 = LED giallo (TX enable)
- D3 = LED rosso (TX)
- D4 = LED blu (Power)
- D5 = SM712_SOT23
- DZ1 = Zener 3.3V SMD SOD-123 (opzionale, vedi testo)
- F1 = fusibile 800ma slow SMD 1206
- J1 = Connettore JST XH (passo 2,5 mm) 1x06 verticale
- J2 = Connettore strip line 01x04 maschio verticale
- J3 = Morsettiera 1x4 passo 5,08 mm Phoenix Contact MSTBVA_2,5-4-G-5,08
- JP1 = Selezione doppia alimentazione
- JP2, JP3 = Selezione TX enable: 1-2 (default) attivo con RTS basso - 2-3 attivo con RTS alto
- JP4, JP5 = Polarizzazione linea con driver disabilitato (attivo di default)
- JP6 = Resistenza di carico sulla linea (default disinserita)
Tutte le resistenze sono SMD 1206
- R1 = 1KΩ
- R2 = 1KΩ
- R3 = 2.2KΩ
- R4 = 4.7KΩ
- R5 = 1.5KΩ
- R6 = 2.2KΩ
- R7 = 2.2KΩ
- R8 = 4.7KΩ
- R9 = 2.2KΩ
- R10 = 2.2KΩ
- R11 = 22KΩ
- R12 = 10Ω
- R13 = 10Ω
- R14 = 22KΩ
- R15 = 120Ω
- U1 = SFH618A (optoisolatore) datasheet
- U2 = H11L1 (optoisolatore uscita Schmitt Trigger) datasheet
- U3 = H11L1 (optoisolatore uscita Schmitt Trigger)
- U4 = PA01S0305A (DC/DC converter) in alternativa TEA 1-0505 - vedi sotto PA01S0305A datasheet TEA 1-0505 datasheet
- U5 = TAR5S50 (regolatore di tensione 5V Low Dropout) datasheet
- U6 = SN75176AP (driver RS485) o equivalenti. SN75176 datasheet MAX485 datasheet MAX13487 datasheet
Circuito stampato
Link per il file zip contente i file Gerber dello stampato.
Tutti i componenti DIL sono montati con l'apposito zoccolo, utile nelle prove o in caso di guasti. Finora non mi è mai capitato di dover sostituire componenti su questa interfaccia, ma non si sa mai...
Varianti
Pur essendo un circuito piuttosto semplice si presta a numerose varianti.
Innanzitutto è possibile utilizzarlo con numerosi driver seriali purché ovviamente compatibili come piedinatura al vecchio SN75176 che ho scelto perché di facile reperibilità e costo ridotto. Si può fra l'altro utilizzare il MAX13487E che non richiede il controllo di attivazione del TX (vedi sotto).
Doppia tensione di alimentazione
Se i segnali della seriale sono con tensione 3,3V e si ha disponibile anche una linea a 5V è possibile utilizzare la stessa per alimentare il DC/DC converter utilizzando per esempio il TEA 1-0505 che costa un terzo del PA01S0305A. In questo caso va interrotto il jumper JP1 oltre ovviamente a fornire tensione a 5V al pin 6 di J1.
Segnali e alimentazione a 5V
In questo caso va solo cambiato il DC/DC converter con uno con tensione di ingresso 5V come il sopracitato TEA 1-0505.
Solo ricezione
Se la seriale deve essere utilizzata in sola ricezione vanno eliminati U1, U2, R1, R2, R6, R8, R9, D2, D3. Inoltre R5 può essere sostituita da un ponticello o da una resistenza 0Ω.
Solo in questo caso se si alimenta il circuito a 5V ma si vuole un uscita a 3,3V va montato il diodo Zener DZ1
Attivazione automatica driver trasmissione
Utilizzando il MAX13487E è possibile evitare di dover attivare il driver durante la trasmissione. Utile nel caso non sia disponibile il segnale RTS o lo stesso non sia comandato dal programma utilizzato. Il rovescio della medaglia è il costo decisamente superiore e la minore reperibilità.
Purtroppo il MAX13487E esiste solo in versione con package SO a 8 pin. È quindi necessario utilizzare uno stampato adattatore, peraltro facilmente reperibile su internet.
Saranno inoltre necessarie le seguenti modifiche:
- Eliminare R1, R5, R6, D2.
- Sostituire U1 con un ponticello fra i pin 3 e 4 dello stesso.
Segnali 3,3V alimentazione a 5V
Per questa situazione è necessario fare una modifica allo stampato e aggiungere un paio di componenti.
È innanzitutto eliminare completamente il jumper JP1 e praticare al suo centro un foro da 0,8 mm raschiando poi la solder mask sull'altro lato per realizzare una piazzola a massa.
Bisogna montare poi un L78L33 con il pin 1 su TP1, il pin 2 sul nuovo foro a massa e il pin 3 su TP2. Consiglio un condensatore da 100nF fra uscita e massa del regolatore.
Il DC/DC converter deve essere del tipo con tensione di ingresso 5V (TEA 1-0505).
Versione super economica
Se proprio volete risparmiare (molto poco) potete evitare il regolatore di tensione TAR5S50 e i relativi condensatori sostituendolo con un ponticello. Il driver non ne sarà contento ma funziona. Se l'ambiente in cui utilizzerete l'interfaccia e elettricamente "pulito" potete anche omettere il SM712 e sperare che non arrivino disturbi troppo violenti.
In questa maniera avete risparmiato... quasi 1€ e un po' di saldature su componenti particolarmente piccoli.