C-Code Feuchtemessung

Gast #1299342
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
Angehängte Dateien:
Gast #1299386
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
#1299387
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
Gast #1299659
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??
Gast #1300366
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren