Poti an µC - wie Änderung feststellen?

Gast #2790687
Lesenswert?

Hallo zusammen.

Ich habe eine kleine Steuerung für meine Gartenpumpe auf Basis eines 
Atmega 48 aufgebaut. Also eine Art Zeitschaltuhr, die den ganzen Tag 
läuft. Mittels eines Potis kann man die Dauer in Sekunden einstellen, 
die die Pumpe läuft. Bisher funktioniert es so, dass die Poti-Stellung 
ständig gepollt wird und der Controller schaut, ob sich die 
Poti-Stellung verändert hat. D.h. in der Haupt-while-Schleife wird immer 
wieder eine ADC durchgeführt und das Ergebnis mit dem alten Wert 
verglichen.

Die Potistellung verändert sich nur ganz selten, vielleicht ein Mal am 
Tag. Gibt es da eine elegantere Möglichkeit, das zu programmieren?
Externe Interrupts sind mir nur für digitale Eingangssignale bekannt...


Danke!
Gast #2790704
Lesenswert?

Programmtechnisch könntest Du noch verbessern, dass Du den ADC im Free 
Running Modus betreibst und den Wert in der ADC-ISR überprüfst.

Ansonsten ging es nicht ohne zusätzliche Hardware. Du könntest einen 
Hochpass-Filter mit sehr niedriger Grenzfrequenz an das Poti hängen und 
dessen Ausgangssignal extrem verstärken und so und außerdem invertiert 
in zwei Schmitt-Trigger (üblicherweise mit open Collector) schicken, die 
Du über einen Pullup verODERst. Ein Low-Impuls würde dann eine Drehung 
signalisieren. Das ganze wäre nur schwer so zu implementieren, dass es 
weniger zusätzlichen Strom frisst, als ein ewig laufenden ADC, ist also 
eher theoretisch zu betrachten, als tatsächlich umzusetzen.
Gast #2790805
Lesenswert?

Danke für die Antworten! Ich werde das mal ausprobieren.

@Horst: 2 Taster wären sicher einfacher gewesen, ich wollte aber zu 
Lernzwecken mal den ADC verwenden.

@Helmut: Ich dachte, ich könnte wenn alles funktioniert mal ein paar 
Möglichkeiten zur Energieeinsparung ausprobieren, d.h. µC einschlafen 
lassen. Das geht ja nicht, wenn ständig AD-gewandelt wird.
Gast #2790820
Lesenswert?

Hi

>@Helmut: Ich dachte, ich könnte wenn alles funktioniert mal ein paar
>Möglichkeiten zur Energieeinsparung ausprobieren, d.h. µC einschlafen
>lassen. Das geht ja nicht, wenn ständig AD-gewandelt wird.

Dann rechne erst mal den Anteil des Controllers am Gesamtverbrauch aus. 
Der geht wahrscheinlich im Rauschen unter.

MfG Spess
Gast #2790824
Lesenswert?

Wie oben schon beschrieben, kannst du einen Timer verwenden. Wenn du den 
extern taktest, kannst du den Prozessor und Speicher komplett 
abschalten. Eigentlich müsste es ja reichen, wenn jede Sekunde gemessen 
wird. Damit könntest du deutlich Energie sparen, zumindest im Verhältnis 
gesehen. Eine Sekunde klingt zwar nach viel, aber für den Controller 
sind das Ewigkeiten.
Gast #2790826
Lesenswert?

Hannes schrieb:
> Mittels eines Potis kann man die Dauer in Sekunden einstellen,
> die die Pumpe läuft. Bisher funktioniert es so, dass die Poti-Stellung
> ständig gepollt wird und der Controller schaut, ob sich die
> Poti-Stellung verändert hat.

Wozu fragst du die Potistellung dauern ab, wenn die nur die 
Pumpenlaufzeit bestimmen soll? Mal abgesehen davon, dass es dem µC 
ziemlich egal ist, ob er das Poti abfragt, ohne daraus einen 
Informationsgewinn zu ziehen, würde es doch reichen, die Potistellung 
abzufragen, bevor die Pumpe angeschaltet wird. Falls man während des 
Pumpenlaufs noch eingreifen können soll, müßte man z.B. alle Sekunde mal 
nach der Potistellung gucken und den Abschaltzeitpunkt aus dem Vergleich 
mit der bisherigen Laufzeit bestimmen.
Gast #2790952
Lesenswert?

Werner schrieb:
> Wozu fragst du die Potistellung dauern ab, wenn die nur die
> Pumpenlaufzeit bestimmen soll?

Die eingestellte Pump-Dauer wird auf einem Display ausgegeben. Und wenn 
man am Poti dreht, soll man das sofort sehen und nicht erst, wenn die 
Pumpe anspringt.

Natürlich habt ihr recht, dass die Leistungsuafnahme des Controllers 
verschwindend gering ist im Vergleich zur Pumpe. Das ganze Projekt ist 
für mich auch zum Lernen da und ich möchte einfach die verschiedenen 
Funktionen des Controllers ausprobieren.

Danke, das mit dem Timer werde ich machen!

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