I would like to build a multiplexer to combine 2 NMEA 0183 streams (I understand that NMEA is essentially RS422). One of the streams runs at 4800 baud (standard for NMEA) and the other is high speed, 38400. The multiplexed output is to be at 38400.
I have sketched the attached concept schematic. I've been told the 2 inputs require opto isolation for NMEA work. Each input is serial character by character input (NMEA sentences all start either $ or ! and end CR,LF) then when a sentence has been received, the Busy bus input is checked and if low then Busy Out goes high (to stop the other line from activating) and the received sentence is put out at 38400, regardless of the speed it was received at. Then Busy is set low. If Busy is High then wait for it to go low and then transmit. Repeat.
This system could easily lose some data but, provided it's not a lot, that's OK. The high speed is a single sentence every 0.1s (fast heading $APHDM). The low speed is less predictable but should be at a similar rate (AIS data !AIVDM and !AIVDO). That's my current requirement but if the concept is sound, I think it could easily be extended to several inputs.
I have several questions for the assembled experts:
Is this feasible and as simple to program as I hope? It seems 2 08M2s could handle it easily.
Any recommendations for the opto isolator? I've seen 6N139M and HCPL2731. Would either be good?
Would diode ORing be OK for the combiner or does it need buffering/amplifying to achieve RS422 standard?
For testing, I plan to make 2 NMEA transmitter simulators and an LCD NMEA display but if I can sort out the multiplexer, they should be easy enough. I'm a bit concerned that these would be Picaxe to Picaxe communication, which may not exactly simulate NMEA to Picaxe to NMEA.
Your observations are welcomed.
Derek
I have sketched the attached concept schematic. I've been told the 2 inputs require opto isolation for NMEA work. Each input is serial character by character input (NMEA sentences all start either $ or ! and end CR,LF) then when a sentence has been received, the Busy bus input is checked and if low then Busy Out goes high (to stop the other line from activating) and the received sentence is put out at 38400, regardless of the speed it was received at. Then Busy is set low. If Busy is High then wait for it to go low and then transmit. Repeat.
This system could easily lose some data but, provided it's not a lot, that's OK. The high speed is a single sentence every 0.1s (fast heading $APHDM). The low speed is less predictable but should be at a similar rate (AIS data !AIVDM and !AIVDO). That's my current requirement but if the concept is sound, I think it could easily be extended to several inputs.
I have several questions for the assembled experts:
Is this feasible and as simple to program as I hope? It seems 2 08M2s could handle it easily.
Any recommendations for the opto isolator? I've seen 6N139M and HCPL2731. Would either be good?
Would diode ORing be OK for the combiner or does it need buffering/amplifying to achieve RS422 standard?
For testing, I plan to make 2 NMEA transmitter simulators and an LCD NMEA display but if I can sort out the multiplexer, they should be easy enough. I'm a bit concerned that these would be Picaxe to Picaxe communication, which may not exactly simulate NMEA to Picaxe to NMEA.
Your observations are welcomed.
Derek
Attachments
-
199.6 KB Views: 4