Füllstand eines Wassertanks mit einem Mikrocontroller

Wie messe ich den Füllstand eines Wassertanks mit einem Mikrocontroller?

Dies ist keine Antwort wert, aber ein Freund von mir hat dies vor ein paar Jahren für ein Kunstprojekt getan. Jeder, der daran interessiert ist, würde ich Ihnen gerne vorstellen und ich bin mir sicher, dass er Ihnen gerne erklären würde, wie er es gemacht hat. Sein Projekt ist hier vorbei: unixarts.com/sealevel.html Dies kombinierte sowohl Pumpen als auch Sensoren und erforderte genügend Genauigkeit, um ohne zu viel Schräglauf auf und ab zu schleifen
Wenn der Mikrocontroller nicht mehr funktioniert, ist er unter Wasser.

Antworten (13)

Angenommen, Sie arbeiten hier auf der Erde (im Gegensatz zum Orbit), können Sie einen Schwimmersensor verwenden, den Sie mit dem Mikro messen. Die Frage ist: Müssen Sie den genauen Pegel kennen, oder brauchen Sie nur eine Art Trip, wenn es zu hoch/tief wird?

Zum Thema „Fahrt auf einem bestimmten Niveau“ können Sie solche Schalter bekommen - im Allgemeinen enthält der Schwimmer eine Art Schalter zur Lageerkennung. Wenn der Wasserstand niedriger ist, landet der Schwimmer auf seiner Seite und der Schalter ist „aus“, während ein Anheben des Pegels den Schwimmer aufrecht und damit „an“ zwingt. Diese werden häufig für Sumpfpumpen verwendet. Sie sind ziemlich zuverlässig und sehr einfach zu handhaben, obwohl Sie darauf achten müssen, sie richtig zu verankern, und Sie müssen sicher sein, dass dem Schwimmer nichts im Weg steht.

Wenn Sie das tatsächliche Niveau kennen müssen, haben Sie viele Möglichkeiten, aber es ist weniger einfach. Sie können so etwas wie einen Ultraschallsensor verwenden (Ultraschallstrahl, der von der Oberseite des Tanks nach unten geschossen wird, um vom Wasserspiegel zu reflektieren).

Diese Typen scheinen Füllstandsanzeiger für BIG-Tanks herzustellen, die aus einem Schwimmer und einem externen Gewicht bestehen, die miteinander verkabelt sind. Wenn der Schwimmer auf der Flüssigkeit auf und ab fährt, bewegt sich die externe Anzeige entsprechend. Sie könnten etwas Ähnliches bauen, mit nichts Komplizierterem als Fotozellen zum Lesen des Füllstands (wenn es sich um einen großen Tank handelt oder Sie viel Granularität wünschen, benötigen Sie viele Fotozellen).

Alternativ könnten Sie, wenn Sie die Idee des verkabelten Schwimmers nehmen, ein Leerlaufrad einsetzen, das sich bewegt, wenn sich das Kabel bewegt, und dann einen Encoder daran anbringen. Dies würde es Ihnen ermöglichen, den Füllstand mit ziemlich hoher Genauigkeit zu verfolgen.

Ich weiß, dass das bald erscheinende Buch „ Practical Arduino “ ein Wassertank-Tiefensensorprojekt enthält , das einen Differenzdruckwandler verwendet, um den Wasserdruck am Boden des Tanks zu messen und daraus zu berechnen, wie voll der Tank ist.

Schaltpläne finden Sie unter dem obigen Link, zusammen mit einem Link zum Quellcode auf github.

(Vollständige Offenlegung: Ich habe keine Verbindung zu dem Buch, habe aber einen der Autoren ein paar Mal in unseren lokalen Hackerspaces getroffen.)

Eine Methode, die ich mag, aber noch nicht ausprobiert habe, ist, zwei isolierte Platten in die Flüssigkeit zu legen. Keine Leitung, Elektrolyse, Kontamination....... Sie bilden die Platten einer Kappe. und werden in einer Art Oszillator verwendet (Wahl liegt bei Ihnen). Da Wasser ein gutes Dialektikum ist, hängt die Frequenz stark von der Wassermenge zwischen den Platten ab. Messen Sie die Frequenz, um die Tiefe zu erhalten.

Sie können möglicherweise ein ähnliches Ergebnis erzielen, indem Sie ein Wechselstromsignal anlegen und den Strom durch die Kappe messen.

Beachten Sie, dass dies stark von der Dialektrikkonstante der Flüssigkeit abhängt. Wenn ich mich nicht irre, wird die kapazitive Erfassung eher zur Erkennung von Anwesenheit / Abwesenheit als zum Füllstand verwendet. Es scheint jedoch, dass fast jede Methode, auf die ich gestoßen bin, vom spezifischen Gewicht abhängt. Tanks mit Flüssigkeiten unterschiedlicher Zusammensetzung sind schwer zu regulieren.
Die kapazitiven Füllstandssensoren funktionieren am besten beim Erfassen des Vorhandenseins oder Fehlens von Flüssigkeit. Um den Wasserstand abzulesen, laden/entladen Sie die Platten mit einem Festwiderstand und messen die Zeit. Wie oben erwähnt, kann das Hinzufügen von Verunreinigungen zum Wasser (wie Salz) eine drastische Änderung der Kapazität und damit Ihres Messwerts für einen festen Flüssigkeitsstand verursachen. Wenn die Flüssigkeit, die Sie messen, homogen ist, ist dies viel weniger ein Problem.
Ich habe einen Dynatron-Oszillator mit einer einfachen handelsüblichen SMD-Spule hergestellt, die mit isolierten Platten in Resonanz ging, wie es Russ postulierte. Die Sinuswelle wurde quadriert und jemand anderes zählte die Impulse in der Firmware, mit anderen Worten, was Russ sagte, funktioniert.

Mehr Details würden helfen, aber ich denke, die Ultraschallmethode ist konzeptionell sowieso wahrscheinlich die einfachste (daher die Notwendigkeit für mehr Details :-)). Ich habe einen Füllstandssensor für den Heizöltank in meinem Keller mit einem MaxSonar-Ultraschallwandler zusammengebaut. Ich wechsle zu einem Parallax-Ping-Sensor, sobald ich einen in die Finger bekomme. Die MaxSonar-Einheit hat sich als etwas schmerzhaft erwiesen; Es stellt sich heraus, dass es nur eine Auflösung von einem Zoll (2,54 cm) hat, was fast 7 Gallonen in meinem Tank entspricht. Ich habe die MaxSonar-Einheit in eine PVC-Kappe an der Oberseite des Tanks gesteckt, die nach unten zeigt (außerhalb der Reichweite der Flüssigkeit).

Eine Möglichkeit, dies zu tun, besteht darin, eine LED an der Unterseite des Tanks zu platzieren, die nach oben zeigt, und eine Fotodiode an der Oberseite des Tanks, der LED zugewandt. Die LED wird durch das Wasser im Tank gedämpft, Sie müssen experimentieren, um festzustellen, wie stark. Außerdem ist es am besten, eine Reihe von schnellen Messungen durchzuführen und sie zu mitteln, wenn Sie diese Methode verwenden.

scheint sehr fehleranfällig, Umgebungslicht, Schwappen usw.

Ich verwende einen billigen Bolzensensor aus dem örtlichen Baumarkt mit einem Fototransistor, um die Anzeige-LED zu erfassen. Wenn dieser an die Seite des Tanks geklebt wird, erkennt er, wenn der Füllstand über den Sensor steigt, und warnt uns vor einem Hochwasserzustand.

Es gibt überraschend viele Möglichkeiten, das Niveau zu überprüfen. Es gibt Sensoren, die HF verwenden, einen Impuls über einen Wellenleiter senden und die Reflexion von der Oberfläche der Flüssigkeit im Tank erkennen. Es gibt Ultraschall, Schwimmer, Bubbler-Rohre, Druckabgriffe ... Die verwendete Methode hängt von der Größe des Tanks, dem Inhalt, der Umgebung und anderen Faktoren ab.

Ich bin überrascht über all die komplizierten elektronischen Lösungen hier, ich würde ein einfaches Potentiometer verwenden. Die meisten Mikrocontroller haben einen einfachen analogen i/p.

 +V
-----
  |
  |
  /
  \
  /<----------> to analog i/p
  \
  |
  |
-----
 GND

Verwenden Sie einen Standardschwimmer für das Wassertankventil (möglicherweise ist bereits einer vorhanden). Das verbleibende Problem besteht darin, den Schwimmer mit dem Topf zu koppeln, um einen maximalen Schwung zu erzielen (Sie könnten auch einen Schiebertopf verwenden).

                  |-|
                  | |
                  |o| <--------Slider pot.
                  |||
                  |||
                   |
                   |  <--------Coupling.
                   |
   ____            |
  (float)----------o-----o  <--Anchor point of float.
   ----
Wie stellen Sie sicher, dass der Topf wieder in seine ursprüngliche Position zurückkehrt?
Das Gewicht des Schwimmers zieht ihn nach unten, wenn der Wasserstand sinkt ...
Da bin ich mir nicht so sicher. Es ist nicht so einfach, das richtige Gewicht des Schwimmers zu finden, so dass er in Gegenwart von Wasser schwimmt und den Topf in Abwesenheit von Wasser fallen lässt. Die meisten Töpfe haben eine ziemlich hohe Haftreibung. Ich denke, es ist jedoch möglich, wenn die richtige mechanische Einstellung gegeben ist.
Viele der längeren Schieberegler haben eine sehr geringe Reibung (werden in Mixern und DJ-Decks mit Fingerspitzensteuerung verwendet). Ich habe einen 4"-Schieber aus meiner Bits-Box verwendet und mit einem normalen Wassertank-Schwimmer getestet. Es funktionierte sogar auf einem kleineren Toilettenspülkasten-Schwimmer! Ich würde übrigens einen Festwiderstand in Reihe mit dem Topf verwenden, damit auch wenn es Kurzschlüsse in einer feuchten Umgebung wird es den Ausgang eines Controller-Ports nicht überschreiten (oder zu viel Strom von einer festen Vref ziehen).Ich habe in meinem Testaufbau einen 10k-Widerstand mit einem 10k-Pot verwendet.
Beim Testen habe ich einfach ein Stück gebogenen Draht verwendet, um den Schwimmerarm zu verriegeln. Beim Toilettenspülkasten besteht der Arm aus Kunststoff mit quadratischem Querschnitt, so dass es wirklich einfach wäre, ein kleines Loch zu bohren, um die Befestigung herzustellen.

Einfachster Ansatz

Legen Sie ein kleines Röhrchen in eine Ecke des Tanks, das im Durchmesser etwas größer ist als ein Tischtennisball.

Platzieren Sie eine Infrarot-LED auf einer Seite der Röhre und einen Fotowiderstand gegenüber der LED (indem Sie ein Loch in die Röhre bohren, wenn sie undurchsichtig ist, oder auf der Außenseite platzieren, wenn sie transparent ist). Heißkleben Sie die elektrischen Teile, um sie wasserdicht zu machen, und lassen Sie den Tischtennisball in das Rohr fallen.

Wenn der Wasserspiegel so weit steigt oder sinkt, dass der Tischtennisball den Infrarotstrahl bricht, wissen Sie, dass er den gewünschten Pegel erreicht hat. Dies funktioniert, wenn Sie nur eine diskrete (Ein/Aus) Pegelanzeige benötigen.

Dieses System wird auch in Paintball-Waffen verwendet, die Sie daran hindern sollen, Bälle zu zerhacken, indem sichergestellt wird, dass sich die gesamte Kugel in der Schusskammer befindet, bevor der elektronische Abzug den Zündmagneten aktiviert.

Es ist einfach, effektiv und erfordert wenig oder keine Kalibrierung.

Ein weiterer cleverer Ansatz: Nutzen Sie die größere Wärmeleitfähigkeit des Wassers (Flüssigkeit). Die Idee ist, einen Temperatursensor zu haben und den Unterschied seiner Selbsterwärmung zu messen, wenn er eingetaucht ist und wenn er sich in freier Luft befindet.

Dies wurde tatsächlich in CHCH Neuseeland gemacht, wo ich bin, aber ich habe es nicht gemacht, ich glaube, es ist ungefähr 20 Jahre alt. Es gab eine Reihe von vielen Thermistoren an der Außenseite des Tanks. Es funktioniert also gut, also bekommen Sie meine Stimme.

Eine andere Lösung (kein Wortspiel beabsichtigt);

Verwenden Sie ein Potentiometer wie oben vorgeschlagen. Der normale Rotationsbereich beträgt 270 Grad. Befestigen Sie einen Schwimmer mit einem Auslegerarm am Potentiometer. (Länge=1 Einheit)

Zwischen voll und leer bewegt sich der Auslegerarm um 90 Grad.

Der ADC auf einem PIC ist entweder 256 oder 1024 Schritte (ja, Null ist ein Schritt).

Ich werde 256 Schritte zur Verdeutlichung verwenden.

270 Grad = 256 ADC-Schritte. 270/90 = 3 (ein Drittel des Potentiometerbereichs)
255/3 = 85 ADC-Schritte

Programmieren Sie einen Code, um den 0-Grad-Punkt (Tank leer) zu markieren, wenn eine Taste gedrückt wird.

Dies speichert einen Offset-Punkt im PIC-EEPROM. Nun muss das Potentiometer nicht exakt auf Null stehen, da dieser Kalibrierpunkt eingestellt werden kann.

Berechnen Sie mithilfe von Trigometrie eine Nachschlagetabelle (Hinweis: PHP-Skript), die jedem Schritt des ADC entspricht.

Hinweis: Jeder ADC-Schritt entspricht 90/85 = 1,0588 Grad.

Ja, du hättest im Matheunterricht besser aufpassen sollen. damals blöde zeitverschwendung, heute unverzichtbar. Gehirn engagieren. Trigonometrie lernen. anderen beibringen.

Akronym: Der alte Araber trug einen schweren Heusack.

Die Hypotenuse ist die Länge des Galgenarms. Machen Sie es 1 Einheit lang. Die Nachschlagetabelle liefert dann den Prozentsatz der Tanktiefe. (natürlich mit 100 multiplizieren)

Bitte überprüfen Sie den folgenden Link:

http://www.edgefxkits.com/contactless-liquid-level-controller

Ich denke, es kann für Sie nützlich sein.