Universalsensor als Ultraschall Füllstandsmesser / Entfernungsmesser

Begonnen von Dirk, 24 Oktober 2015, 12:29:31

Vorheriges Thema - Nächstes Thema

Dirk

Hallo Zusammen.

Da der Tread Selbstbau HM_WDS10_TH_O mit Luftdruckmessung doch schon etwas länger geworden ist, starte ich für dieses Feature doch mal einen eigenen Tread.

Wie es der Titel schon suggeriert habe ich der 0.15er Firmware vom Universalsensor eine Unterstützung für den US-100 Ultraschallsensor eingebaut.
Das Ganze ist zwar noch experimentell funktioniert aber schon ganz gut.

Wozu kann man Ganze nun einsetzen?
Man kann das z.B. nutzen nutzen um den Füllstand seiner Zisterne / Öltank / Badewanne usw. zu messen.
Ebenso könnte man damit z.B. im Winter die Schneehöhe messen und sich z.B. von FHEM früher wecken lassen, wenn es in der Nacht geschneit hat.

Kurz noch ein paar Fakten zum US-100:

  • Spannungsversorgung: 3 V - 5 V
  • Stromverbrauch:  ca. 3.5mA
  • Messfrequenz: 40KHz, temperaturkompensiert
  • Messentfernung: 2 cm-450 cm
  • Messgenauigkeit: bis zu 3 mm
  • Messwertübertragung: Pulsweite oder UART

Das Wichtigste an dieser Auflistung ist die Spannungsversorgung. Der US-100 läuft nämlich bereits ab 3V.
Daher funktionieren andere Sensoren wie z.B. der HC-SR04 hier nicht ohne zusätzliche Hardware, da der Universalsensor selber nur bei 3,3V betrieben wird.

Bei der Messwertübertragung über UART könnte man sogar noch die Temperatur vom US-100 abfragen. Diese wird aber nur in vollen Grad Celsius ausgegeben und ist vermutlich auch nicht so genau. Daher nutze ich der Firmware die Auswertung der Pulsweite.

Der US-100 braucht daher einfach nur mit der Pinleiste des Sensors 1:1 verbunden werden.
Der Jumper auf der US-100-Platine darf dann also nicht verbunden sein, da mit verbundenem Jumper der US-100 die Daten per UART senden möchte.

Pinbelegung:
Universalsensor     US-100

  • D5               VCC
  • D6               Trig / Tx
  • D7               Echo / Rx
  • GND            GND

Da der US-100 nur ~3,5 mA Strom verbraucht, wird dieser hier bei einer Messung direkt vom AVR versorgt. Der AVR schaltet den US-100 auch nur kurz für eine Messung ein. Daher sollte das Ganze bei Batteriebetrieb recht lange laufen.

Wie gesagt, das Ganze ist aktuell nur experimentell und derzeit werden die Sensorwerte in den Bytes des Helligkeitssensors übertragen.
Im Code in der Firmware muss beim Kompilieren daher die Entfernungsmessung erst aktiviert werden.

Dafür muss in der Datei Sensor_SHT10_BMP085_TSL2561.h nur die Zeile
//#define US_100
einkommentiert werden.

#define US_100


Damit die volle Auflösung dann auch in FHEM ankommt muss man noch Zeilen in der "HMConfig_SenTHPL.pm" im FHEM-Verzeichniss auskommentieren:

#$luminosity = ($luminosity + 0.0) / 100;
#$luminosity = ($luminosity < 100) ? $luminosity : sprintf('%.0f', $luminosity);


Die Entfernung wird dann mm an FHEM oder auch an eine CCU übertragen.
Das Umrechnen in z.B. ein Volmen kann man dann je nach Form z.B. in einem Userreading vornehmen.

Je nach Ideen werde ich das Ganze bestimmt weiter entwickeln.
Ggf. erfolgt die Übertragung der Messwerte in Zukunft auf einem eigenen Kanal, oder einfach nur als als zusätzliche Bytes zu den bisherigen Daten
Auch ist es denkbar zumindest eine einfache Volumenberechnung direkt in die Firmware zu integrieren.

Falls jemand Lust hat das Ganze auszuprobieren. Ich habe noch den einen oder anderen US-100 übrig.

Nachtrag:
Die US-100 Platine hat abgewinkelte Anschlusspins.
Um die Platine direkt auf die untere Pinreihe des Universalsensors aufstecken zu können, muss man die Pins der US-100-Platine vorsichtig mit einer Zange "gerade" biegen. Wie unten in dem Bild gezeigt. Außerdem darf der inner GND (Masse) -Pin nicht mit angeschlossen werden. Siehe Bild mit der Anschlussbelegung. Diesen kann man z.B. mit einem Seidenschneider einfach abknipsen, oder mit einem Lötkolben auslöten.

Viele Grüße
Dirk

kvo1

Hallo Dirk,

Coole Sache, ich trag mich hier schon mal kurz ein !

Klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

ext23

Moin,

