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

DS18B20 Treiber

  • 1
  • 2
  • 3
  • Page 3 of 3
Roy
Benutzer
Avatar
Gender:
Age: 68
Posts: 24
Registered: 07 / 2024
Subject:

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

 · 
Posted: 10.09.2024 - 10:26  ·  #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.
You must be logged in or your permissions are to low to see this Attachment(s).
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2123
Registered: 03 / 2003
Subject:

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

 · 
Posted: 10.09.2024 - 16:38  ·  #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
Gender:
Age: 68
Posts: 24
Registered: 07 / 2024
Subject:

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

 · 
Posted: 11.09.2024 - 14:11  ·  #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.
You must be logged in or your permissions are to low to see this Attachment(s).
  • 1
  • 2
  • 3
  • Page 3 of 3
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   65   79 · Page-Gen-Time: 0.035584s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI