Suche 1-Wire Treiber fürs Auslesen von DS18B20 Sensoren

DS18B20 Treiber

  • 1
  • 2
  • 3
  • Seite 3 von 3
Roy
Benutzer
Avatar
Geschlecht:
Alter: 69
Beiträge: 24
Dabei seit: 07 / 2024
Betreff:

Re: Suche 1-Wire Treiber fürs Auslesen von DS18B20 Sensoren

 · 
Gepostet: 10.09.2024 - 10:26 Uhr  ·  #17
Hallo zusammen,
wie versprochen nun das Ergebnis meiner Recherchen.
Im Anhang findet Ihr eine Unit "OneWire_Bus.pas", die die grundlegenden Befehle zum Umgang mit dem 1-Wire Bus
und speziell die Kommunikation mit DS18B20 Temperatursensoren enthält.
Im Kopf der Unit steht was zu beachten ist.
Der zweite Anhang "1-Wiretest.pas" ist ein kleines Beispielprogramm für das Auslesen von bis zu 4 * DS18B20.
Es ist sicher nicht die Krone der Programmierkunst, vielleicht hilft es doch mal jemandem weiter.

Grüsse
Roy

Edit: Die Unit wurde korrigiert.
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Suche 1-Wire Treiber fürs Auslesen von DS18B20 Sensoren

 · 
Gepostet: 10.09.2024 - 16:38 Uhr  ·  #18
Hallo Roy,

vielen Dank. Ich hab mir inzwischen auch DS18B20 besorgt, Test wird noch dauern.
Durch was ist die Anzahl auf 4 beschränkt? Ich hab mir nämlich gleich mal 15 Stück besorgt :D


Darf ich diesen Thread nach "Software" verschieben? Gerne kannst du da aber auch selber einen neuen Thread mit den Anhängen erstellen.

Gruss
Harry
Roy
Benutzer
Avatar
Geschlecht:
Alter: 69
Beiträge: 24
Dabei seit: 07 / 2024
Betreff:

Re: Suche 1-Wire Treiber fürs Auslesen von DS18B20 Sensoren

 · 
Gepostet: 11.09.2024 - 14:11 Uhr  ·  #19
Hallo Harry,

natürlich darfst Du den Thread dahin verschieben. Wenn möglich schicke mir bitte einen Link vom neuen Platz, dass ich den Beitrag einfach wiederfinde.

Zum Programm: Im Beispiel mache ich der Einfachheit halber für jeden meiner 4 Sensoren eine Auswertung - bei Deinen 15 wird eine Abarbeitung in einer Schleife effizienter sein.
In der Unit gibt es die Konstante "MaxSensoren",
Code
 MaxSensoren : byte = 7; //0..7 = Sensoren maximal 8 ! 

Wenn Du mehr brauchst einfach hier angeben, das Array
Code
  TIDs     = array[0..MaxSensoren * 9] of Byte;  //array als Container für bis zu 8 Tempsensorenen IDs (=64Bit) 

wird dann ensprechend grösser. Hier passen aber max. 32 Sensoren rein (Byte!).
Ich habe übrigens in der Unit einen Fehler gesehen:
Code
type
  TActID   = array[0..MaxSensoren ] of Byte;  //in das Array wird die aktuelle ID in "Getmyid" gespeichert und in der Tempmessung verwedndet

Das Array muss mit
TActID = array[0..7] of Byte;
deklariert werden!

Grüsse
Roy

Edit: Man, da hatte ich wirklich einen schlechten Tag, die Deklaration von TIDs muss richtig heißen:
Code
TIDs     = array[0..(MaxSensoren * 8) - 1] of Byte;  //array als Container für momentan bis zu 8 Tempsensorenen IDs (=64Bit)
und "MaxSensoren" dann
Code
 MaxSensoren : byte = 8; //momentan maximal 8 Sensoren, Mit "Byte" maximal 32
.
Ich hoffe jetzt stimmt's.
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
  • 1
  • 2
  • 3
  • Seite 3 von 3
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   65   79 · Page-Gen-Time: 0.040494s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI