I’m about to build a heating control with DS18B20 1Wire-sensors and the Raspberry Pi 3 Model B+. For the 1Wire-interface I’m using the DS2482-800 multi-channel busmaster (more precisely this pre-assembled board: http://www.sheepwalkelectronics.co.uk/product_info.php?products_id=67).
The sensors are read over OWFS and a Node.js-script (using the owfs-module). I’m using Node.js as the Raspberry is hosting an express-webserver with all the current temperature-values.
Overall this works great, at least for the 11 sensors, which are connected to the first 4 channels of the DS2482. But as soon as I try to connect 2 additional sensors to the 5th channel, these sensors are NOT read by OWFS. Why that?
Moreover I noticed, that the virtual /mnt/1wire
directory only shows 9 sensors on the first 2 channels, although I’m able to read 11 sensors (on 4 channels) with the Node.js-script without problems. How’s that possible???
For test purposes I tried to connect the 2 “new” sensors to one of the first 4 channels -> reading them works perfectly fine, so no issues with the sensors.
Because of that, I think there’s a problem with my configuration of OWFS.
My owfs.conf
file looks like this:
# Sample configuration file for the OWFS suite for Debian GNU/Linux.
#
#
# This is the main OWFS configuration file. You should read the
# owfs.conf(5) manual page in order to understand the options listed
# here.
######################## SOURCES ########################
#
# With this setup, any client (but owserver) uses owserver on the
# local machine...
! server: server = localhost:4304
#
# ...and owserver uses the real hardware, by default fake devices
# This part must be changed on real installation
# server: FAKE = DS18S20,DS2405
#
# USB device: DS9490
#server: usb = all
server: device = /dev/i2c-1
# Serial port: DS9097
#server: device = /dev/ttyS1
#
# owserver tcp address
#server: server = 192.168.10.1:3131
#
# random simulated device
#server: FAKE = DS18S20,DS2405
######################### OWFS ##########################
#
mountpoint = /mnt/1wire
allow_other
#
####################### OWHTTPD #########################
!http: port = 2121
####################### OWFTPD ##########################
ftp: port = 2120
####################### OWSERVER ########################
server: port = 4304
I really appreciate your support, as I couldn’t find anything helpful via Google and I’m preety stumped right now…
Thanks in advance
-
I read the datasheet and found that your “bus master” is (1) a “8 Channel I2C to 1-Wire host adapter, and (2) this module uses a DS2482-800 IC to provide 8 separate 1-Wire channels. So I guess it is sort of “1-Wire channel multiplier”. Please correct me if I am wrong. Now I guess you wish each of the 8 1-Wire channels to handle as many 1-Wire sensors, ie DS18B20 as possible. I had the same problem as yours. Let me se if I can find my old answer to refresh my memory. See you later. – tlfong01 Apr 16 at 12:42
-
Now that I found my old answer: “DS18B20 Temperature Sensor – Rpi 3/4 Driver, Wiring, Detection, and Python Programming – Asked 9 months ago Viewed 763 times”: raspberrypi.stackexchange.com/questions/100203/…. Now I remember that one Rpi GPIO pin can handle at least 12 DS18B12 sensors. In other words if you want to entertain, say 64 sensors, you need 5 GPIO pins. – tlfong01 Apr 16 at 12:50
-
1Thanks for your quick answer. But you are referring to an arrangement, where the DS18B20 sensors are connected directly to the RPi GPIOs, which is NOT the case in my installation. I’m using the DS2482-800 busmaster, which comunicates with the RPi only through I2C, no other GPIOs used (it’s no multiplier, but provides “8 Channels of Independently Operated” see datasheet datasheets.maximintegrated.com/en/ds/DS2482-800.pdf ) – simsnWolke Apr 16 at 13:29
-
Hi @simsnWolke, yes, I agree I am not answering your question directly, but just brainstorming that you might forget the bus expander/mux/demux/ (OK, not “multiplier”) and just use GPIO instead. I am aware that GPIO wires cannot go far, so one workaround is to use I2C, plus I2C extenders and expanders, otherwise I2C alone, even at 100kHz, cannot go reliably further than a couple of meters, before hitting the 400pF impedance limit. I remember when I tested the max number of 1-wire sensor per GIPO, I read Maxim’s literature about how to do long distance sensing, using / to continue, … – tlfong01 Apr 16 at 14:18
-
their purposely designed extenders. Let me see if I can find Maxim’s app notes, to refresh my memory, and compare your “expander” then come back to you. Cheers. – tlfong01 Apr 16 at 14:21
-
I found that Ref 2 of my answer refers to the Maxim app notes mentioned above: TUTORIALS 148 GUIDELINES FOR RELIABLE LONG LINE 1-WIRE NETWORKS – Maxim maximintegrated.com/en/design/technical-documents/tutorials/1/…. I guess you must have already read it and perhaps many more papers in the subject. Anyway, let me quickly read your DS2842 datasheet and come back to you later. – tlfong01 Apr 16 at 14:29
-
By the way, my other brainstorming idea is to use UART instead of I2C extender, because UART can go further than I2C. I am interested to know if you have already considered this: APPLICATION NOTE 4104 CONFIGURATIONS OF 1-WIRE TIMING OF THE DS2480B. maximintegrated.com/en/design/technical-documents/app-notes/4/…. PS – I am just thinking aloud, my apologies for the typos. – tlfong01 Apr 16 at 14:34
-
I am skimming the datasheet, and jotting/drawing at the same time: (1) “DS2482-800 8-Channel 1-Wire Master – Maxim”: datasheets.maximintegrated.com/en/ds/DS2482-800.pdf, (2) “DS2482-800 Block Diagram – Maxim”: imgur.com/gallery/gs9SUJR. See your later. – tlfong01 Apr 16 at 14:48
-
My imgur image library is full and can no longer upload. So I paste more images as an answer. – tlfong01 Apr 16 at 14:56
-
I skimmed the DS2820 datasheet, and I think I understand 95% of what is going on there (I once played with similar I2C “expanders”, except the other ends are I2C, not 1–Wire). Now I read your question again. My first impression is that there is nothing to do with web server or node.js software. The most likely cause is some sort of impedance overloading, distorting wave form signals/time etc. But I am only 10% sure. Ah, bed time!. I call it a day. See you tomorrow or over the weekend. Good luck and cheers. – tlfong01 Apr 16 at 15:07
Question
DS2482 I2C to 1-Wire module using python OWFS (One Wire File System) cannot detect all the connected DS18B20 temperature sensor devices. How to fix the problem?
Answer
Suggestions:
(1) Enable the DS2482’s SPU (Strong Pull Up) MOSFET (Appendix G),
(2) Lower 1-Wire speed.
(3) Remove the two I2C pullups connected to the DS2482 module (Appendix D).
/ to continue, …
Part 1
Configuring python owfs (Refs 29, 32)
Part 2 – Testing OWFS Server without any DS18B20 sensor connected.
Part 3 – Detecting One DS18B20 Temperature Sensor
/ to continue, …
References
(1) DS18B20 Temperature Sensor Setup and Programming Q&A
(2) Rpi4B buster I2C Speed Test 6.0 – tlfong01 2020mar04
(3) DS2482-100 1-Channel 1-Wire Master Datasheet – Maxim
(4) DS2482-800 8-Channel 1-Wire Master – Maxim
(5) AK-DS2482S-100 – 1-Channel 1-Wire Master Breakout Product Sheet – Artekit
(6) AK-DS2482S-100 – 1-Channel 1-Wire Master Breakout Schematic – Artekit
(7) AK-DS2482S-100 – 1-Channel 1-Wire Master Breakout User Manual – Artekit
(8) DS2482-800 8-Channel 1-Wire Master Module – SheepWalk
(9) OWFS 1-Wire File System – OWFS
(10) OWFS and OWHTTPD Project Docs – SourceForge
(11) How to enable DS2482 SPU – Ivan2 Artekit Product Comments 2018
(12) OWFS Node.js Client Library For 1-Wire Devices Using OwServer Protocol
(13) Application Note 3684 How to Use the DS2482 I2C 1-Wire Master – Maxim
(14) Kernel driver ds2482 Supported chips Maxim DS2482-100, Maxim DS2482-800
(15) Interface Driver for Maxim DS2482 1Wire-to-I2C bridge IC – Stefan Guenther
(16) OWFS Manual Page (I2C DS2482-100, DS2482-101 and DS2482-800)
(17) OWFS with i2c support on Raspberry Pi (English version)
(19) Python OW Server Discussion
(20) 1 Wire with DS18S20 digital thermometer (Bash) – ABelectronis 02/02/2019
(21) DS2482-100 1-Wire to I2C host interface – ABelectronics
(22) OWFS with I2C support on Raspberry Pi (Python) – ABelectronics 2019mar09
(23) DS2482 Kernel driver for Maxim DS2482-100, Maxim DS2482-800
(24) DS2482 Kernal Driver – Stefan Guenther
(26) Linux Kernel driver DS2482 for Maxim DS2482-100, Maxim DS2482-800
(27) Introduction to the 1-wire (w1) subsystem
(28) The Linux Kernel documentation 5.7.0-rc
(29) OWFS with I2C support on Raspberry Pi (for stretch) Tutorial – AB Electronics 2015
(30) OWFS with i2c support on Raspberry Pi – Wiki.m.nu
(33) Kernel Driver DS2482 – Linux Kernel.Org
(34) How to build and use the kernel of the Rpi I2C to 1-Wire Bridge DS2482? – 2020
(35) How to use the DS2482 kernel module? – 2018
(36) Rpi Python 1-Wire File System to read DS2482 I2C to 1-Wire bridge connected DS18B20 Temperature Sensors (same as Ref 32, problem solved)
(37) Rpi 1-Wire Tutorial – Packt 2015
(38) RJ12 Plug and Cables – AB Electronics
(39) DS2482 Board Schematic – AB Electronics
Appendices
Appendix A – DS2482-800 Application Schematic
Appendix B – DS2482-800 Block Diagram
Appendix C – DS2482-x00 Modules
Appendix D – DS2482-100 Schematic and Block Diagram
Appendix E – Enabling SPU (Strong Pull Up) of the DS2482 1-Wire Host Module
Application Note 3684 How to Use the DS2482 I2C 1-Wire Master – Maxim
How to enable DS2482 SPU – Ivan2 Artekit Product Comments 2018
The SPU pad is for the strong pull-up, to be used with the PCTLZ pin to control the on-board MOSFET. Both APU (active pull-up) and SPU (strong pull-up) must be activated using the internal registers. – Ivan2
App Note 3684 describes how to use the internal registers to (1) enalbe SKU, (2) change 1-Wire speed. One easy way to access the DS2482 registers is to use python I2C functions – tlfong01
Appendix F – Testing DS2482-100 using Linux kernel drivers
I googled and found a couple of kernel drivers for DS2482-100/800. I found the following Linux driver has the most comprehensive documentation, and therefore should be most friendly to newbies like me.
(26) Linux Kernel driver DS2482 for Maxim DS2482-100, Maxim DS2482-800
(27) Introduction to the 1-wire (w1) subsystem
(28) The Linux Kernel documentation 5.7.0-rc
Appendix G – DS2482-100 Schematic
-
Comments are not for extended discussion; this conversation has been moved to chat. – goldilocks♦ Apr 26 at 18:21
.END
Categories: Uncategorized