Page 1 of 2

Newbie in need of a little help (DS18B20)

Posted: Sun Apr 01, 2018 3:15 pm
by 1979kent
Hi
I am making my own Centralheating controller and so far everything is starting to play well together and i am starting to finetune it.
Main control is a ESP32 WROOM and my problem is a sensor bus wire to 12 DS18B20 temperature sensors.
Its working perfect for a day or two, then ALL sensors goes blank. Its not enough to reset the esp, but if i disconnect the power for a short time all sensors are back and working perfect.
Any idea what´s happening and possible how to avoid it?
Its pretty crucial to my control that i dont loose readings for too long time.

thanx in advance :D

Re: Newbie in need of a little help (DS18B20)

Posted: Tue Apr 03, 2018 5:34 am
by rnyqvist
HI!

Exactly the same as what I've observed. And I've tried several different sketches with various different ESP32 versions (also ESP8266).
And with sensors connected to one-wire and I2C bus.
Sketch keeps running for a few days then freezes.

Something broken in the ESP Arduino implementation perhaps?

Re: Newbie in need of a little help (DS18B20)

Posted: Tue Apr 03, 2018 6:56 am
by Cellie
A power supply problem? Are you using parasitic power? Feeding all that sensors from a ESP32 pin?
I use 3 DS18B20 sensors in a project, fed by dedicated power, and they keep running, well forever.
... then ALL sensors goes blank.
Blank means what exactly?

Re: Newbie in need of a little help (DS18B20)

Posted: Tue Apr 03, 2018 7:30 am
by 1979kent
Hi i am not using parasitic power, but they are powered by the same esp pin. I will try to power from external power.
When it goes blank means virtuino goes blank (out of range maybe), but the esp is reading it as a lower value... all my heating circuits went full open at the time.

I will try the external power thanx

Re: Newbie in need of a little help (DS18B20)

Posted: Tue Apr 03, 2018 5:36 pm
by 1979kent
rnyqvist:

Yes i have seen a lot of i2c problems on the interweb.
I did consider putting on a i2c io expander and a RTC also on i2c.
I might end up using a thrusty old arduino mega and only use the esp32 as a wifi module.
Some projects as my current one requires reliability.

Re: Newbie in need of a little help (DS18B20)

Posted: Wed Apr 04, 2018 4:10 am
by meowsqueak
1979kent wrote:Yes i have seen a lot of i2c problems on the interweb.
I did consider putting on a i2c io expander and a RTC also on i2c.
I might end up using a thrusty old arduino mega and only use the esp32 as a wifi module.
Some projects as my current one requires reliability.
Just in case it's not clear, the DS18B20 is not an I2C device, it's a Maxim "One Wire Bus" device.

Also, a recent commit to the ESP-IDF master fixes the main I2C error that some people, including myself, were complaining about. I think this was related to some prior fixes in the Arduino code base, so I'd expect it to be fixed there already, or if not, soon.

To the OP, I don't know much about DS18B20 support with ESP32 Arduino, but if you want to try a reliable and proven C implementation for one or more DS18B20 devices on the ESP32, to at least prove your board and the devices work, you could try my example and library:

https://github.com/DavidAntliff/esp32-ds18b20-example

You'll need ESP-IDF v3.0rc1 (v2.1.1 works too, but you'll need to check out the 2.1.1 branch). Just hook up an appropriate resistor and configure the pin to use with 'make menuconfig'. Note that it doesn't officially support parasitic power mode - it's not something I've explicitly tested, although it might work out-of-the-box with a single device.

Re: Newbie in need of a little help (DS18B20)

Posted: Wed Apr 04, 2018 8:42 am
by Cellie
To be fair, there were some OneWire issues some time ago.
I am using DS18B20 sensors for some of my projects for the last years and the issue mainly was that 'some' transactions went 'bad' as in the checksum was not valid. These transactions ( I had a rate of about 1 in 50 transactions going bad, depending on the particular code ) could be filtered from the stream quite easy.
I did not have any catastrophic ( eg. have to reboot, like the op ) failures, just the occasional weird value with a bad checksum.
These issues were solved initially by stickbreaker in his OneWire repo and are now incorporated in the Arduino OneWire library.

I DID have catastrophic failures during the hardware R&D phase using parasitic power. Using 5 or 6 sensors on a pin would be very unstable.

12 sensors feeding from a ESP32 pin is way too much.

From the DS18B20 datasheet:
...However, when the DS18B20-PAR is performing temperature conversions or copying data from the
scratchpad memory to EEPROM, the operating current can be as high as 1.5 mA.
Assuming this code:

Code: Select all

    ds.reset();
    ds.write( 0xCC, 1); /* Skip ROM - All sensors */
    ds.write( 0x44, 1); /* start conversion, with parasite power on at the end */
All sensors will start start to draw current at the same time from the ESP32 pin.

12 times 1.5 is 18mA which is way too much...

12mA is the maximum current you can pull from a single ESP32 pin, but I would like to stay significantly below that.

Re: Newbie in need of a little help (DS18B20)

Posted: Thu Apr 05, 2018 6:56 pm
by 1979kent
Hi again
i have been running a seperate psu on the sensors ever sinces suggested and so far so god :D
I will find a i2c device in my box of "nice to have stuff" to see if its stable with that, because i need some extra io´s and to my knowlegde the easiest way is a i2c expander??

thanx for the responses really helpful!!

Re: Newbie in need of a little help (DS18B20)

Posted: Thu Apr 05, 2018 8:18 pm
by WiFive
Cellie wrote:
All sensors will start start to draw current at the same time from the ESP32 pin.

12 times 1.5 is 18mA which is way too much...

12mA is the maximum current you can pull from a single ESP32 pin, but I would like to stay significantly below that.
You can have the sensors do their conversions one at a time

Re: Newbie in need of a little help (DS18B20)

Posted: Fri Apr 06, 2018 2:49 pm
by Cellie
You can have the sensors do their conversions one at a time
Yes, that is of course a possibility.

I did not mention that as it adds to code complexity and you still need a free pin to feed your sensors.