Wassestandsmelder

Hi, ich hoffe ihr könnt einem neuling helfen.

ausgangsituation:

ein wasserbehälter (pool) soll via ips automatisch den wasserstand in einem bstimmten bereich halten.

als (sensor-) sender hab ich ein FS20 S4M 2/4-Kanal-Sendemodul gedacht.
als empfänger ein FS20 SM4 Empfangsmodul.

von der wasserleitung geht es über ein 230V magnetventil (aus alter waschmaschine) in den pool.
die "wasser-"hardware aus FS20-Empfängerund und ventil hab ich schon gebaut und gestestet. der direkt betrieb mit der fernbedienung klappt auch wunderbar.

das script zur steuerung hab ich auch schon geschrieben. funktioniert im testbetrieb mit einem glas wasser auch schon ganz gut.

herkömmliche „wassersensoren“ erzeugen ein „dauersignal“. der sender will aber nur impulse.

da ich mit zwei sensoren arbeiten will (leer und voll) um einen füllbereich abzudecken, brauch ich eigentlich bei jedem sensor zwei signale.

sensor 1 (voll):
der sensor soll ein „false“ senden wenn er trocken ist und ein „true“ wenn er im wasser ist.

für sensor 2 (leer)gilt das gleiche.

durch diese doppelte kontrolle sind wasserschwankungen durch schwimmen weitgehend ignorierbar

somit kann ich mir vier zustände anzeigen lassen:
leer, wird gefüllt
normal, wird gefüllt
normal, ventil zu
voll, ventil zu

das problem:

was für eine schaltung muss ich mir zwischen sensor und sender bauen um aus dem dauersignal meine beiden impulse zu generieren?

zum verständnis kommt hier noch mein script:


<?
/*
*******************************
 IP-SYNCOM Event Scripting
*******************************
*/

//File: pool.ips.php

// Varibalen

$becken_voll = GetValueBoolean ("sender.pool.Pool_Sensor_1.Status");
$becken_leer = GetValueBoolean ("sender.pool.Pool_Sensor_2.Status");
$ventil      = GetValueBoolean ("Empfänger.Pool.Pool_Switch_1.Status");



// Wasser Hoch

if (("$becken_voll" == 1)                                     // Status "Becken Voll"
      &&
    ("$becken_leer" == 1))                                    //Status "Becken Leer"
{
    IPS_RunScript ("Empfänger.Pool.Pool_Switch_1_OFF");       //Magnetventil Zu

    echo "Wasserstand Hoch<br><br>Magnetventil zu";           // Textausgabe
}


// Wasser Niedrig

elseif (("$becken_voll" == 0)                                 // Status "Becken Voll"
          &&
        ("$becken_leer" == 0))                                //Status "Becken Leer"
{
    IPS_RunScript ("Empfänger.Pool.Pool_Switch_1_ON");        //Magnetventil auf

    echo "Wasserstand Niedrig<br><br>Magnetventil Offen";     // Textausgabe
     echo "<br> Füllung läuft!";                              // Textausgabe
}


// Füllen

elseif (("$becken_voll" == 0)                                 // Status "Becken Voll"
          &&
        ("$becken_leer" == 1)                                 //Status "Becken Leer"
          &&
        ("$ventil" == 1))                                     //Magnetventil Offen
{
        echo "Wasserstand Normal<br><br>Magnetventil Offen";  // Textausgabe
        echo "<br> Füllung läuft!";                           // Textausgabe
}

// Wasserstand Normal

elseif (("$becken_voll" == 0)                                 // Status "Becken Voll"
          &&
        ("$becken_leer" == 1)
          &&
        ("$ventil" == 0))                                     //Status "Becken Leer"
{
    IPS_RunScript ("Empfänger.Pool.Pool_Switch_1_OFF");       //Magnetventil Zu

    echo "Wasserstand Normal<br><br>Magnetventil zu";         // Textausgabe
}


Else
{
  IPS_RunScript ("Empfänger.Pool.Pool_Switch_1_OFF");         // Ventil ZU

  Echo " SENSORFEHLER !!!";                                         // Fehlermeldung

}
?>

ich hoffe ihr könnt mir helfen, oder mir natürlich auch andere möglichkeiten zeigen.
ich bedanke mich auf jedefall schon mal im voraus dafür.

dirk

Hallo flyship,

vor einem ähnlichen Problem stand ich auch schon. Ich habe mich dann für den FS20 SPIR (ELV) entschieden. Leider gibt es diesen Sender nur als Bausatz (SMD+FlatPack!) und man braucht einiges an SMD Löterfahrung.

