Thomas Knauf stellt auf seiner Seite viele Informationen zum SeaTalk Protokoll von Autohelm / Raymarine zur Verfügung, unter anderem eine RX / TX Eingangsstufe vom PC (RS232) zum SeaTalk Bus.
Diese Schaltung habe ich mit LT-Spice simuliert und etwas verändert.
1. Es wurden die Standard Transistoren BC547B (NPN) und BC557B (PNP) verwendet.
2. Die Spannung am Arduino Pin sollte 5V nicht übersteigen, deshalb ist am Ausgang zum RX am Arduino ein Spannungsteiler mit 4,7k und 2,2k Ohm eingefügt.
3. Aus Symetriegründen wurde der R4 von 10KOhm auf 15kOhm erhöht. Zur Simulation wurden Sinus Signale als Eingangssignale verwendet zur besseren Kontrolle der Schaltschwellen. Im SeaTalk Bus sind es natürlich Rechtecksignale.
Die digitalen Arduino Eingangspins haben laut Datenblatt folgende Logik Pegel:
LOW: 0 – 1,5V
HIGH: 3 – 5V
Das heisst mein Spannungsteiler (2.) gibt für einen Versorgungsspannungsbereich von 10V bis 16V die richtigen Logik Pegel HIGH und LOW aus.
Wenn Störungen, Überspannungen und Spikes auf der Versorgunsspannung auftreten können, dann sollte noch eine Z-Diode mit 5V parallel zu R3 gelegt werden.
Einen Kondensator mit einigen uF und einen mit einigen nF zwischen 12V und GND zu setzen ist sicherlich auch sinnvoll.
Die beiden LT-Spice Simulatione.
1. Der Arduino (TX) sendet in den SeaTalk Bus.
rot: Volt TX (Arduino)
gelb: Volt Daten (SeaTalk)
2. Der Arduino (RX) empfängt Daten vom SeaTalk Bus.
rot: Volt RX (Arduino)
gelb: Volt Daten (SeaTalk)
Die Simulation wurde mit LT-Spice durchgeführt, das bei Linear Technology kostenlos zur Verfügung steht.
von Matthias Busse
Pingback: SeaTalk zu Arduino TTL Interface aufgebaut | Shelvin – Elektronik ausprobiert und erläutert