ja ich hätte auch Interesse. Aber ich habe etliche HC-SR04 rumliegen, wenn die auch laufen müsste ich mir nur noch die Platine besorgen, aber obwohl das kann man ja mit einem AVR auch selber zusammen basteln. Bzw. ich habe hier noch etliche panStamps rumliegen.

Ich würde damit den Füllstand meiner Regentonne messen. Kapazitiv war nichts, wegen der starken Temp Schwankung, die Tonne steht im Sommer in der prallen Solle. Jetzt habe ich einen Drucksensor dran, was im Prinzip auch die beste Lösung ist aber irgendwie haut da auch was nicht hin. Von daher würde mich das mit dem Ultraschall auch mal interessieren. Frage ist nur ob ich damit nicht dieselben Probleme bekomme wegen der Temperatur und vor allem was die Messköpfe zu dauerhaftem Kondenswasser sagen ;-)

Gruß
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Ralli

Hallo Dirk,

an und für sich eine tolle Sache.

Allerdings hätte ich einen nicht unerheblichen Verbesserungsvorschlag:

Da die Zisternen bzw. die Öltanks oder sonstige Gebinde teilweise weit ab von jeglicher Infrastruktur stehen und die Anbindung mit Funk daher problematisch sein kann, möchte ich vorschlagen, die Sensoren mit einem Zwei- oder Vierdraht-Kabel vom eigentlichen Sensor (mit sauberer Steckerverbindung) abzusetzen. Wäre nur zu prüfen, wie lang die Zuleitung sein darf.
Gruß,
Ralli

Proxmox 8.1 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.6.20240316) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

Dirk

@kvo1
Nur den US-100?

@ext23
Die HC-SR04 würden grundsätzlich funktionieren. Ggf. müsste man die Berechnung der Pulslänge vom Echo in der FW anpassen.
Das Problem ist hier eher ein elektrisches.
Da der CC1101 nur max. 3,6 V verkraftet muss man im Zusammenspiel mit Bauteilen die nur bei 5V funktionieren die Pegel wandeln.
Zusätzlich muss man dann mit 5 V Spannungsversorgung arbeiten oder dem HC-SR04 einen Stepupregler verpassen.
Bei Batteriebetrieb hat man dann halt das eine oder andere "Problem" zusätzlich zu lösen. Daher ist der US-100 hier aus Hardwaresicht viel einfacher zu integrieren.

An das Thema Kondenswasser hab ich auch schon gedacht. Optimal währen hier wohl Sensoren wie sie z.B. auch bei Autos bei den Einparkhilfen verbaut sind.

@Ralli,
Das Design im Gehäuse auf den Bildern ist nur ein Vorschlag. Natürlich kannst du den Sensor über ein Kabel extern an die Platine anschließen. Vier Adern reichen dazu.
Die Kabellänge dürfte auch unkritisch sein. Hier laufen bei einer Messung nur 2 kurze Impulse über die Leitung. Wenn es länger wird sollte man den Port vom AVR ggf. noch mit einer Schutzbeschaltung versehen.

Gruß
Dirk

Mr. P

Hej zusammen,

freue mich über die Neuerungen - muss aber die bereits getätigten Vermutungen bestätigen. Diese US-Sensoren halten nicht besonders viel von Feuchtigkeit und beginnen zu rosten.
Leider teurer aber dafür sowohl die Lösung für Daniel als auch Ralli wäre der JSN-SR04T-Sensor. Zwar läuft der nur mit 5V, aber je nach Abfrageintervall sollte das mit entsprechendem StepUp ebenso machbar sein.

Edit:
Dirk war schneller... beim JSN-SR04T handelt es sich um einen als Einparksensor verwendbaren Sensor. ;-)
Und gerade noch eingefallen: Man könnte theoretisch auch die Trommeln vom Sensor gegen wasserfeste tauschen und diese zum Beispiel aus Dirks wasserfestem Gehäuse heraus ragen lassen und alles schön abdichten. ;-)
Greetz,
   Mr. P

ext23

Ja das ist kein Problem mit den 5V, aber ich bin kein freund von Batterien, bei mir hat alles 5 bzw. 12V. Also stepUp brauche ich nicht, eher ein step down für den ganzen 3,3V Schei** den es heute gibt ;-)

Ja diese Autosensoren sind dort vermutlich besser. Gibt es ja auch an jeder Ecke oder in der Bucht. Auch bei Conrad für einen Top Preis *hüstel*
http://www.conrad.de/ce/de/product/182271/Ultraschall-Sensor-K-14WP10-K-14WP10-Wasserdicht-IP64-40-kHz-x-H-256-mm-x-225-mm

Die Frage ist ob eventuelles Wasser am "Gitter" durch den Schall "abgeschüttelt" wird. Den Rest kann man ja in Harz eingießen oder ähnlich.

Naja ich werd mir mal demnächst etwas zusammenbraten wo ich die HM Firmware raufzaubern kann. Oder gibt es diese Platinen noch?

Gruß
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Dirk

Und abgefragt wird der dann auch auf die selbe Art und Weise (Trigger / Echo) Daher kann man die Firmwareänderungen schon mal zum probieren nutzen. Ggf. das Timing währ da noch anzupassen.

