Um meine 1-Wire Sensorfamilie zu erweitern fehlte mir noch eine Möglichkeit zu erfassen ob es geraden regnet oder nicht. Nach einiger Überlegung bin ich auf die Idee gekommen über eine kapazitive Messung und mit Hilfe des Komperators eines Attiny25 das Problem zu lösen.
Eine Platine der Testreihe dazu sieht z.B. wie folgt aus…
Als Sensorelement kommt ein s.g. Kammsensor zum Einsatz.Dieser hat trocken eine bestimmte Kapazität welche sich mit zunehmender Benetzung des Sensors, mit Wasser, ändert.
So sieht die einfache Version des Kammsensors aus…
Das Funktionsprinzip ist folgendes:
Der Kondensator (Kammsensor) wird entladen, danach wird dieser wieder aufgeladen und der Komperator vergleicht die Spannung mit einer Referenzspannung. Je nachdem wie lange der Kondensator (Kammsensor) braucht um sich auf die Referenzspannung aufzuladen werden 3 verschiedene DS2411 auf den 1-Wire Bus geschaltet.
Diese signalisieren dann ob es tröpfelt, bzw. Tau auf dem Sensor ist, es mittelstark regnet oder es in strömen gießt. Mir reichen 3 Schaltschwellen aus, auch sollten diese reichen um z.B. zu entscheiden ob Fenster geschlossen werden müssen oder nicht.
Die Auswertung welcher DS2411 aktiv ist übernimmt der Loxone Miniserver.
Zusätzlich ist auf der Platine ein DS18B20 Temperatursensor untergebracht, bei Minusgraden kann man dann davon ausgehen das Schnee oder Eis auf dem Kammsensor liegt.
Die ersten fertigen Platinen sehen jetzt so aus…
Die 1. Version noch ohne DS18B20Die 2. Version mit DS18B20 und der Möglichkeit den Sensor zu beheizen
Die 3. und Aktuelle Version mit DS18B20 und Schalter für Heizung des Sensors
Der Kammsensor sieht in der Testversion jetzt wie folgt aus…
… auf der Rückseite können „Heizwiderstände aufgelötet werden…
Der Kammsensor hat aktuell trocken eine Kapazität von ca. 35 – 50 pF. Dieser Wert steigt bei Benetzung mit Wasser auf über 150 pF an. Aktuell teste ich die Platinen mit der ersten Softwareversion, es sieht schon sehr gut aus 😉
Die Software für den Attiny25 habe ich diesmal mit Bascom-AVR geschrieben, hier die aktuelle Version:
$regfile = "attiny25.dat" $crystal = 8000000 $hwstack = 20 $framesize = 20 $swstack = 20 Dim A As Integer Config Portb.2 = Output Config Portb.3 = Output Config Portb.4 = Output Portb.2 = 0 Portb.3 = 0 Portb.4 = 0 Do Config Portb.0 = Output Waitms 100 Config Portb.0 = Input A = 0 While ACSR.ACO = 0 Incr A Wend If A > 100 Then Portb.2 = 0 Portb.3 = 0 Portb.4 = 1 Elseif A > 75 Then Portb.2 = 0 Portb.3 = 1 Portb.4 = 0 Elseif A > 50 Then Portb.2 = 1 Portb.3 = 0 Portb.4 = 0 Else Portb.2 = 0 Portb.3 = 0 Portb.4 = 0 End If Loop End
Zu guter Letzt enstand jetzt noch eine Platine in SMD Bestückung, sie bietet zusätzlich noch eine Erkennung (Meldung über einen weiteren DS2411) ob die Heizung eingeschaltet ist oder nicht. Im Blog Shop wird es mindestens 2 Versionen geben, eine THT Version (ohne Heizungsmeldung) und eine SMD Version.
So sieht der Entwurf der SMD Version aus…
Verlinke diesen Beitrag:
<a href="https://blog.thomasheldt.de/1-wire-regensensor-einfach/">1-Wire Regensensor(en)</a>
Hallo Thomas,
interessantes Projekt. Hast du es schon fertig?