Transmitting data over longer single wire (+GND)

I would like to transfer sensor data from a sensor station to a base over about 20m.

  • Transmission does not need to be fast. I am talking in the order of magnitude of one sensor value per minute.
  • I have three unshielded wires available (power cable), but I also need to power the sensor station over these wires (with non-negligible current, probably no situation for any parasitic powering), so probably no way for differential transmission.
  • My MCUs will run at 3.3V, but I plan to send 5V over the wires and regulate down at the device
  • Spacewise, I have a European outlet socket (60mm) for the sensor station, and will make acustom PCB.
  • The base station will terminate up to ten of these connections, so I would not be unhappy about some dedicated IC that translates to SPI or I2C.
  • Unidirection would be enough, but I would not mind bidirectional.

Dedicated 1-wire IC maybe? Or a repurposed MOSFET driver and slow UART?

Is this data analogue or digital?

If analogue consider a 4-20mA current loop.

If digital use a differential buffer like Rs485.

Ether way you need power at the far end, either over wires or from a supply or battery.

Grumpy_Mike:
Is this data analogue or digital?

If analogue consider a 4-20mA current loop.

If digital use a differential buffer like Rs485.

Ether way you need power at the far end, either over wires or from a supply or battery.

Digital. How does RS485 work with the things I pointed out under the second dash? (Which you might not have read, because that also covers that there is power on both sides, while dash 3 covers how much voltage there is available?)

I made the subject a little clearer. Avoided that before because I didn't want to rule out possible solutions that I did not think of or deemed crazy. (Like dual using the 5V lane to sometimes charge a supercap and sometimes act as one part of a differential transmission line.)

You could use the current loop with digital signals.

Doesn't that translate to an open drain network with a strong pullup?

Why would that be better than just driving the line with a beefy buffer, e.g. a MOSFET driver?

I feel this should be a solved issue with a clear answer, like "Put a high current buffer on one end, and a schmitt-trigger on the the other".

Is 20m long enough to introduce significant noise? When the Tx side uses strong push/pull output (not open drain and weak pull-up as 1-wire do)? If noise is strong enough to cause errors in such line it would also introduce glitches on the power supply.

ElCaron:
Doesn't that translate to an open drain network with a strong pullup?

Why would that be better than just driving the line with a beefy buffer, e.g. a MOSFET driver?

I feel this should be a solved issue with a clear answer, like "Put a high current buffer on one end, and a schmitt-trigger on the the other".

If you use a high current buffer at the remote end you should probably calculate and check the wire resistance
over the distance is low enough (5V to a 3.3V regulator doesn't leave a huge amount of headroom). Most twisted pair is 110 ohms or so characteristic impedance, so 45mA current is expected.

Arrange that the quiescent state has zero current for reduced dissipation - ie terminate with 110 ohms to
+5V if using serial (which is HIGH when quiescent). You only need a single switching device in such an
open-collector arrangement of course.

Alternatively if using 3.3V push-pull drive the termination has to go to a 3.3V rail at the receiving end, or use
a resistive divider termination that is Thevenin equivalent to this.

Smajdalf:
Is 20m long enough to introduce significant noise? When the Tx side uses strong push/pull output (not open drain and weak pull-up as 1-wire do)? If noise is strong enough to cause errors in such line it would also introduce glitches on the power supply.

I don't know. I know quite well what physically COULD happen, qualitatively. I also have ideas for getting around it. That is why I was hoping for a "good practice" answer to NOT build a test setup and playing around with all sorts of buffers, triggers, filters ...

If you use a high current buffer at the remote end you should probably calculate and check the wire resistance
over the distance is low enough (5V to a 3.3V regulator doesn't leave a huge amount of headroom). Most twisted pair is 110 ohms or so characteristic impedance, so 45mA current is expected.

As I said, I am using literal power wire. 1.5mm^2. Thats 0.2Ohm over that distance. I can easily send 5A and still have enough headroom for a mediocre LDO regulator. How many twisted pair connections with 3 wires do you know? :wink:

I would expect the impedance to be lower due to the larger distance to the ground wire compared to TP.
I am more worried about picked up noise.
I am also not sure about that calculation. 45mA are needed over what time to do what?

One of the RS232 drivers with the integrated charge pump (e.g. max232) would almost be a perfect fit, but I believe, RS232 is only strictly specified to 15 meters.

MrMark:
One of the RS232 drivers with the integrated charge pump (e.g. max232) would almost be a perfect fit, but I believe, RS232 is only strictly specified to 15 meters.

Honestly, 20m was a rough guess. Probably, all lines are below 15m, if the cables are not placed completely idiotic.
Thanks for the suggestion!

Any suggestions on a chip for 10 bi-directional connections? TI only has asymmetric multichannel chips that do not add up well to 10, Maxim only has dual channel, apparently.

(I figure if I design this, I may as well do it bidirectionally, even if I just use one connection. Since my sensor stations will be based on ESP8266 MCUs, I might either wire TX to distribute the wifi setting, or RX to receive temperature readings in a no-wifi scenario.

You cannot find your limits if you do not try to push them. If I were you I would consider 1-wire-like protocol. Strong pull-up, strong open-drain drivers, heavy (software) filtering, low datarates. What can go wrong ;-)? If it works, you may try to increase speed until the communication starts to be unreliable...

but I believe, RS232 is only strictly specified to 15 meters.

Well, there is "whats's written" and there is "what works in practice"... and of course, we are talking the bipolar RS232 signals... not RS232-TTL levels.

I have personally run an RS232 SIGNAL, at 4800 Baud, just over 4000ft. (roughly 1200 Meters). Granted, the cable characteristics at that distance prevented higher baud rates... but it can be done.

Going a longer distance with RS232 is more related to the specific WIRE being used and the Baud Rate (IMHO). With CRAP cable... and a high baud rate... even 50 ft might be tricky.

Smajdalf:
You cannot find your limits if you do not try to push them. If I were you I would consider 1-wire-like protocol. Strong pull-up, strong open-drain drivers, heavy (software) filtering, low datarates. What can go wrong ;-)? If it works, you may try to increase speed until the communication starts to be unreliable...

The only issue I see is interference. Something might come up only after I have tested it working ... those wire lengths are l/4 antennas for HF radio ...