I have done one more experiment with my 3.3 V parasitic powered system. I 
determined the strongest pullup value I could safely use on my BBB GPIO pin 
(see below), and used the ten-turn pot with the pyownet program to approach 
that value. The one of my DS18B20 sensors that has always read closer to 
accurate reaches a stable and accurate reading with just over 1000 Ohms as a 
pullup, maintaining the 1-Wire bus voltage at just under 3.0 V during 
conversion. The other DS18B20 requires a pullup below 600 Ohms and a bus 
voltage above 3.1 V to reach accuracy - but with sufficient conversion power it 
converges to the correct reading. 
 
Both sensors are happy to report temperature values with bus voltage as low as 
2.0 V during conversion, but those values may be up to ten degrees C too high. 
The impression I'd received from various web sources was that the DS18B20 is a 
digital device, and if it reports a temperature value at all, that value is 
precisely accurate. Clearly that is not true! 

Since the digital parts of the chips work fine far below the critical voltage, 
I'm left to suspect that the 3.0 (or 3.1) V supply minimum is required by an 
ADC reference voltage source. As the reference voltage drops with insufficient 
bus power, the apparent temperature rises - and the digital circuitry reports 
what the ADC tells it. 

>From Maxim DS18B20 Programmable Resolution 1-Wire Digital Thermometer 
>Datasheet REV: 042208
---
Supply Voltage VDD Local Power   +3.0 [to] +5.5 V
Active Current IDD    VDD = 5V      1 [to] 1.5 mA
---
 
That typical conversion current spec is with a 5V supply:
I don't see any mention of an active power conversion circuit inside the 
DS18B20, so I suspect the current drops proportionately at 3.0V, or worst case 
remains similar. 

In my test with the 500 Ohm pullup combination, the bus voltage dropped to 3.1 
V during conversion, suggesting my two parallel DS18B20 chips draw 0.4 mA 
together. Carefully scrolling my scope across the entire pause between the 
convert command and the following read, I can't see any variation in loading. 
Apparently the 1.5 mA spec is an instantaneous value, and the internal 
capacitor (CPP) smooths out the current load of the conversion. Still, with a 
3.3 V supply and parasitic power, my conclusion is that it is on the edge of 
impossible to reliably reach the specified conditions without an active pullup. 
 
 
An interesting note I found during my research:
<https://www.maximintegrated.com/en/support/faqs/ds18b20.html>
-----
Where physically on the device does the temperature measurement take place?
The DS18B20 does not sense temperature directly through the package. For all 
package types, the DS18B20 senses temperature primarily through the GND pin. 
Ensuring a good thermal connection between the GND pin of the device and the 
heat source you wish to measure will provide the best results.
-----
 
 
Maximum BBB GPIO current:
 
>From am335x Processor Datasheet Rev_H May 2015.pdf: 
---
Steady state max voltage at all IO pins(8) 0.5 V to IO supply voltage + 0.3 V
---
 
There does not appear to be a maximum defined for GPIO currents. Each 
individual pin has a "buffer strength" value in Table 4-1 Pin Attributes. 
There is an index from GPIO number to the ball location order of that Pin 
Attributes chart: 
---
4.3 Signal Descriptions
... 
General Purpose IOs/GPIO0 Signals Description
---

Buffer strength appears to be 6 mA except for these GPIO pins which are 4mA:
gpio0_7,12,13,14,15,18,19,20 
gpio1_8,9,10,11
gpio3_5,6,13

The internal pullups (if they are enabled)...  
<https://e2e.ti.com/support/arm/sitara_arm/f/791/t/253870>
-----
It's in the datasheet, but you won't find it as resistance. You will find it in 
Table 3-11 as either "Input leakage current, Receiver disabled, pullup enabled" 
or "Input leakage current, Receiver disabled, pulldown enabled".
100&micro;A for lets say the VDDSHVx @ 3.3 V  is equivalent to a 33k PU.
-----
For the 6mA pins, Input leakage current, Receiver disabled, pullup enabled: 
[min] 243 [typ] 100 [max] 19 &micro;A, so 3.3/0.0001 = 33000, but 
3.3/0.000243 = 13580, and 3.3/0.000019 = 173684

--> So assuming we are pulling from 3.30 V, using pin 8_11 = GPIO1_13 which has 
a 6 mA buffer, and the VOL Low-level output voltage, driver enabled, IOL = 6 
mA, is 0.45 V, the lowest safe pullup value is: 
(3.30-0.45)/0.006 = 475 Ohms. If the internal pullup worst case was enabled, it 
would limit our external pullup to 492 Ohms. 
 
 
Loren

| Loren Amelang | lo...@pacific.net |




------------------------------------------------------------------------------
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to