Forum: Mikrocontroller und Digitale Elektronik MC bleibt stehen (Bewässerungssteuerung)


von Wolfgang (Gast)


Lesenswert?

Hallo,

ich habe ein Problem mit meiner Bewässerungssteuerung. Alles läuft wie 
programmiert, z.B. die Balkonkästen vier mal am Tag eine Minute lang, 
jedoch zu unterschiedlichen Zeiten bleibt der MC alle paar Tage mal 
stehen, leider mit aktiviertem Magnetventil.

Hier ist meine verwendete Zeitschleife:

RELAIS44:  CLR P1.0    ;Relais 4 einschalten
    MOV DPTR,#60000          ;Zeitverzögerung
    LCALL LTIME          ;Sprung zur Zeitnahme
    SETB P1.0    ;Realais aus
    JMP START    ;Neu starten

;----------------------------------------------------------------------- 
----
; Subroutine : Zeitverzögerung gem. Wert in DPTR ( 1000 entspricht 1 
Sec.)
;----------------------------------------------------------------------- 
----

LTIME:        MOV   A,DPL
              ORL   A,DPH
              JZ    SRET2
              SETB  C
              MOV   A,DPL
              SUBB  A,#0
              MOV   DPL,A
              MOV   A,DPH
              SUBB  A,#0
              MOV   DPH,A
              LCALL TIME0
              SJMP  LTIME
SRET2:        RET
TIME0:        MOV   DPLSAV,#170      ;(n1+1)*5 microsec = 985 micros
              NOP
TIME0L:       NOP
              NOP
              NOP
              DJNZ  DPLSAV,TIME0L
              RET

              END

Hat jemand eine Erklärung?


Gruß

Wolfgang

von Oliver (Gast)


Lesenswert?

Hallo Wolfgang,

wie rufst Du die Routine "RELAIS44" auf?

Hilfreich wäre es auch, wenn der Rest des Codes zu sehen wäre. Die 
Fehlerursache ist nicht immer dort, wo der Fehler auftritt.


Grüße
Oliver

von Manfred Glahe (Gast)


Lesenswert?

Hallo Wolfgang,
ersetze die Magnetventile mal durch Lämpchen zur Kontrolle.
Es ist möglich, daß daß Anziehen der Magnetventile Deinen mP außer Tritt 
bringt.
Wenn daß so ist, Stromversorgung abblocken und Kabelführung zu den 
Ventilen ändern.
MfG  manfred Glahe

von Wolfgang (Gast)


Lesenswert?

Danke,

für die ersten Hinweise.

Die Routine wird durch Prüfen, ob ein Port negativ ist aufgerufen. Den 
Code habe ich nicht im Büro, aber sehr simpel. Beim "Hängen bleiben" war 
der steuernde Port aber wieder positiv.

Die Relais (f. Magnetventile) werden über Schalttransistoren angesteuert 
und sind über 10 Meter entfernt, daher sehe ich keine 
Beeinflussungsmöglichkeit.

Das der MC stehen bleibt, erkenne ich an einer LED die jeweils über 
"Start" ein- und ausgeschaltet wird. Im Falle der aktiven Bewässerung 
bleibt die Kontroll LED während der Warteschleife an.

Gruß

Wolfgang

von Oliver (Gast)


Lesenswert?

Hallo Wolfgang,

mit "wie rufst Du die Routine RELAIS44 auf" hatte ich etwas anderes im 
Sinn. Wird sie durch einen Call augerufen? Falls ja, dann den JMP START 
durch RET ersetzen. Irgendwie habe ich das Gefühl, es ereignet sich ein 
schleichender Stack Overflow.

Grüße
Oliver

von Steffen Burr (Gast)


Lesenswert?

Kleine Zwischenfrage,

woher bekommt man denn Magnetventile?

Viele Grüße
Steffen

von Henning (Gast)


Lesenswert?

zu steffens komentar:
zB. für eine fussbodenheizung?
ich hätt auch interesse.

hennning

von Wolfgang (Gast)


Lesenswert?

Hallo,

für eine Bewässerung reichen Universalventile aus Waschmaschinen (z.B. 
Einzelventile bei Conrad ca. 6 €) in Ergänzung Gardena 
Bewässerungstechnik (Düsen, Tropfer, Versenkregner, etc.) im Baumarkt 
(z.B. OBI).

Für eine Fußbodenheizung Messingventile (z.B. bei Conrad über 100 €).

Es löst zwar nicht mein Programmproblem, aber immerhin.....

Gruß

Wolfgang

von Rolf F. (Gast)


Lesenswert?

Du kannst ja einfach einen zweiten MC nehmen und damit den ersten 
reseten, wenn der eine vorgegebene Zeit lang einen Port nicht ändert 
oder den Watchdog dafür nehmen.

Alternativ kann man 3 MC mit 3 verschidenen Programmen nehmen, die das 
Gleiche bewirken sollen und mit einer 2-von-3-Schaltung demokratisch und 
fehlertolerant abstimmen lassen ;-)

von edi (Gast)


Lesenswert?

hi

google mal:  TC1232

dieser 'wachhund' beisst in den 'reset' falls dein uC stehen bleibt.

ed

von Wolfgang (Gast)


Lesenswert?

Hallo,

danke für die Hinweise.

Aber.....

Ich arbeite mit AT 89C4051 MC nach meiner Kenntnis ohne Watchdog 
Funktion.

Weiteres Problem, die Tropfbewässerung (Balkonkästen)arbeitet 6 mal am 
Tag eine Minute. Die Rieseler bei Bedarf (Feuchtefühler) 1 mal 30 Min. 
am Tag.

Wenn ich 30 Min. überwache sind die Kästen schon abgesoffen bevor der 
Hund anschlägt.

Ich würde lieber den "zeitweisen" Fehler finden!

Gruß

Wolfgang

von edi (Gast)


Lesenswert?

hi

wieviel platz hast du deinem STACK gegoennt...und wo liegt sein anfang?

ed

von Manfred Glahe (Gast)


Lesenswert?

Hallo Wolfgang,

"Die Relais (f. Magnetventile) werden über Schalttransistoren 
angesteuert und
                  sind über 10 Meter entfernt, daher sehe ich keine 
Beeinflussungsmöglichkeit."

Solange eine Kabelverbindung besteht welche nicht galvanisch getrennt 
ist spielt die Entfernung keine große Rolle. Waschmaschinen Ventile sind 
in der Regel 220V AC gesteuert. Wie machst Du das genau? Ich verwende 
für eine Wasserwerksteuerung Halbleiterrelais (Solid State)das bereitet 
keine Probleme da die optisch isoliert sind und Nullpunkt geschaltet 
werden.
Was macht der µP wenn er die Ventile nicht schalten muß? Tritt der 
Fehler auch eher auf wenn Du die Ventile mal mit einer Proberutine 
häufig schaltest?

MfG  Manfred Glahe

von Peter D. (peda)


Lesenswert?

Beim den 8051-ern sind nach einem Reset alle Portpins auf High.

Das hat seinen Grund darin, daß jeden Pin, der als Eingang benutzt wird, 
ein Low-Pegel nach Reset kurzschließen würde.

Deshalb empfielt es sich, alle Lasten so zu treiben, daß sie bei High 
(und somit auch im Resetzustand) ausgeschaltet und bei Low eingeschaltet 
werden.


Der 4051 hat keinen Watchdog intern.
Man kann z.B. den MAX813L nehmen, der muß dann im Programm mindestens 
alle 1s getriggert werden.


Peter

von Wolfgang (Gast)


Lesenswert?

Hallo,

die Frage mit dem Stack habe ich nicht verstanden (bin Anfänger).

Die galvaniche Trennung ist durch den Schalttransistor in der Folge ein 
5V Lastrelais und danach teilweise 10/ 20 Meter weiter ein Schaltrelais 
für das 220V Magnetventil gegeben.

Was soll der MC machen wenn er nicht ein Ventil schaltet, er läuft durch 
und prüft alle Steuerpins ob ein Befehl (MINUS) kommt.

Damit beantwortet sich auch die Frage nach der Steuerung, mit LOW werden 
die Ventile eingeschaltet.

Ich teste verschiedene Varianten. Seit ich die Zeit von 60000 auf 6000 
heruntergesetzt habe und mit einem Zähler 10 mal durchlaufe, ist der MC 
(2 Tage) nicht mehr hängen geblieben.

Gruß

Wolfgang

von edi (Gast)


Lesenswert?

hi,

STACK = STAPELSPEICHER  (fuer Sprungadressen)

ed

von Günter König (Gast)


Lesenswert?

Hallo,
ich vermute mal, das die Ursache bei den Relais zu suchen sind.
Möglichkeit zur Abhilfe wäre eine Reihenschaltung aus R + C parallel zu 
den Kontakten der Relais. Die Sache muss natürlich entsprechen 
Spannungsfest sein.
C = 100 - 330n mindestens 275AC Betriebsspannung
R = 100 Ohm 1Watt

Gruß,
Günter

von Andi (Gast)


Lesenswert?

Hi,

ich hatte auch mal ein ähnliches Problem. Bei Abfallen eines Relais 
wurde eine so große Spannung induziert, die dann den ganzen Speicher 
meines tollen Conrad Temperatur Displays gelöscht hat. Aber mit der Idee 
von Günter konnte ich damals das Problem lösen.

Viel Erfolg

von Manfred Glahe (Gast)


Lesenswert?

Hallo Wolfgang,
"Ich teste verschiedene Varianten. Seit ich die Zeit von 60000 auf 6000
                  heruntergesetzt habe und mit einem Zähler 10 mal 
durchlaufe, ist der MC (2
                  Tage) nicht mehr hängen geblieben."
Die Absturzhäufigkeit sollte sich aber erhöhen wenn die Ansteuerung der 
Relais dafür verantwortlich währe. Sind über diesen Zeitraum eventuell 
andere (störende) Verbraucher am Netz abgeschaltet gewesen? Ist ein 
Entstörfilter testweise eingesetzt worden? Die langen Kabelverbindungen 
welche zum µP führen können auch als "Antenne" gesehen werden welche 
induktive Störpulse von anderen Netzverbrauchern einfangen.
Läuft der4 µP durch ohne Kabelverbindung nach außen? Eventuell mit einem 
2. µP einen Testaufbau (mit separater Stromversorgung) parallel laufen 
lassen.
Entstörung ist eine der schwierigsten Aufgaben an solchen Projekten (80 
Prozent der Versuche bleiben in der Regel wirkungslos). Grundsätzlich 
muß aber erst einmal unterschieden werden ob es sich um ein HARD- oder 
Software Problem handelt.

MfG  Manfred Glahe

von Peter D. (peda)


Lesenswert?

Hi Wolfgang,

"die Frage mit dem Stack habe ich nicht verstanden (bin Anfänger)."

Dann dürfte da mit ziemlicher Sicherheit auch Dein Fehler liegen und Du 
solltest Dich erstmal näher mit dem Stack beschäftigen.

Stackfehler haben nämlich die Eigenschaft völlig unlogische Fehlerbilder 
zu produzieren. Sie können auch ein scheinbar funktionierendes Programm 
bewirken.

Du kannst ja mal Deinen kompletten Code als Dateianhang senden.


Peter

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

danke für die Antworten.

Ich gehe von einem Softwarefehler aus. Das mit dem Stack ist eine 
berechtigte Forderung.

Die Reduzierung der Schleifenzahl brachte auch wieder den bekannten 
Fehler.

Ich gehe von einem Mangel in der Subroutine (nicht von mir, dafür reicht 
es nicht) aus.

Ich habe mir eine anderen Schleifencode besorgt. Seit zwei Tagen ist der 
Fehler nicht mehr aufgetreten.

Ich habe die zeitweise stehen bleibende Steuerung mal angehangen.

Gruß

Wolfgang

von Pingpong (Gast)


Lesenswert?

Hallo Wolfgang,

ich kann Dir bei deinem Problem nicht weiterhelfen, aber ich bin auch 
dabei mir eine Bewässerungsanlage zu bauen und bin seit Wochen 
verzweifelt auf der Suche nach brauchbaren (und günstigen) 
Magnetventilen . Ich wäre Dir SEHR dankbar, wenn du mir mitteilen 
könntest, was für Magnetventile du verwendest und, wo man die bekommt.

Gruß

Pingpong

von Wolfgang (Gast)


Lesenswert?

Hallo,

woher Magnetventile zu bekommen sind, steht in der achten Antwort.

Der Fehler, dass der MC stehen bleibt, ist weg. Es war die 
Schleifenroutine. Eine andere Routine bringt den Fehler nicht mehr.

Gruß

Wolfgang

von Rolf F. (Gast)


Lesenswert?

Die einfachste Möglichkeit einer sicheren Steuerung sind 3 unabhängige 
Implementierungen auf 3 MCs und eine dahintergeschaltete 
2-von-3-Funktion für jedes der Ausgangsbits.
Das ist zwar aufwändiger, aber wenn es um etwas Wichtiges/Teures geht, 
ist das eine gute Lösung.

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.