Für einen Batteriebetrieb braucht dann also noch eine Transistor zum Einschalten, dahinter ein kleiner Stepup 3,3 -> 5V und am Echo-Ausgang ein kleiner Pegelwandler zurück auf 3,3 V. Im einfachsten Fall dürfte da ein Spannungsteiler aus 2 Widerständen reichen.

Bei Versorgung mit 5 V Dauerspannung reicht dann der Pegelwandler / Spannungsteiler.

ZitatOder gibt es diese Platinen noch?
Vom Universalsensor? Ja immer mal wieder.
die kleinen für den Außensensor liegen noch hier. Für den Innensensor sind in Bestellung.

ZitatDie Frage ist ob eventuelles Wasser am "Gitter" durch den Schall "abgeschüttelt" wird. Den Rest kann man ja in Harz eingießen oder ähnlich.
Ich werde den US-100 trotzdem mal draußen testen. Und dann hier berichten.

ext23

Zitat von: Dirk am 24 Oktober 2015, 19:25:15
die kleinen für den Außensensor liegen noch hier. Für den Innensensor sind in Bestellung.
Echt, na dann könntest mir ja mal zwei schicken. Die sind unbestückt richtig? Muss ich mal schauen ob ich noch ein CC1101 rumliegen habe.

Zitat von: Dirk am 24 Oktober 2015, 19:25:15
Ich werde den US-100 trotzdem mal draußen testen. Und dann hier berichten.
Das würde mich zumindest brennend interessieren. Ich hab heute meine Gießanlage abgebaut und die Tonnen geleert, ich hab mir sagen lassen das es bald Winter wird ;-)


Gruß
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Dirk

Zitat von: ext23 am 24 Oktober 2015, 19:52:31
Die sind unbestückt richtig?
Wie du willst. Kann ich dir auch komplett fertig machen incl. CC1101 Modul.

PeMue

Hallo Dirk,

klasse Sache. Bin gerade mit einem ESP8266 in Sachen Entfernungsmessung unterwegs. Mal sehen, ob ich nicht doch auf Homematic umstelle ...

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

CQuadrat

Hallo Dirk,

super und 1000 Dank dafür!
Ich würde mich dann schon mal vormerken lassen  :)

Es gibt übrigens auch wasserdichte Ultraschallsensoren:
z.B. den DYP-ME007Y (http://www.amazon.de/Generic-DYP-ME007Y-Ultraschall-Sensormodul/dp/B00CXKKO6U/ref=sr_1_4?ie=UTF8&qid=1414871970&sr=8-4&keywords=ultraschallsensor&tag=httpwwwforumr-21). Der muss aber - glaube ich - anders angesprochen werden.

Außerdem, wenn man mit dem Ultraschall Füllstandsmesser die Befüllung eines Öltanks messen will, muss man überlegen, wie man diesen Sensor am Tank anbringt. Üblicherweise haben Öltanks an der Oberseite Stutzen mit G 1 1/2 Zoll oder G 2 Zoll Innengewinde.


Viele Grüße

Christoph

FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), KM271 (per ser2net), SONOS (div. Gimmicks), OneWire, Hue

Dirk

Hi Christoph,

Zitat von: CQuadrat am 25 Oktober 2015, 12:08:39
Es gibt übrigens auch wasserdichte Ultraschallsensoren:
Ja, wie weiter unten schon mal erwähnt.
Man muss das Teil allerdings über einen 3,3 V -> 5V Stepupregler und Pegelwandler anschließen, da das mit 5V arbeitet.
Die Ansteuerung ist aber soweit ist identisch. -> Trigger (Ping) -> Echo (Laufzeit messen)
Evlt. muss man die Formel zur Umrechnung der Laufzeit in Entfernung anpassen. Eine Korrektur könnte man aber auch in FHEM machen.

ZitatAußerdem, wenn man mit dem Ultraschall Füllstandsmesser die Befüllung eines Öltanks messen will, muss man überlegen, wie man diesen Sensor am Tank anbringt. Üblicherweise haben Öltanks an der Oberseite Stutzen mit G 1 1/2 Zoll oder G 2 Zoll Innengewinde.
Ok, hier fehlt mir die Hintergundinfo. Ich muss mal meinen Vermieter fragen ob ich mir einen Öltank einbauen darf  ;D

Viele grüße
Dirk

ext23

Zitat von: Dirk am 25 Oktober 2015, 12:21:39
Ok, hier fehlt mir die Hintergundinfo. Ich muss mal meinen Vermieter fragen ob ich mir einen Öltank einbauen darf  ;D

*lol*
Btw. auch bei Regentonnen etc. sollte man das am besten in ein Rohr packen. Sonst hat man eventuell unerwünschte Reflexionen wenn der Tank Verstärkungsrippen hat. Aber das nur mal so nebenbei.
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Gunther

Ich lese hier mal mit - auch wenn ich technisch viele Dinge nicht verstehe...  ::)
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden