Improved 1-wire interface

Hi, I need to improve the reliability of my 1-wire network (10 x DS18D20 used to control solar panel and H2O puffer). Total radius is 50mt and weight is 80mt.

I found this example of bus interface improvement on a Maxim paper (fig. 1) but I have some doubt how to translate it into Arduino's world. I set up this circuit (fig. 2). Is it correct?

Thanks for your help.

Did you read Maxim tutorial 148? Your network seems feasible. Where did you find your fig.2? I do not understand it either

Well you don't have the 1K pull up resistor.
And let's hope the red line saying 22 on it is not 22V.

Grumpy_Mike, thanks for showing the picture. I yet don't know how to do that in this forum. :disappointed_relieved:

Olf2012: I read tutorial 148; Fig 1 comes from it. :wink:
Fig 2 is the electric schema I implemented for Arduino based on Fig 1.
R1 is a resistor 1kohm; R2 is the 3.3kohm, 220pF is the capacitor and the three-pin thing between ground and Vcc is the 2N7000. Using a Mega you have ground on PIN 55 and Vcc on PIN 22. 1-Wire is on PIN 49.
I am not sure this implementation is the right one.

From Fig 1 I cannot understand where I should connect R2 to. I assume that what in Fig 1 is called 1-wire Network is the connection to the PIN I defined in the Arduino instruction OneWire (e.g. OneWire ow(49)). Ground is ground. But where is the wire to R2 coming from? In Fig 1 it comes from a generic Microcontroller box, but where should I connect this wire to Arduino? Ground, Vcc or where?

Thanks.

I forgot: I am using a two wires cable in parasitic power mode and that's the reason of the R1 between Vcc and the 1-wire Network.
I can move to a three wires implementation if needed.

aldozan:
From Fig 1 I cannot understand where I should connect R2 to. I assume that what in Fig 1 is called 1-wire Network is the connection to the PIN I defined in the Arduino instruction OneWire (e.g. OneWire ow(49)). Ground is ground. But where is the wire to R2 coming from? In Fig 1 it comes from a generic Microcontroller box, but where should I connect this wire to Arduino? Ground, Vcc or where?

It's really not explained properly in that app note. The convention with that sort of diagram is that anything coming out the side of a "microcontroller" box is an active I/O pin. So it looks like they are suggesting that you drive the outgoing communications from the master through the second pin, through the 3.3k resistor. That would slow down the outgoing data transitions so that you don't get harsh ringing.

Sending 1-wire on one pin and receiving it on another pin would take some serious modification of the Arduino library. I don't think it's practical to do this.

On a Teensy 3.x you can actually modify the "drive strength" so that you reduce the slew rate. I think it's also possible on an Arduino Due but it's a while since I looked at that part of the datasheet. Probably not an option for you.

The "appendix B" option is going to work a whole lot better with a standard Arduino and the standard library. You either need an oscilloscope to check on the waveform produced or you need to experiment with different capacitors.

A 1-wire network is loaded down by the parasite-powered devices. If you can reduce the number of them by powering at least some of them from a separate power wire, you will improve the network reliability significantly. I would try that first.

From Fig 1 I cannot understand where I should connect R2 to.

It should be connected one end to the Arduino's output pin and the other end to the FET. You have not done that in your practical layout. In that you have connected the Arduino output directly to the FET.

What you have marked as -55 is the ground, what you have marked as 22 in red is your 1 wire bus and what you have marked as 1wire bus + is your 5V line.