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
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
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
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
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
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
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 ;-)
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
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
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
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
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
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
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
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
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
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
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
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.