Forum: Mikrocontroller und Digitale Elektronik C-Code Feuchtemessung


von Bastler (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich habe soeben mal versucht mein erstes C Programm zusammenzuflicken.
Es soll hier ein Feuchtemesser mit einem Betauungssensor realisiert
werden. Als Controller soll der ATtiny 24V dienen. Als Taktfrequenz
hätte ich 1 MHz vorgesehen.
Dieses Programm bringt zwar keinen Fehler allerdings macht es auf meiner
Platine nicht wirklich das Richtige. Je nach relativer Feuchte (die über
den ADC0 eingelesen wird) soll ein rotes, gelbes oder grünes LED
leuchten.
Habe einiges im Datenblatt gesehen. Allerdings erscheinen mir sämtliche
Beispielprogramme viel zu kompliziert.
Die Unterfunktion blinken soll die LEDs zum blinken bringen. Ich weiss
nicht ob man das so lösen kann!
Bin für jede Anregung sehr dankbar! Wenn weitere Informationen nötig
sind gebe ich sie gerne.

Gruß
Thomas

von jupp (Gast)


Lesenswert?

hast du mal gemessen was "ein betauungssensor" ausspuckt?

von Axel (Gast)


Lesenswert?

Das mit dem Blinken geht so nicht. Mach Dir im Timerinterrupt eine 
Veriable, welche dort immer zwischen 1 und 0 wechselt.
Mit dieser wird das Verknüpfungsergebniss und verknüpft.

Lass das Blinken komplett weg, was mach dann der Ananlogeingang?

Axel

von Matthias D. (marvin42)


Lesenswert?

Tip: Fehlersuche immer modular machen, also lass erst mal das blinken 
weg und trenne den Feuchtesensor vom Atmel.

Ich würde vorschlagen, dass du zunächst mal eine kontrollierte Spannung 
an deinen AD0 hängst und diese langsam variierst, je nach Spannung 
sollten dann deine LEDs aufleuchten.

Deine Routine blinken() wird, so wie du sie geschrieben hast, nie wieder 
verlassen := Endlosschleife. Zumal du immer nur einen Impuls auf PA1 
gibst - ohne deinen Schaltplan zu kennen, kann ich da nicht weiter 
helfen.

Wenn deine LEDs dauernd, also wirklich immer blinken sollen, dann würde 
ich eine Interruptroutine zu Hilfe nehmen, die mit 4 Hz läuft und aus 
einer globalen Variablen übernimmt, ob die rote/gelbe/grüne LED blinken 
soll - aber zunächst würde ich das weglassen.

Ich nehme mal an, du hast einfach 3 LEDs an den Ports PA1,PA2 und PA3 
hängen, oder ? Wenn du in der Hauptschleife eine Messung machst, dann 
schaltest du je nach Messwert die passende LED per Bitmuster ein, also 
0xFE, 0xFD oder 0xFB, dann einen Delay von250 ms und dann von vorne..

Übrigens: es ist nicht üblich eine Funktion wie blinken so aufzurifen 
wie du das tust: "void blinken (void)", sondern einfach nur "blinken()"

matthias

von Bastler (Gast)


Lesenswert?

Wegen des Betauungssensors war ich mir nie so ganz sicher. Klar wäre mir 
ein Feuchtesensor lieber gewesen. Allerdings ist bei einem kapazitivem 
Sensor die AUswertung schwieriger. Dieser Betauungssensor SHS A2 von 
Hygrosens Instruments ist ja quasi ein resistiver Sensor. Mir wurde auch 
gesagt er funktioniert mit 0,8 V Gleichspannung auch. Also theoretisch 
müßte ich dann über einen Spannungsteiler eine Spannung für den ADC 
abgreifen können. Bist du nicht der Meinung dass des funktioniert??

von Bastler (Gast)


Angehängte Dateien:

Lesenswert?

Hier liefere ich noch meinen Stromlaufplan nach. Der Sensor R7 ist ein 
PTC. Leider habe ich noch nicht das passende Bauteil in der Eagle 
Bibliothek gefunden. R7 ist praktisch der verwendete Betauungssensor SHS 
A2 von Hygrosens Instruments.
Benötige ich parallel zum Resettaster S3 eigentlich noch einen 
Kondensator? Habe da inzwischen von 10µ bis 47µ viel gesehen. Taster S2 
der ursprünglich zum Ein- bzw. Ausschalten gedacht war wird nicht 
verwendet. Ich möchte das über einen Schalter machen, da der Controller 
ja sonst immer arbeiten müßte und Strom von meiner Batterie zieht.
Wie sorge ich für eine Batterieüberwachung?? Spannungsteiler R8 und R9 
war ursprünglich dafür vorgesehen. LED 4 hätte dann bei einer bestimmten 
Spannung (z.B. 2,5 V) blinken sollen. Wie kann man sowas am besten 
machen?

Gruß
Th.

von Ralf S. (spacedog) Benutzerseite


Lesenswert?

Wozu ein µC? Mit einem Vierfach-Komparator (so im Stile von LM139) und 
etwas Hühnerfutter wäre die Aufgabe auch gelöst.

von Bastler (Gast)


Lesenswert?

Es war eine Vorgabe dass ein µC verwendet wird. Evt. soll auch mal ein 
Lämpchen blinken und das kann man mit einem µC besser lösen.

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.