Forum: Projekte & Code Kapazitive Tankanzeige mit einem STM32F030F4P6


von Markus S. (acepilot)



Lesenswert?

Hallo zusammen,

nachdem ich schon viel in diesem Forum gelesen und auch einige 
hilfreiche Tips bekommen habe möchte ich jetzt die Chance nutzen etwas 
zurück zu geben und mein erstelltes Projekt mit Euch teilen. Vielleicht 
hilft der ein oder andere Codeschnippsel sogar jemanden. Nachbauten des 
ganzen sind natürlich auch immer willkommen ;o).

Das ganze Projekt sollte eine Tankanzeige sowohl für Wasser als auch 
Heizöltanks werden. Visualisiert wird das ganze auf einem Nokia Display. 
Entwickelt und programmiert wurde das ganze mit der CoIDE von Coocox. 
Unter zu Hilfe nahme eines NE555 wird eine Frequenz erzeugt die abhängig 
von der Kapazität des Sensors ist. Die so auftretenden Frequenzen werden 
mit dem Mikrocontroller gemesssen und in einen Füllstand umgerechnet. 
Zum testen des ganzen habe ich einfach eine 40mc lange Doppelader 
genommen, die ich am Ende mittels Heißkleber vor der Flüssigkeit 
isoliert habe.

An dem Pinheader Button kann, wie der Name schon sagt ein Knopf 
angeschlossen werden. Mit diesem kann über einen langen Knopfdruck 
(>2000ms) in das Kalibrationsmenü gewechselt werden. Dort können für den 
leeren und vollen Tank die Freqeunzen ermittelt und im Flash gespeichert 
werden. Auch die Tankgröße kann dort eingestellt werden. Mit diesen 
Informationen wird dann bei der Messung der Füllstand bestimmt und die 
Restmenge der Flüssigkeit auf dem Display ausgegeben.

Die Platine für die Tankanzeige wurde nach Fertigstellung von Elecrow 
gefertigt. Bei der ersten Inbetriebnahme habe ich dann noch einen Fehler 
gefunden. Warum auch immer habe ich R1 (Boot0) an VCC und nicht GND 
gehangen. So lief der Controller natürlich nicht mit dem Programm vom 
Flash los. Das ganze wurde mit einer kleinen Drahtbrücke auf der Platine 
repariert. Den Fehler in dem angehängten Plan sowie in den Boardfiles 
habe ich schon korrigiert. Auch sind meine 5Volt Spannungsregler im DPAK 
Gehäuse noch nicht gekommen, aus diesem Grund ist dort noch einer im 
TO220 Gehäuse verbaut.

Jetzt muss ich  mich die Tage nur noch daran machen ein kleines Gehäuse 
für das Projekt zu fertigen.

Kritik, Anregungen und Verbesserungsvorschläge sind sehr gerne 
willkommen.

Gruß,
Markus

von Karll (Gast)


Lesenswert?

Über die Kapazitive Messung wurde schon viel geschrieben.
Es scheint ein Problem mit dem diffundieren von Wasser in die
Isolation zu geben.
Da muss man mit den verwendeten Materialien höllisch aufpassen.

Siehe:
Beitrag "[V] Bausatz für Giess-o-mat Sensor"

von Max M. (max_muster)


Lesenswert?

Die Schaltung hat meines Erachtens leider den
Nachteil, dass der 555 bei Temperaturänderungen
driftet. Ich habe mal so etwas ähnliches gebaut
und einen 556 (doppelter Timer) genommen. Der zweite
Timer lief mit einer festen Frequenz. In der Software
wurde die Kapazitätsänderung zur Driftkompensation
benutzt.

Max

von Markus S. (acepilot)


Lesenswert?

An einen möglichen Temperaturdrift habe ich noch garnicht gedacht. Das 
werde ich auf jeden Fall mal untersuchen. In diesem Fall gebe ich dir 
natürlich recht ein zweiter Timer mit fester Freqeunz um darüber den 
Drift kompensieren zu können ist natürlich eine gute Möglichkeit. Mal 
schauen ob ich dem ganzen nochmal ein Facelift verpasse oder mit dem 
auftretendem Drift leben kann.

Unter der Maßgabe der Möglichkeit den STM32F030F4P6 auch als 
STM32F031F6P6 zu verwenden wäre dann über den TIM2 ein weiterer external 
Counter verfügbar um so eine Kompensation zu betreiben.

von Falk B. (falk)


Lesenswert?

Man könnte auch einfach den NE555 weglassen und den Oszillator per uC 
aufbauen. Z.B. könnte man mittels Meßbrücke und Geberfrequenz vom uC die 
Messung machen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.