Hallo,
ich bin neu in diesem Forum und hoffe ihr könnt mir bei meinem Problem
helfen.
Das Projekt gehört zu eine Hausautomatisierung und soll eine Heizung in
der Werkstatt steuern.
Der Brenner soll bei Betätigung eines "Schalters" starten und bei einer
Temperatur von 75°C abschalten sowie der Lüfter bei 30°C an- und unter
30°C ausgeschaltet werden soll.
Die Regelung des Brenners und des Lüfters abhängig von der Temperatur
funktioniert.
Mit dem "Schalter" kann ich den Vorgang zwar starten aber nicht beenden.
Ich habe schon sämtliche Varianten versucht es funktioniert aber nichts.
Für jede Hilfe bin ich dankbar.
Mario S. schrieb:> Hallo Gerhard,>> ich bin "blind"...>> Können Sie mir bitte meinen Fehler beschreiben.>> MfG Mario.
Ich bin gerne dazu bereit. Trotzdem bitte ich das while noch einmal zu
studieren. Das problem starrt Dir wirklich in das Gesicht.
Hint: brenner_an Status. Was passiert mit den ganzen tests in der while
loop sobald sich der Zustand auf Falsch ändert?
Es ist besser für Dich das selber zu lösen.
Studiere auch nochmals die Sprachenreferenz für die While Zuweisung.
P.S. In einem Forum vermeidet man das Siezen. Du ist normale Anrede in
Foren.
Ich hätte da eine Frage: Ist der Eingangs-Pin "Brenner_An" an den
Hauptschalter angeschlossen oder überwacht der den Zustand des Heizers?
Wenn der Pin low ist, dann passiert in Deiner Loop gar nichts mehr und
schaltet alles ab und der letzte Zustand bleibt für immer erhalten.
Brenner_An hätte nur als Hauptschalter Sinn um das Program absichtlich
lahm zu schalten. Ich nehme also an , dass Dein Brenner_An nur zur
Aktivierung oder Deaktivierung der Steuerung dienen soll.
Der interrupt ist nicht notwendig und sollte auf keinen Fall auf die
loop() hinzeigen. nimm ihn wieder weg.
Teste auch mit einem Led ob Brenner_An tatsächlich gelesen wird (Pull Up
vorhanden?)
Lese den Brenner_An in eine Variable und steuere eine LED an damit Du
sicher sein, daß dieser Zustand tatsächlich erfaßt wird.
Deine erste while loop war auch nicht notwendig weil sich loop()
andauernd wiederholt.
Auch hast Du keine Hysteresis bei den Tests. Da schaltet sich der
Brenner unnötig oft ein. Ich würde eine Hysteresis setzen. Bei 75 aus
und erst bei 70 ein. Das Gleiche beim Lüfter.
Versuche, später einen Timer Interrupt zu erstellen, so dass die
Überwachung viel langsamer erfolgt, sagen wir 1s oder noch längerer
Pausenintervall.
Brenner_an dient als "Hauptschalter" als Sicherheit der den Loop auf
einem extra Atmega 328 schaltet.
Der Interrupt war nur ein Test, ich habe nur vergessen ihn zu entfernen.
Natürlich wird das ganze erst mit Led´s getestet, es wäre ja Wahnsinn
einen Brenner zu starten ohne vorher zu testen ob alles SICHER
funktioniert.
Zu der Hysteresis komme ich noch, ich wollte nur erstmal das eine
Problem beseitigt haben:-)