
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo, Ich habe seit einigen Jahren eine M-Unit 1.1 zur Steuerung von Licht und Lüfter in der Toilette und Notlicht im Eingangsbereich genutzt. Die Ausgänge steuern über einen IC ULN 2803 Relais an und die Eingänge werden über PIR, durch Optokoppler PC847 getrennt, angesteuert. Bisher funktionierte es gut. Beim Bau der Schaltung und bei der Software habe ich Erweiterungen zur Steuerung des Notlichtes im Flur und zur Steuerung des Außenlichtes vorgesehen. Das Notlicht im Flur habe ich nun angeschlossen und die Probleme gehen los! (Aussenlicht und Netzwerk ist noch nicht installiert) Wenn 2 der Bewegungsmelder auslösen, schalten sich die entsprechenden Verbraucher ein. Löst ein Bewegungsmelder nochmals aus (manchmal auch schon beim ersten Impuls des 2. Bewegungsmelders), wird der 3. Verbraucher auch eingeschaltet! Nun habe ich den Bewegungsmelder im Flur wieder entfernt, wenn der Bewegungsmelder im Eingangsbereich und der der Toilette ausgelöst werden, geht das Licht im Flur unten mit an! Da ich in der Schaltung insgesamt 8 Optokoppler vorgesehen habe, habe ich die Eingänge schon hin und hergetauscht - das selbe Ergebnis! Wenn ich ein Hilfsprogramm schreibe, welches jeweils nur einen Verbraucher über einen PIR schalte, funktioniert es. Da ich kein Profi bin, wäre ich dankbar, wenn sich jemand das beigefügte Programm ansehen könnte, ob dort ein für mich nicht auffindbarer Fehler steckt. Die Anzahl der Variablen habe ich meiner Meinung nach auch nicht überschritten. Uwe '****************************** Steuerung Vorflur ***************************** ' ' ' ' '****************************************************************************** '----- Netzwerk initialisieren ----- network self = 100 'Netzwerkadressse 100 zuweisen '----- Sensoren ----- define ds_au port[7] 'Dämmerungssensor aussen define pir_au port[6] 'Bewegungssensor aussen define pir_fu port[1] 'Bewegungssensor Flur unten define pir_vf port[2] 'Bewegungssensor Vorflur define pir_tu port[4] 'Bewegungssensor Toilette unten '----- Relais ----- define led_vf port[11] 'Relais LED Vorflur define led_fu port[12] 'Relais LED Flur unten define licht_tu port[13] 'Licht Toilette unten define trafo port[14] 'Netzspannung Halogen-Trafo 12V define luefter port[15] 'Lüfter Toilette define licht_au port[16] 'Licht aussen '----- Konstanten ----- define zeit_licht_tu 90 'Zeit Licht Toilette unten define zeit_licht_led 60 'Zeit LED-Licht Vorflur und Flur unten define zeit_licht_au 30 'Zeit Licht außen define zeit_luefter_tot 60 'Zeit bis Einschalten des Lüfters define zeit_luefter 180 'Zeit Lüfter '----- Variablen ----- define timer_led_vf word[1] ') define timer_led_fu word[2] ') define timer_licht_tu word[3] ')Timer-Variablen define timer_luefter word[4] ') define timer_licht_au word[5] ') define last_sec byte[11] ')Sekunde aus letzter Schleife define led_vf_aktiv bit[187] ') define led_fu_aktiv bit[188] ') define licht_tu_aktiv bit[189] ')sind Timer aktiv? define luefter_aktiv bit[190] ') define luefter_tot_aktiv bit[191] ') define licht_au_aktiv bit[192] ') '----- Start Programm ----- pause 500 gosub init #loop 'Sensoren abfragen bis eine Sekunde vergangen gosub abfrage_sensoren if second = last_sec then goto loop 'eine Sekunde vergangen last_sec = second 'Steuerung Licht Toilette unten ---------------------------------------------- if (licht_tu_aktiv = on) then timer_licht_tu = timer_licht_tu - 1 if ((licht_tu_aktiv = on) and (timer_licht_tu = 0)) then gosub tu_off 'Steuerung Lüfter Toilette unten --------------------------------------------- if ((licht_tu_aktiv = on) and (luefter_tot_aktiv = off) and (luefter_aktiv = off)) then gosub start_luefter_tot if ((luefter_tot_aktiv = on) or (luefter_aktiv = on)) then timer_luefter = timer_luefter -1 if ((timer_luefter = 0) and (luefter_tot_aktiv = on)) then gosub luefter_on if ((timer_luefter = 0) and (luefter_aktiv = on)) then gosub luefter_off 'Steuerung LED-Licht Vorflur ------------------------------------------------- if (led_vf_aktiv = on) then timer_led_vf = timer_led_vf - 1 if ((led_vf_aktiv = on) and (timer_led_vf = 0)) then gosub vf_off 'Steuerung LED-Licht Flur unten ---------------------------------------------- if (led_fu_aktiv = on) then timer_led_fu = timer_led_fu - 1 if ((led_fu_aktiv = on) and (timer_led_fu = 0)) then gosub fu_off 'Steuerung Außenlicht --- zur Zeit deaktiviert ------------------------------- 'if (licht_au_aktiv = on) then timer_licht_au = timer_licht_au - 1 'if ((licht_au_aktiv = on) and (timer_licht_au =0)) then licht_au = off goto loop #init 'Initialisierung if initmodem then gosub modem_ok else gosub modem_fehler 'Modeminitialisierung led_vf = off 'alle Relais ausschalten led_fu = off licht_tu = off trafo = off luefter = off licht_au = off timer_led_vf = 0 'alle Timer Null setzen timer_led_fu = 0 timer_licht_tu = 0 timer_luefter = 0 timer_licht_au = 0 led_vf_aktiv = off 'alle Abfragebits ausschalten led_fu_aktiv = off licht_tu_aktiv = off luefter_aktiv = off luefter_tot_aktiv = off licht_au_aktiv = off last_sec = second 'Variable last_sec initialisieren return #abfrage_sensoren 'Abfrage der Bewegungsmelder und des Dämmerungssensors if (pir_tu = off) then gosub tu_on 'Bewegungssensor Toilette unten if (pir_vf = off) then gosub vf_on 'Bewegungssensor Vorflur if (pir_fu = off) then gosub fu_on 'Bewegungssensor Flur unten 'if ((pir_au = off) and (ds_au = off)) then gosub au_on 'Bewegungssensor außen und Dämmerungssensor - deaktiviert return #tu_on 'Bewegungsmeldersignal Toilette unten timer_licht_tu = zeit_licht_tu 'Timervariable für Licht setzen trafo = on 'Netzspannung Halogen-Trafo ein licht_tu = on 'Licht Toilette ein licht_tu_aktiv = on 'Abfragebit Licht Toilette unten if luefter_aktiv = on then timer_luefter = zeit_luefter return #tu_off 'Licht Toilette unten ausschalten licht_tu_aktiv = off 'Abfragebit Licht Toilette unten aus licht_tu = off 'Licht Toilette unten aus if ((led_vf_aktiv = off) and (led_fu_aktiv = off)) then trafo = off 'Netzspannung Halogen-Trafo aus return #start_luefter_tot 'Beginn Totzeit Lüfter luefter_tot_aktiv = on 'Abfragebit Totzeit Lüfter timer_luefter = zeit_luefter_tot 'Startzeit für Timer/Lüfter Totzeit return #luefter_on 'Lüfter einschalten luefter_tot_aktiv = off 'Abfragebit Totzeit Lüfter luefter_aktiv = on 'Abfragebit Lüfter timer_luefter = zeit_luefter 'Startzeit für Timer/Lüfter luefter = on 'Lüfter einschalen return #luefter_off 'Lüfter ausschalten luefter_aktiv = off 'Abfragebit Lüfter luefter = off 'Lüfter ausschalten return #vf_on 'Bewegungsmeldersignal Vorflur timer_led_vf = zeit_licht_led 'Timervariable für LED-Licht Vorflur setzen trafo = on 'Netzspannung Halogen-Trafo ein led_vf = on 'LED-Licht Vorflur ein led_vf_aktiv = on 'Abfragebit LED-Licht Vorflur return #vf_off 'Licht Vorflur aus led_vf_aktiv = off 'Abfragebit LED-Licht Vorflur aus led_vf = off 'LED-Licht Vorflur aus if ((licht_tu_aktiv = off) and (led_fu_aktiv = off)) then trafo = off 'Netzspannung Halogen-Trafo aus return #fu_on 'Bewegungsmeldersignal Flur unten timer_led_fu = zeit_licht_led 'Timervariable für LED-Licht Flur unten setzen trafo = on 'Netzspannung Halogen-Trafo ein led_fu = on 'LED-Licht Flur unten ein led_fu_aktiv = on 'Abfragebit LED-Licht Flur unten return #fu_off 'Licht Flur unten aus led_fu_aktiv = off 'Abfragebit LED-Licht Flur unten aus led_fu = off 'LED-Licht Flur unten aus if ((licht_tu_aktiv = off) and (led_vf_aktiv = off)) then trafo = off 'Netzspannung Halogen-Trafo aus return #au_on 'Bewegungsmeldersignal außen und Dämmerungssensor timer_licht_au = zeit_licht_au 'Timervariable für Außenlicht setzen licht_au = on 'Außenlicht ein return #au_off 'Außenlicht ausschalten licht_au_aktiv = off 'Abfragebit Außenlicht aus licht_au =off 'Außenlicht aus return #modem_ok 'Signal Modem erfolgreich initialisiert trafo = on led_vf = on pause 100 led_vf = off trafo = off pause 25 return #modem_fehler 'Signal Modeminitialisierung fehlgeschlagen trafo = on led_vf = on pause 25 led_vf = off pause 25 led_vf = on pause 25 led_vf = off pause 25 led_vf = on pause 25 led_vf = off trafo = off pause 25 return |
| Antwort schreiben |