Uncategorized

DS2482 notes

Asked 
Active today
Viewed 99 times
2

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???

<code>/mnt/1wire</code> directory shows 9 sensors but with the Node.js-script I'm able to read 11

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
  • 1
    Thanks 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
0

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?

ds2482 modules


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)

owfs install config


Part 2 – Testing OWFS Server without any DS18B20 sensor connected.

owfs server test


Part 3 – Detecting One DS18B20 Temperature Sensor

ds18b20 test

/ 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)

(18) OW version 2.0p0RC-1.6

(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

(25) DS2482 Driver – torvalds

(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

(31) OW (version 2.0p0RC-1.6)

(32) Rpi Python 1-Wire File System to read DS2482 I2C to 1-Wire bridge connected DS18B20 Temperature Sensors

(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

ds2820 app sch

Appendix B – DS2482-800 Block Diagram

ds2482 block


Appendix C – DS2482-x00 Modules

ds2482 modules


Appendix D – DS2482-100 Schematic and Block Diagram

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

ds2482

ab enc ds2482 schematic

A: OWFS (One Wire File System) can at most detect four DS18B20 sensors connected to the 8-channel DS2482-800 Host Module Problem

tlfong01Question 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 …

Thanks @tlfong01 for your brainstorming ideas, but tearing down the whole hardware/bustopology is not an option for me, as the 11 working sensors are already installed around the house and are working perfectly fine, so I can’t complain about my decision to go with 1wire and the DS2482 busmaster. As already mentioned my only problem is, that OWFS can’t read the upper 4 channels of the DS2482 (Even if only one sensor is connected to the 5th channel and no other channels are used). One possible solution would be to connect my two new sensors to one of the first 4 channels as /to continue…
well and it probably will work fine. But as the DS2482-800 offers 8 channels and shorter cable lengths would be better, i want to use the capacity of that chip if possible, and I’m sure there must be a way as it is a specification of the manufacturer. So, let’s focus on OWFS and how to configure it, to read all 8 channels…
(1) You might like to tell me (1) the length and config of the I2C wiring. As I said earlier, if your I2C wiring is longer than 1m, anything can happen. (2) same question for the 1-wiring. I usually prototype with ALL wiring shorten than 30cm, then wire by wire, try longer cables. (3) I forgot to mention if you are using 5V I2C signals which is always better than 3V3. There are a couple of other tricks applicable to I2C. My guess is that 1-Wire is more tricky than I2C.
And you might like to skim the posts on my experience in using I2C extenders/expanders/buffers, and 3V3/5V logic level shifters: raspberrypi.org/forums/…
Question: I have been using DHT22 humidity and temperature sensor all the time. I also use DS18B20 because I need water proof probes to submerge into liquids. But why are you using DS18B20, and not DHT22 etc?
(1) I think there’s a misunderstanding, the DS2482-board is directly mounted on to the RPi (e.g. like that sheepwalkelectronics.co.uk/images/RPI3-1lg.jpg ), so no issues with I2C-lenghts. (2) 1wire-lenght is about 20-30m on each channel with some 1-2m stubs. BUT AGAIN: Even only a single DS18B20 directly connected to the 5th channel can’t be read, so there can’t be an issue with cable-lenghts etc.; I’m pretty sure it must be only a little thing in configurating the DS2482 and OWFS!
And why the hell should I use DHT22, when I’m not interested in humidity and 11(!) DS18B20-sensors distributed around the house are working perfectly fine!!! I really don’t mean to be rude now, but discussing other hardware-solutions for my project won’t help me, as my installed setup works excellent and the aim of my initial question only was: WHY CAN’T I READ ONE OF THE UPPER 4 1WIRE-CHANNELS OF THE DS2482-800 USING OWFS?
My apologies for all the inappropriate brainstorming suggestions. Please also excuse my poor English standards. Let me see why I misunderstood the situation. It started from the very beginning, when I read your opening sentence: ” I’m about to build a heating control with DS18B20 …”. I wrongly interpreted that you have NOT really started, ie, not even have bought and hardware. Yes you did mention later in detail your specific problem. I must confess that I very slow in reading English, and that I actually cannot read a long sentence in full, I only try to remember the key words.
I asked about the length of I2C, because I was not aware that your board is a HAT, but when prototyping I used not to mount the HAT on top of the Rpi, For now I am testing the SIM7600 HAT. I actually have two identical HAT use long UART wires to connect, and three Rpi’s with bus extenders. When prototyping or trouble shooting, I can swap between 2 HATs and 3 Rpi’s in less than a minute. And for the UART controlled SIM7600 HAT, I actually use three USB UART and the Rpi on board UART to test, compare and contrast different configurations, / to continue, …
to find out why I could not place all 8 MCP23017s on the same bus. After many attempts, I learnt many tricks to work around, thank you for long explanation in broken English. I have a couple of more troubleshooting suggestions, (1) set I2C speed from 100kHz to 50kHz, but you need to upgrade to Rpi4B, because Rpi3B cannot not change I2C speed. (2) Shorten 1-Wire cables. Ah, supper time, see you later. PS – Just thinking aloud, sorry for all the typos.
I’m no native speaker either, so don’t worry about English skills 😉 Oh, I see, maybe that wasn’t the perfect opening sentence, sorry for that. Nevertheless, thanks for your brainstorming suggestions, I will see what I’m able to implement. If I can solve the problem, I will post my solution in here of course.
6:21 PM
No problem. Let’s move on. Question 1 – Do you have any schematic for the 4 RJ45 connectors? Are you aware that they are differently wired?
Suggestion: If SheepWalk schematic is same as ArteKit, I would suggest to do the following: (1) Do NOT enable the two 4k7 pullups, because Rpi I2C pins already have strong 1k8 pullups. (2) Enable MOSFET strong pullup (SKU). Warning: I am just a friendly hobbyist, I have ZERO experience in DS2482x00, No guarantee Nothing would meltdown or blowup! Ah bed time! Good luck and see you tomorrow or after. Cheers.
end of chat

 

.END

Categories: Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: