PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stündlich ein Relais für eine gewisse Zeit schalten



tooltime
20.06.2005, 22:32
Hallo an alle,

ich habe mir ein kleines Projekt in den Kopf gesetzt und könnte etwas Hilfe brauchen.

Ich benutze einen Atmel Mega 8, ein PCF 8583 Clock-IC, und ein Display.

In dem Display würde ich gerne umschaltbar die Uhrzeit oder die Umgebungstemperatur anzeigen. Das funktioniert auch schon perfekt. Jetzt kommt der Punkt an dem ich etwas hänge. Ich würde gerne ein Relais zu jeder vollen Stunde für eine einstellbare Zeit anziehen lassen. Die Zeit an dem das Relais angezogen ist, möchte ich einfach über eine Variable einstellen.

Wie bekomme ich es aber hin, dass das Relais zu jeder vollen Stunde anzieht und nach der eingestellten Zeit auch wieder abfällt?

Ich freue mich schon auf ein paar gute Tipps.


Vielen Dank schon mal.

avrflo
20.06.2005, 23:24
Hallo,
du speicherst ja die Minuten, die du von der RTC bekommst in eine Variable. Zur vollen Stunde ist diese Variable 00, musst also nur ne einfach if-Abfrage bauen. Geht natürlich mit jeder anderen Zeit auch also dann ungefähr so:


zeit= 'deine gewünschte Uhrzeit
if min=zeit then
.
.
.
end if

Dann das Relais wird dann über dann über den Timer nach ner bestimmten Zeit wieder ausgeschalten.
Gruß
Florian

tooltime
21.06.2005, 09:40
Hallo avrflo,

danke für deine schnelle Antwort.
Dieser Gedanke ist mir auch schon durch den Kopf gegangen. Ich habe ihn eigentlich nur verworfen, weil ich nicht ständig das Clock-IC und den Temperaturbaustein parallel abfragen will. Wenn im Display die Temperatur angezeigt wird, wollte ich eigentlich das Clock-IC nicht abfragen. Außerdem würde ich die Schaltung später auch gerne mit anderen Funktionen erweitern und wollte kein Risiko eingehen, dass gerade wenn die Minuten auf 00 sind, der Prozessor mit anderen Dingen beschäftigt ist.

Ich dachte eigentlich mehr daran den internen Alarm des 8583 zu nutzen. Habe nur noch nicht die richtige Idee wie das am besten zu lösen ist.

avrflo
21.06.2005, 10:07
Hallo,
dein Avr kann ja nebenher noch ne Menge anderer Sachen machen, die Minuten sind ja für exakt eine Minute auf 00 und abfragen musste die RTC ja sowieso um die Zeit zu aktualisieren. Es reicht ja wenn du die Zeit jede 10 oder 20 sec abfragst, braucht ja kaum Rechenleistung.
Gruß
Florian

tooltime
21.06.2005, 10:22
Das ist schon richtig, dass der AVR auch noch nebenher andere Sachen machen kann. Sollte ich aber z.B. ein pulsweitenmoduliertes Signal an einem Ausgang brauchen oder irgendeinen anderen Takt, denke ich wäre es nicht so gut wenn immer wieder zwischendurch der 8583 abgefragt wird.

Gruß
tooltime

RHS
21.06.2005, 19:10
Hallo Tooltime,

ich hatte ein ähnliches Problem und habe dafür einen Timer genutzt.
Allerdings habe ich den nicht auf eine Minute eingestellt, sondern auf
1/10 Sekunde.

Der Grund war, das ich neben dem Minuten-Takt auch noch einen
Sekunden-Takt brauchte und dafür keinen 2. Timer opfern wollte,
zumal später noch mehr periodische Ereignisse stattfinden sollen.

Im Timer-Interrupt wird nun für die Minute einfach ein Zähler hoch-
gezählt und dann die entsprechende Aktion ausgelöst.

Du könntest die Lösung auch dafür nutzen, um bspw. periodisch Deinen
Sensor abzufragen oder die LCD-Anzeige umzuschalten. Zähl dafür
einfach für jede gewünschte Zeiteinheit einen separaten Zähler hoch.

- Reinhard -

tooltime
28.06.2005, 23:40
Ich sehe schon das wird nicht so leicht.

Ich habe mir ein paar Gedanken gemacht und werde sie gleich ausprobieren, wenn meine neuen Mega 8 da sind.

Meine bisherige Idee ist:
- Am 8583 einen Alarm zur vollen Stunde auslösen
- Über den Interrupt den Alarm registrieren und automatisch die Alarmzeit um 1 Std. erhöhen
- Den Timer starten und für eine voreingestellte Zeit das Relais angezogen lassen

Das zur Theorie.
Wie ich das praktisch lösen soll muss ich mir erst erarbeiten, da meine Erfahrung mit Interrupts und Timer im Moment gleich Null sind.

Für gute Tips zur Umsetztung wäre ich weiterhin dankbar!!!

tooltime
22.08.2005, 16:36
Falls es noch jemand interessiert.
Das Programm läuft jetzt. O:)

PicNick
22.08.2005, 17:12
Brav.
Na, dann aber gleich los: Dokumentieren und in die Code-Schnipsel rein (Downloadbereich) :D
Nur so werden wir alle ein bißchen gescheiter :mrgreen: