PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerfrage- Zeitsteuerung



Bernd111
25.03.2005, 10:51
Hallo zusammen,

hab da ein kleines Problem mit einer Pumpensteuerung.
Bin in Sachen Basic und programmieren ein blutiger Anfänger aber vieleicht hat jemand schon so was ähnliches mal gemacht
und könnt sein Programm oder seine Codeschnipsel mal posten.
Die Anforderung wär alle 25 Minuten die Pumpe für 5 Minuten anschalten und nach insgesamt 15 mal Pumpen das System komplett abschalten(eventuell ein Temperatur-Sensor dazu, der bei Zustand an(über 50Grad) ,dann auch alles abschaltet).
Hab übrigens den C-Control Basic von Conrad mit Starterboard.
Wäre sehr dankbar wenn jemand so was ähnliches schon hat oder mir ein paar Tipps geben könnte( z.B. was ist die maximale Zahl beim Pause-Befehl).Besten Dank schon mal im voraus
Grüsse,
Bernd

Dirk
25.03.2005, 21:02
Hallo Bernd111,

wenn Du sehr seltene Aktionen starten willst (alle 25 Minuten), dann solltest Du das mit der internen Uhr und nicht mit Pausen machen.
Also: MINUTE abfragen und in einer Variable speichern, diese Variable jede Minute um 1 hochzählen und bei 25 die Aktion (Pumpe an) ausführen.

Gruß Dirk

ACU
25.03.2005, 23:37
Hallo!
Ich mache mir Morgen mal Gedanken über dein Problem und schreibe dir ein
Beispielprogramm.
Jetzt ist es zu spät zum denken ;).

MfG ACU

BlueNature
26.03.2005, 03:37
Hallo Bernd!

Der maximale Wert eines Pause-Befehls ist der positive Wert eines Integers. Also ca. 32500. Wegen der Steuerung einer Pumpe mit Temparatursensor und Intervallbetrieb legst du dir zuerst einmal den Define-Teil im Programm fest.

Define Pumpe As Port[1]
Define TasteStart As Port[2]
Define LED As Port[3]
Define Temparatur As AD[1]
Define Wiederholung As Byte[1]
Define Modus As Byte[2]

Dann weiß deine IDE wo welche Ports mit welchem Namen stehen. Jetzt initialisierst du die Ausgänge damit die definiert sind weils einfach schöner aussieht. Dann kommt das eigentliche Hauptprogramm

#StopModus
Pumpe = Off
Wiederholung = 0
Modus = 2
Minute = 0
Second = 0
LED = Off
If TasteStart = On Then Goto StopModus
Pumpe = On

Die Taste Start ist jetzt einfach mal ein Schalter der von Port 2 gegen Masse geschaltet wird und zum Starten des Ablaufs dient. Off wäre betätigt und On wäre nicht betätigt. Ist eben so weil er gegen Masse geschaltet ist und intern über einen Pull-Up gegen +5V geschaltet wird. Nun zum eigentlichen Programm.

#ArbeitsModus
If Temparatur > 100 Then GoTo StopModus
If Wiederholung >= 15 Then GoTo StopModus
If Modus = 1 And Minute >= 25 Then GoTo PauseEnde
If Modus = 2 And Minute >= 5 Then GoTo PumpenEnde
If Second Mod 2 = 1 Then LED = On Else LED = Off
GoTo ArbeitsModus

#PauseEnde
Pumpe = On
Modus = 2
Minute = 0
GoTo ArbeitsModus

#PumpenEnde
Pumpe = Off
Modus = 1
Minute = 0
Wiederholung = Wiederholung + 1
GoTo ArbeitsModus

Ich habe einfach die interne Echtzeituhr bisschen verbogen als Zeitmessung. Das bietet sich an weil es weniger als 60 Minuten sind pro Intervall. Diese Zeit kann man direkt mit dem laden der Zeit-Variablen beschreiben um normalerweise die Uhr zu stellen. So kann man eben die Zeit messen ohen die C-Control anzuhalten. Die Echtzeituhr ist dann eben ausser Betrieb um eine Uhrzeit mitlaufen zu lassen.

Mit Modus-Variablen merke ich mir einfach die aktuelle Betriebsart als Zahl das mein Hauptprogramm nacher weiß was eben für eine Betriebsart war. Pumpen oder Pause eben.

Den Wert des Temparaturfühlers mußt du dir eben selbst heraussuchen. Kommt auf deinen Fühler an den du angeschlossen hast.

