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
Question
OWFS (One Wire File System) can at most detect four DS18B20 temperature sensors connected to the 8-channel DS2482-800 1-Wire host module. How to fix it?
Answer
(1) Enabling the DS2482’s SPU MOSFET, and (2) Using a lower 1-Wire speed would hopefully solve the problem. See Appendix E for more details.
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
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
-
Comments are not for extended discussion; this conversation has been moved to chat. – goldilocks♦ yesterday
Categories: Uncategorized