OneWire long bus troubleshooting

Hi,

I am using one OneWire DS18B20 temperature sensor on a OneWire bus of about 120m.

It works properly with a bus around 40m length, however it doesn't work when in increase it to 120m

Checking the captures on the scope I can see that the master is sending the message correctly but when the slave answers, it seems the slave is not able to properly pull the bus low

See attached waveform

And this is the waveform decoded using a logic analyzer:

Time , Analyzer Name, Decoded Protocol Result
5.154228250000000,1-Wire,RESET condition
5.154758750000000,1-Wire,PRESENCE condition
5.155191750000000,1-Wire,MATCH ROM command:
5.155734000000000,1-Wire,FAMILY CODE section from ROM: [(]
5.156302000000000,1-Wire,ROM CODE section from ROM: ['2295666093310']
5.159632750000000,1-Wire,CRC section from ROM:
5.160184750000000,1-Wire,DATA: ['190']
Did anyone find any similar issues?
error_120m.png

Yeah, it's simply not designed for that. I would say that with 40m you're already an order of magnitude over the designed length... Bus/wire capacitance is playing a BIG role with a length like that. I would say you need to reconsider the approach. For example, place another (small) micro controller on the other end and send the data via RS485.

Damn good read here..