1-Wire Ultraschall Entfernungsmesser / Füllstandsmesser (Neue Version)

Nachdem ich mit den Ergebnissen der ersten Version (Link) nicht sehr zufrieden war habe ich das Konzept komplett, erfolgreich, überarbeitet.

Es wird jetzt ein spezielles IC, ein LTC2644, eingesetzt um die per PWM erzeugte Spannung, proportional zur gemessenen Entfernung, in eine genaue Spannung für den DS2438 zu wandeln.

Der LTC2644 ist genau für diesen Einsatzzweck gedacht und erfüllt die Aufgabe perfekt.

Es gibt ihn in verschiedenen Ausführungen, 8-Bit, 10-Bit und 12-Bit. Für diesen Anwendungszweck ist es total egal welche Version man einsetzt, einfach die günstigste bzw. am besten lieferbare Version nehmen,

Diese Platine ist dafür entstanden…

1-Wire-US-Entfernungsmesser-PCB 1-Wire Ultraschall Entfernungsmesser / Füllstandsmesser (Neue Version)Als Mikrocontroller kommt ein ATTINY25/45/85 zum Einsatz, folgendes Bascom Programm befindet sich aktuell im Test. Aktuell erstelle ich auch für die Arduino IDE ein Programm.

'
' Software zur Entfernungsmessung mit Ultraschallsensoren (HC-SR04 / JSN SR04T)
'
' Erstellt von Th. Heldt, Karlsbad (Germany)
'
' Zum Einsatz mit der 1-Wire Ultraschall Entfernungsmessung Platine mit ATTINY25
'
' Web: https://blog.thomasheldt.de
'
' Messbereich ca.0(3)-400 cm (Auflösung 1cm)
'

$regfile = "attiny25.dat"
$crystal = 8000000
$hwstack = 32
$framesize = 32
$swstack = 32

Const Debugging = 1

Dim Pulsin As Long
Dim Zeit As Long
Dim Entfernung As Single
Dim Pwmwert As Byte

#if Debugging = 1
   'Debugausgabe Seriell mit 9600 Baud (8N1) an PB1 aktivieren
   Open "COMB.1:9600,8,n,1" For Output As #1
#endif

Config Timer0 = Pwm , Compare A Pwm = Clear Up , Prescale = 1

Config Portb.0 = Output
Config Portb.3 = Output
Config Portb.4 = Input

Pwm0a = 0

Do
   'Triggerpuls senden
   Pulseout Portb , 3 , 20

   'Auf Echopuls warten
   Pulsein Pulsin , Portb , 4 , 1

   'Umrechnung in cm
   Entfernung = 0.17325 * Pulsin
   Zeit = Pulsin * 10

   'Entfernung begrenzen auf max 400cm
   If Entfernung > 400 Then
      Entfernung = 400
   End If

   'Messbereich 0-400 cm -> PWM 0-5V -> PWM Werte 0-255 -> Maximaler Wert 255 / maximale Entfernung 400cm = Faktor 0,6375
   Pwmwert = Entfernung * 0.6375

   'PWM erzeugt Spannung zwischen 0V und 5V mit LTC2644 zur Messung durch den DS2438 ADC
   'Rückrechnung: Spannung(DS2438Z VAD) / 0,0125 = Entfernung in cm
   Pwm0a = Pwmwert

   #if Debugging = 1
      'Debugausgabe senden
      Print #1 , "-- Debugausgabe --"
      Print #1 , "Zeit= " ; Zeit ; " us"
      Print #1 , "Entfernung= " ; Entfernung ; " cm"
      Print #1 , "PWM Wert= " ; Pwmwert
   #endif

   'Messung alle 10 Sekunden
   Wait 10
Loop
End

Abstandsmesser PWM Test

zip 1-Wire Ultraschall Entfernungsmesser / Füllstandsmesser (Neue Version)
Abstandsmesser-PWM-Test.zip
Downloads: 48, Filesize: 3.5 KB, Filedate: 25 Dez. 2018

Leider ist der LTC2644 nur in einem, für Bastler unfreundlichem, MSOP12 Gehäuse erhältlich. Man sollte also schon sehr gut löten können, auch ich habe die erste Testplatine opfern müssen weil ich den IC nicht richtig aufgelötet hatte 🙁

In der aktuellen Version, gedacht um z.B. den Füllstand von Wassertanks oder Zisternen zu messen, beschränke ich mich auf einen Messbereich von 0 (eigentlich ca. 3) – 400cm. Diese Spanne setze ich in der Software auf einen PWM Wert zwischen 0 und 255 um.

Nach der Messung mit dem AD-Wandler des DS2438 kann man den Entfernungswert wieder einfach zurück rechnen und erhält dann die Entfernung in Zentimetern.

So siehr es in meinem Loxone Webinterface aktuell aus…

1-Wire-Ultraschall-Füllstandsmesser-Loxone-Ansicht 1-Wire Ultraschall Entfernungsmesser / Füllstandsmesser (Neue Version)Eingesetzt werden können zwei verschiedene Ultraschall Sensor Module, das HC-SR04 und das JSN SR04T. Sicher gehen auch diverse andere Ultraschall Sensor Module welche den gleichen Messvorgang benötigen un die gleiche Anschlussbelegung haben.

Fertig aufgebaut sieht die Platine jetzt so aus…

1-Wire-US-Entfernungsmesser-PCB-Oben 1-Wire Ultraschall Entfernungsmesser / Füllstandsmesser (Neue Version)     1-Wire-US-Entfernungsmesser-PCB-Seite 1-Wire Ultraschall Entfernungsmesser / Füllstandsmesser (Neue Version)

Noch ein Wort zur Positionierung des Sensors in z.B. einer Zisterne, da der Sensor den Schall mit einer gewissen Fächerrung abstrahlt muss er so positioniert werden das kein Hindernis im Weg ist.

Folgende Bilder sollen dies an einer Boden-Zisterne beispielhaft veranschaulichen…

1-Wire-US-Entfernungsmesser-korrekte-Plazierung-in-Zisterne 1-Wire Ultraschall Entfernungsmesser / Füllstandsmesser (Neue Version) 1-Wire-US-Entfernungsmesser-falsche-Plazierung-in-Zisterne 1-Wire Ultraschall Entfernungsmesser / Füllstandsmesser (Neue Version)Man erkennt im zweiten Bild das der Schall die Seiten des Wartungsschachtes trifft, dies führt unweigerlich zu falschen Ergebnissen.

Noch ein Wort zu den Ultraschall-Sensor Modulen, im Innenbereich kann eigentlich jedes Modul eingesetzt werden, also das HC-SR04 als auch das JSN SR04T. In feuchten Umgebungen wie Zisternen oder im Außenbereich sollte man kein HC-SR04 sondern nur die, besser geschützten, JSN SR04T einsetzen.

Und noch etwas zur Genauigkeit, da sich Schall in der Luft bei unterschiedlichen Temperaturen unterschiedlich schnell ausbreitet ergibt sich je nach Temperatur eine Abweichung,

Ich habe aber darauf verzichtet diese Abweichung in der Entfernungsberechnung zu kompensieren da es nicht auf den Liter genau ankommt 😉

Die Platine gibt es ab sofort im Blog Shop, einen Bausatz wird man ab Februar 2019
im Blog Shop ordern können 🙂

Verlinke diesen Beitrag:

<a href="https://blog.thomasheldt.de/1-wire-ultraschall-entfernungsmesser-fuellstandsmesser-neue-version/">1-Wire Ultraschall Entfernungsmesser / Füllstandsmesser (Neue Version)</a>

9 Gedanken zu „1-Wire Ultraschall Entfernungsmesser / Füllstandsmesser (Neue Version)

  1. Fred

    Funktioniert der Ultraschallsensor auch unter „Echtbedingungen“, d.h. wenn er bei hoher Luftfeuchtigkeit z.B. in einer Zisterne eingesetzt wird und dadurch am Gitter beschlägt?

    Antworten
    1. Thomas H. Beitragsautor

      Hallo Fred,

      die normalen HC-SR04 würde ich im Außenbereich oder feuchten Umgebungen nicht einsetzen.

      Es gibt aber den genannten SR04T welchen ich in einer Regentonne getestet habe.

      Ein Vorteil dieses Sensors ist es das man die Platine selber in einem separatem, wasserdichten, Gehäuse unterbringen kann und den eigentlichen Ultraschall Sensor dann per Kabel anbindet.

      Zur Montage ein Stück Flachstahl nehmen, ein Loch im Durchmesser des SR04T Sensors machen und dann den Flachstahl ggf. noch abwinkeln.

      Übrigens schwankt der gemessene Wert je nach Temperatur etwas, dies könnte man noch korrigieren aber es stört mich nicht da es nur wenige Liter unterschied sind 😉

      Gruß
      Thomas

      Antworten
    1. Thomas H. Beitragsautor

      Hallo Trelas,

      das kommt etwas darauf an wie breit die Behälter innen sind, also ob der Schall die Seitenwände erreicht.

      Aber einen versuch wäre es auf jeden Fall Wert, bitte aber beachten das die Sensoren mindestens 2-5 Zentimeter über dem höchsten Füllstand angebracht werden müssen.

      Gruß
      Thomas

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.