Alternativ kannst du dir noch den Kontaktmelder HMS100TFK ansehen. Dieser Melder ist für „normale“ Eingangssignale vorgesehen.

Ich hoffe das hilft dir erst einmal weiter…

Schöne Grüße aus dem Harz

Keule

Eine weitere Möglichkeit wäre der Umbau eines Standard ELV WS2000 Temperatursensors. Da die Temperatur über einen veränderlichen Widerstand gemessen wird, könnte man diesen durch einen analogen Schwimmer ersetzen (wie im Tank) der über seinen je nach Füllstand unterschiedlichen Widerstand den Füllstand quasi als Temperatur ausgibt. Man kann sich ja dann eine Wertetabelle ablegen, welche „Temperatur“ welchem Füllstand entspricht.
So hat man schon mal einen Sonnensensor gebastelt (http://www.pc-wetterstation.de/wetter/solarsensor.html)

Tommi

Hallo,

es gibt zwei Probleme:

  1. wie oben schon erwähnt, benötigen die FS20-Sender Impulse – dies kann man mit einer Elektronik
    oder einem einfachen RC-Glied realisieren. Dann hat man das nächste Problem:
  2. geht ein Funksignal „verloren“, weiß das System nicht mehr den Schaltzustand – es muß also öfters
    wiederholt werden. Wieder eine kleine Elektronik mit einem NE555? o.ä.

Hier die schnelle, etwas teuere „Lösung für Helden“ mir dem HMS 100T (ähnlich der Lösung von Tommi):
Den Fühler gegen zwei z.B. 10K Widerstände ersetzen, die parallel über die Schwimmschalter
(Conrad, ab €10,-) geschaltet werden. Man bekommt also verschiedene Temperatur-Werte für die
einzelnen Schaltzustande, die alle 5-6 Minuten wiederholt werden

Ich habe mal eben eine „krumme Kurve“ aufgenommen (Widerstand geändert und Temperatur abgelesen).

Viel Spaß beim Basteln

MST

PS: Vielleicht hat jemand noch weitere Ideen, wie man den HMS 100T „missbrauchen“ kann…

Danke schon mal für die bisherigen lösungen, werd mal drüber schlafen und ein wenig „basteln“.

wenn ich ne lösung hab werd ich die natürlich hier veröffentlichen.

bin natürlich weiteren vorschägen nicht abgeneigt.

dirk

Der Hersteller von ezcontrol hat auch einen Funk-Füllstandssensor angekündigt. (EZcontrol Heimautomatisierung Hausautomatisierung Haussteuerung)

Tommi

hi, hab nun genug drüber geschlafen und gebastelt. nun hab ich ne lösung gefunden. :smiley:

dank fehlkauf von zwei fs20-uts einheiten (war der meinung die senden die temperatur und nicht nur nen impuls bei über-unterschreiten von temperaturgrenzwerten).

irgenwann nachts, wärend dem schlafen, kam mir der gedanke wie die uts eigentlich die temperatur messen.
mittels zeitmessung! je wärmer, umso weniger zeit braucht ein kondesator zum laden. also, je kleiner der widerstand.

ergo, den temp-sensor wieder ausgebaut und einfach zwei drähte angelötet.
diese zum testen in ein becher mit dem poolwasser getaucht, und siehe da es kam ein True signal.

da der sensor auf zwei kanälen senden kann, hab ich beiden kanälen dieselbe adresse zugeteilt. nur mit unteschiedlichen kriterien.
bei mir sendet der erste kanal ein true wenn er im wasser ist (temperatur über -38°) und der zweite ein false wenn er trocken ist (temperatur unter -38°).
dadurch wird mein script viel übersichtlicher, da ich klare meldungen in der variablen hab ohne sie extra überprüfen oder zu reseten zu müssen!
(wie es bei meinem regensensor der fall ist)

werd das ganze in den nächsten tagen montieren und nochmal testen. wenn es klappt werd ich das ergebnis hier bekanntgeben.

vielen dank nochmal für die „starthilfe“, die hinweise mit den anderen temperatursensoren haben mich auf den weg gebracht. aber meine lösung behagt mir mehr. da es keine mechanischen teile gibt, die von meiner nichte (9,5) oder dem saugroboter beschädigt werden können.

da die sensore mit 3V= arbeiten, sehen ich auch keinerlei gefahr für die nutzer des beckens.

bis zu nächsten frage,

dirk