Forum: Mikrocontroller und Digitale Elektronik Poti an µC - wie Änderung feststellen?


von Hannes (Gast)


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!

von Horst (Gast)


Lesenswert?

Statt Poti 2 Taster /up/down für die Zeiteinstellung.

von Stephan K. (stephan_k)


Lesenswert?

Der ADC kann auch ueber Interrupt benutzt werden.

von spess53 (Gast)


Lesenswert?

Hi

-ADC mit einem Timer triggern
-Im ADC-Interrupt den Vergleich durchführen und bei Änderung ein Flag 
setzen.
-Flag in der Main abfragen

MfG Spess

von bitte löschen (Gast)


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.

von Helmut L. (helmi1)


Lesenswert?

Hannes schrieb:
> Die Potistellung verändert sich nur ganz selten, vielleicht ein Mal am
> Tag.

Was ist daran so schlimm den staendig abzufragen. Der uC langweilt sich 
doch so oder so den ganzen Tag.

von Hannes (Gast)


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.

von spess53 (Gast)


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

von Dussel (Gast)


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.

von Werner (Gast)


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.

von Wolfgang (Gast)


Lesenswert?

Dussel schrieb:
> Damit könntest du deutlich Energie sparen, zumindest im Verhältnis
> gesehen.
Die Pumpe möchte ich mal sehen, bei der die Leistungsaufnahme des 
Prozessors vergleichsweise eine Rolle spielt.

von Hannes (Gast)


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!

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.