23. Lektion: Onewire: Unterschied zwischen den Versionen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche
Zeile 1: Zeile 1:
 
[[file:OneWire_Aufbau.png]]
 
[[file:OneWire_Aufbau.png]]
 +
Testaufbau mit Raspberry Pi Pico W und 3x DS18B20 Temperatursensoren.
 +
<br>
 +
<br>
 +
Die Bezeichnung OneWire bezieht sich darauf, das ein Draht als Signal- und Versorgungsleitung dienen kann. Damit ein Strom fließen kann sind natürlich immer 2 Drähte erforderlich.
 +
<br>
 +
Beim Anschluß mit nur 2 Drähten spricht man von parasitärer Speisung, weil die Stromversorgung als Parasit die Signalleitung benutzt. Diese Betriebsart hat sich bei mir als nicht stabil gezeigt. Außerden wichen die Temperaturwerte von denen bei 3-Draht-Speisung, also mit eigener Versorgungsspannungsleitung, ab.
 +
Es können mehrere OneWire-Sensoren an einem Bus betrieben werden.
 +
Das Titelbild zeigt einen Versuchsaubau mit 3 DS18B20 Temperatursensoren mit diskreter Speisung.
 +
<br>
  
  
 
+
<br><br><br><br><br>
  
 
<pre>
 
<pre>

Version vom 8. Januar 2024, 13:12 Uhr

OneWire Aufbau.png Testaufbau mit Raspberry Pi Pico W und 3x DS18B20 Temperatursensoren.

Die Bezeichnung OneWire bezieht sich darauf, das ein Draht als Signal- und Versorgungsleitung dienen kann. Damit ein Strom fließen kann sind natürlich immer 2 Drähte erforderlich.
Beim Anschluß mit nur 2 Drähten spricht man von parasitärer Speisung, weil die Stromversorgung als Parasit die Signalleitung benutzt. Diese Betriebsart hat sich bei mir als nicht stabil gezeigt. Außerden wichen die Temperaturwerte von denen bei 3-Draht-Speisung, also mit eigener Versorgungsspannungsleitung, ab. Es können mehrere OneWire-Sensoren an einem Bus betrieben werden. Das Titelbild zeigt einen Versuchsaubau mit 3 DS18B20 Temperatursensoren mit diskreter Speisung.







from machine import Pin
import onewire
import time
import ds18x20

warten = 250           # Wartezeit für nächste Abrage in ms
one_wire_warten = 750  # 750ms Wartezeit braucht der OneWire-Mechanismus
daten = [1, 2, 3]      # Liste mit 3 Einträgen für 3 Messstellen

ow = onewire.OneWire(Pin(23))
ds = ds18x20.DS18X20(ow)
roms = ds.scan()

while True:
    ds.convert_temp()
    time.sleep_ms(one_wire_warten)    # OneWire braucht eine Pause
        
    for x, rom in enumerate(roms):
        daten[x] = ds.read_temp(rom) # Hier werden die Temperaturen ausgelesen.


print(roms)
    [bytearray(b'(y\x19 \x00\x00\x00\xef'), bytearray(b'(\x19U \x00\x00\x00\xe4'), bytearray(b'(n\xdc\x1e\x00\x00\x00\x9c')]