Als Information über den Zustand des Systems blinkt eine LED wenn das Programm aktiv ist in Sekundentakt.

Grüße Wolfgang

Bernd111
26.03.2005, 09:15
Hallo

Vielen Dank für die schnelle Hilfe.werd mich mal gleich ranmachen das ganze
umzusetzen und vorallem in das Programm reindenken.

Grüsse Bernd

ACU
26.03.2005, 11:16
Oh da war mal wieder einer schneller.
Ich hätte es bischen anders gemacht, aber so gehts natürlich auch.

MfG ACU

Bernd111
28.03.2005, 15:46
Funktioniert leider noch nicht mit dem beschriebenen Programm
Ich glaub so weit ich es jetzt schon durchschau muß da wohl noch
irgendwo " Pumpe = On " rein?
Nur an welcher Stelle ist es ideal ?

Gruß Bernd

BlueNature
28.03.2005, 21:04
Funktioniert leider noch nicht mit dem beschriebenen Programm
Ich glaub so weit ich es jetzt schon durchschau muß da wohl noch
irgendwo " Pumpe = On " rein?
Nur an welcher Stelle ist es ideal ?

Gruß Bernd

Hast recht, da fehlt noch was. Dachte das findest du selbst heraus :-)

Das habe ich so schnell nur ohne Test geschrieben für dich das du einen Anhaltspunkt hast. Bei #PauseEnde muß natürlich noch Pumpe = On rein. Sinst geht die nie an.

Grüße Wolfgang

Bernd111
29.03.2005, 10:36
Hab noch ein "Pumpe = Off"
bei PumpenEnde eingefügt
Jetzt läuft es
Grüsse Bernd
:D

BlueNature
29.03.2005, 10:55
Gut, dann war die Mühe nicht umsonst. Ich hab der Ordnung halber gleich mal das fehlende Teil in den Code eingefügt und fett markiert.

Grüße Wolfgang

hecktor
05.09.2005, 08:27
wenn du pause oder wait anwendest werden alle anderen befehle solange eingefroren und nichts weiter mehr bearbeitet deshalb sind befehle wie pause oder wait in der maschienensprache Verboten

mojo777
29.11.2005, 23:06
Hallo,
freue mich gerade darüber, dass die meisten meiner anlaufprobleme schon andere hatten und hier im forum behandelt haben. ;-)
Ich hätte aber dennoch noch eine Frage zur hier besprochenen Zeitsteuerung:
Ich plane eine Zeituhr mit temperaturabhängiger steuerung mit einem avr (ATmega 16) und einem motor zu realisieren.
Jetzt wurde hier an eiem beispiel schon eine gute steuerung mit "relativen" minutenwerten angeboten. Aber ich brauche noch eine unabhängige tageszeit und vll. sogar noch das datum.
Unser prof hat mal kurz erwähnt, dass die neuen avrs eine art zusatzcontroller schon implementiert haben, der es erlaubt zeitpunkte zu setzen die dann später (zum gesetzten zeitpunkt) als interrupt erscheinen.

Der muss dann aber auch unabhängig vom netz laufen zählen können. also wenn der stecker gezogen wird noch eine zeit lang halten. so ca 30 min oder so würden reichen.

Hat jemand schon erfahrung damit?

würde mich sehr über ideen und ratschläge freuen!

mfg
mojo

BlueNature
30.11.2005, 00:56
Servus mojo777,

Wozu immer die tollen Features irgend welcher neueren µC-Serien verwenden wenn man es auch mit etwas eigenem Aufwand mit einem "billigeren" und älteren µC realisieren kann? Denke das permanente Warten auf Updates und Neuerungen ist nicht der richtige Weg. Selber entwickeln auf Stand der Technik und Performance-Grenze jedoch der richtige.

MfG Wolfgang

mojo777
30.11.2005, 07:31
hi blueNature,
also das ist mir wahrlich egal wie ich das realisiere.
aber ich bin noch ein blutiger neuling auf dem gebiet und weiss nicht was für funktionen mit ics bereits realisiert wurden. gut, man kann bestimmt sagen" alles was du willst", die technik gibts ja nicht erst seit gestern...
ok.

kannst du mir ein paar empfehlen?
wie schimpfen sich die dinger konkret?


vielen dank!

mojo777
03.12.2005, 11:28
brauche immernoch tipps. bitte helft. :-(