|
|
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
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')]