23. Lektion: Onewire: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
| No edit summary | No edit summary | ||
| Line 1: | Line 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> | ||
Revision as of 14:12, 8 January 2024
 Testaufbau mit Raspberry Pi Pico W und 3x DS18B20 Temperatursensoren.
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')]