Ankündigung

Einklappen
Keine Ankündigung bisher.

Hob2Hood: IR Protokoll + Arduino

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Soweit ich weiß haben AEG Hauben 3 Stufen plus eine intensiv Stufe. Das würde die 4 Schritte erklären.
    Ah, von Intensivstufe habe ich gelesen. Das würde aber heissen - wenn ich das Handbuch richtig interpretiere - dass man die Intensivstufe nur im manuellen Modus nutzen kann und im Auto-Modus nie greift?!

    55303A3 --> "Lüftung aus" Nur warum wird das beim ausschalten des Kochfelds gesendet?? Ich dachte die Lüftung läuft noch nach um Filter zu trocknen...vermutlich weil du im manuellem Modus warst..?
    Jepp. Wenn man den Ventilator-Taster am Kochfeld nutzt, dann wechselt man in dem manuellen Modus. Für den Automatik-Modus hatte ich wohl zu wenig Topf auf dem Herd und zusätzlich zu wenig Geduld...

    Bzgl. der Relais: Klar, weiß ich. Hab hier schon für andere zwecke ein 8x Relais rumliegen. Aber weniger Relais = kleiner ...

    Gruß
    Alex

    Kommentar


      #17
      Zitat von tuxedo Beitrag anzeigen

      Ah, von Intensivstufe habe ich gelesen. Das würde aber heissen - wenn ich das Handbuch richtig interpretiere - dass man die Intensivstufe nur im manuellen Modus nutzen kann und im Auto-Modus nie greift?!
      Laut Handbuch nur im manuellen.... Wenn ich mir die Tabelle angucke dann geht's auch nur 1-3. Werkseitig ist ja H5 eingestellt: Kochen Stufe 1 , Braten Stufe 2 , Automatische Beleuchtung AN
      Ich find schade, dass der Auto-Mod nur zwei Stufen nutzt
      Ich werd wahrscheinlich in H6 wechseln und Stufe 1 mit Beleuchtung einschalten lassen.


      Für den Automatik-Modus hatte ich wohl zu wenig Topf auf dem Herd und zusätzlich zu wenig Geduld...
      Hier ist was aus dem Handbuch
      Zum erneuten Einschalten des
      Automatikbetriebs schalten Sie
      das Kochfeld aus und wieder ein.
      und
      Das Kochfeld und die
      Dunstabzugshaube kommunizieren mit
      Hilfe von Infrarotsignalen. Die Drehzahl
      des Lüfters wird automatisch eingestellt.
      Sie richtet sich nach dem eingestellten
      Modus und der Temperatur des heißesten
      Kochgeschirrs auf dem Kochfeld
      Zuletzt geändert von Alexius84; 01.04.2015, 18:37.

      Kommentar


        #18
        Laut Handbuch nur im manuellen.... Wenn ich mir die Tabelle angucke dann geht's auch nur 1-3. Werkseitig ist ja H5 eingestellt: Kochen Stufe 1 , Braten Stufe 2 , Automatische Beleuchtung AN
        Ich find schade, dass der Auto-Mod nur zwei Stufen nutzt
        Jepp, Werksseitig ist H5 eingestellt. Ob H5 oder H6... Das kommt auf die DAH an. Schätze aber dass auch wir eher H6 brauchen.
        ätte mir auch gewünscht dass hier variabel Stufe 1-3 (oder sogar noch 4) genutzt wird. Aber gut. Es gibt ja jederzeit den manuellen Modus. Taste drücken und gut ist.

        Ich werd wahrscheinlich in H6 wechseln und Stufe 1 mit Beleuchtung einschalten lassen.
        Wäre eine Idee. Aber zumindest bei uns würde ich befürchten dass das unnötig ist. Nicht alles was auf dem Herd steht und "vor sich hinköchelt" braucht gleich die DAH. Wird aber auf ein "muss man ausprobieren" hinaus laufen.

        Für den Automatik-Modus hatte ich wohl zu wenig Topf auf dem Herd und zusätzlich zu wenig Geduld...
        Damit hatte ich gemeint:

        Herd an, Topf drauf, geschaut ob von alleine ein IR-Signal kommt. ... Und das war nicht gleich der Fall, weswegen ich die Ventilator-Taste für manuellen Betrieb gedrückt hatte. War eben zu ungeduldig. Hätte wohl ein wenig warten müssen bis der Automatik-Modus loslegt.

        Kommentar


          #19


          Kannst du einmal drüber schauen.....

          #include <IRremote.h>
          const long Stufe1_IR = 0xE3C01BE2; // IR Befehl in Hex
          const long Stufe2_IR = 0xD051C301; // IR Befehl in Hex
          const long Stufe3_IR = 0xC22FFFD7; // IR Befehl in Hex
          const long StufeAus_IR = 0x55303A3; // IR Befehl in Hex
          const long LichtAn_IR = 0xE208293C; // IR Befehl in Hex
          const long LichtAus_IR = 0x????????; // IR Befehl in Hex

          const int Licht_Schalter_Pin = 6;
          const int Stufe1_Schalter_Pin = 7;
          const int Stufe2_Schalter_Pin = 8;
          const int Stufe3_Schalter_Pin = 9;
          const int Licht_Pin = 2;
          const int Stufe1_Pin = 3;
          const int Stufe2_Pin = 4;
          const int Stufe3_Pin = 5;
          const int receiver = 11; // IR Empfenger an Arduino digital pin 11
          int luftung=0;
          int licht=0;
          int mod=0;
          IRrecv irrecv(receiver); // create instance of 'irrecv'
          decode_results results;




          void setup()
          {


          pinMode(Licht_Schalter_Pin, INPUT);
          pinMode(Stufe1_Schalter_Pin, INPUT);
          pinMode(Stufe2_Schalter_Pin, INPUT);
          pinMode(Stufe3_Schalter_Pin, INPUT);
          digitalWrite(Licht_Schalter_Pin, HIGH); // PullUp
          digitalWrite(Stufe1_Schalter_Pin, HIGH); // PullUp
          digitalWrite(Stufe2_Schalter_Pin, HIGH); // PullUp
          digitalWrite(Stufe3_Schalter_Pin, HIGH); // PullUp
          pinMode(Licht_Pin, OUTPUT);
          pinMode(Stufe1_Pin, OUTPUT);
          pinMode(Stufe2_Pin, OUTPUT);
          pinMode(Stufe3_Pin, OUTPUT);


          digitalWrite(Licht_Pin, HIGH); // LOW -> AN HIGH -> AUS
          digitalWrite(Stufe1_Pin, HIGH); // LOW -> AN HIGH -> AUS
          digitalWrite(Stufe2_Pin, HIGH); // LOW -> AN HIGH -> AUS
          digitalWrite(Stufe3_Pin, HIGH); // LOW -> AN HIGH -> AUS


          Serial.begin(9600); // for serial monitor output
          irrecv.enableIRIn(); // Start the receiver
          }




          void loop()
          {
          if (digitalRead(Licht_Schalter_Pin) == LOW || digitalRead(Stufe1_Schalter_Pin) == LOW || digitalRead(Stufe2_Schalter_Pin) == LOW || digitalRead(Stufe3_Schalter_Pin) == LOW )
          {
          mod = 1;
          if (digitalRead(Licht_Schalter_Pin) == LOW)
          {
          // Beleuchtung einschalten:
          licht = 1;
          steuerung();
          }
          else
          {
          // Beleuchtun ausschalten:
          licht = 0;
          steuerung();
          }

          if (digitalRead(Stufe1_Schalter_Pin) == LOW)
          {
          // Luftung Stufe 1 einschalten:
          luftung = 1;
          steuerung();
          }

          else if (digitalRead(Stufe2_Schalter_Pin) == LOW)
          {
          // Luftung Stufe 2 einschalten:
          luftung = 2;
          steuerung();
          }

          else if (digitalRead(Stufe3_Schalter_Pin) == LOW)
          {
          // Luftung Stufe 3 einschalten:
          luftung = 3;
          steuerung();
          }
          else
          {
          // Luftung ausschalten:
          luftung = 0;
          steuerung();
          }

          }

          else
          {
          if (mod ==1)
          {
          luftung = 0;
          licht = 0;
          steuerung();
          mod = 0;
          irrecv.resume();
          }
          auto_mod();
          }

          }


          void auto_mod()
          {
          if (irrecv.decode(&results)) // have we received an IR signal?
          {
          Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal

          switch (results.value) {

          case LichtAn_IR:
          licht = 1;
          break;

          case LichtAus_IR:
          licht = 0;
          break;

          case Stufe1_IR:
          luftung = 1;
          break;

          case Stufe2_IR:
          luftung = 2;
          break;

          case Stufe3_IR:
          luftung = 3;
          break;

          case StufeAus_IR:
          luftung = 0;
          break;

          default:
          break;
          }



          steuerung();
          irrecv.resume(); // receive the next value
          }
          }





          void steuerung()
          {
          if (licht == 0) //Licht ausschalten
          {
          digitalWrite(Licht_Pin, HIGH);
          delay(10);
          }

          if (licht == 1) //Lich einschalten
          {
          digitalWrite(Licht_Pin, LOW);
          delay(10);
          }


          if (luftung == 0) //Luftung ausschalten
          {
          digitalWrite(Stufe1_Pin, HIGH);
          digitalWrite(Stufe2_Pin, HIGH);
          digitalWrite(Stufe3_Pin, HIGH);
          delay(10);
          }

          if (luftung == 1) //Luftung Stufe 1
          {
          digitalWrite(Stufe2_Pin, HIGH);
          digitalWrite(Stufe3_Pin, HIGH);
          delay(100);
          digitalWrite(Stufe1_Pin, LOW);
          delay(10);
          }
          if (luftung == 2) //Luftung Stufe 2
          {
          digitalWrite(Stufe1_Pin, HIGH);
          digitalWrite(Stufe3_Pin, HIGH);
          delay(100);
          digitalWrite(Stufe2_Pin, LOW);
          delay(10);
          }
          if (luftung == 3) //Luftung Stufe 3
          {
          digitalWrite(Stufe1_Pin, HIGH);
          digitalWrite(Stufe2_Pin, HIGH);
          delay(100);
          digitalWrite(Stufe3_Pin, LOW);
          delay(10);
          }

          }
          Soweit funktioniert alles...du musst nur die 4. Stufe einfügen...

          Kannst du noch das "LichtAus" Befehl herausfinden?

          Danke
          Zuletzt geändert von Alexius84; 02.04.2015, 14:44.

          Kommentar


            #20
            Lüftung Stufe1 0xE3C01BE2
            Lüftung Stufe2 0xD051C301
            Lüftung Stufe3 0xC22FFFD7
            Lüftung Stufe4 0xB9121B29
            Lüftung Aus 0x55303A3
            Licht An 0xE208293C
            Licht Aus 0x24ACF947

            Kommentar


              #21
              Bin noch nicht dazu gekommen. Aber gut dass du's nun ermittelt hast. Mal schauen wann ich dazu komme das ganze auf- und einzubauen...

              Kommentar


                #22
                Meine Küche steht und die Haube ist jetzt komplett umgebaut. IR-Empfenger hab ich unter dem Fettfilter (Edelstahl) ... funktioniert super. Hab soweit alles getestet. Das Kochfeld arbeitet wie vermutet mit diesen paar IR Befehlen. Licht geht nach zwei Minuten aus, beim kochen geht die Lüftung an...
                Der von mir geposter Arduino-Code leuft bis jetzt problemlos.
                Jetzt ist testen angesagt...

                Kommentar


                  #23
                  Nochmal zur Lüftungsstufe:

                  Stufe 1-3 werden je nach eingestelltem Modus (H1..Hx..) gewählt. Stufe 4 ist aber nur als "manuelle Intensivstufe" anwählbar. Ist das so korrekt?

                  Kommentar


                    #24
                    H1-H6 Stufe 1-3
                    Manuell. Stufe 1-4

                    Kommentar


                      #25
                      Hab deinen Code mal "eingeenglischt', formatiert und hier und da für mein befinden eine bessere Variablen und Funktionenbenennung gewählt, sowie hier und da unübersichtliche if-else-Blöcke durch Switch/Case ersetzt und einige Stellen deutlicher kommentiert. Hab auch schon mal die Lüftungsstufe 4 ergänzt.

                      Ist aber noch nicht getestet. Muss mir erst noch das Relais-Board holen und meine Haube mal zerlegen...

                      Code:
                      #include <IRremote.h>
                      
                      /*
                      Siehe: https://knx-user-forum.de/forum/%C3%B6ffentlicher-bereich/knx-eib-forum/diy-do-it-yourself/37790-hob2hood-ir-protokoll-arduino/page2
                      Lüftung Stufe1 0xE3C01BE2
                      Lüftung Stufe2 0xD051C301
                      Lüftung Stufe3 0xC22FFFD7
                      Lüftung Stufe4 0xB9121B29
                      Lüftung Aus 0x55303A3
                      light An 0xE208293C
                      light Aus 0x24ACF947
                      */
                      
                      // IR commands from AEG hob2hood device
                      const long IRCMD_SPEED_1 = 0xE3C01BE2;
                      const long IRCMD_SPEED_2 = 0xD051C301;
                      const long IRCMD_SPEED_3 = 0xC22FFFD7;
                      const long IRCMD_SPEED_4 = 0xB9121B29;
                      const long IRCMD_SPEED_OFF = 0x55303A3;
                      const long IRCMD_LIGHT_ON = 0xE208293C;
                      const long IRCMD_LIGHT_OFF = 0x24ACF947;
                      
                      // Pins for input switches/controls for manual control of the hood
                      const int PIN_IN_LIGHT = 6;
                      const int PIN_IN_SPEED_1 = 7;
                      const int PIN_IN_SPEED_2 = 8;
                      const int PIN_IN_SPEED_3 = 9;
                      const int PIN_IN_SPEED_4 = 9; // TODO configure PIN
                      
                      // Pins for the output which controls relais which finally control the hood
                      const int PIN_OUT_LIGHT = 2;
                      const int PIN_OUT_SPEED_1 = 3;
                      const int PIN_OUT_SPEED_2 = 4;
                      const int PIN_OUT_SPEED_3 = 5;
                      const int PIN_OUT_SPEED_4 = 5; // TODO configure PIN
                      
                      // IR Receiver PIN
                      const int PIN_IR_RECEIVER = 11;
                      
                      const int MODE_HOB2HOOD = 0;
                      const int MODE_MANUAL = 1;
                      
                      // ventilation, light and mode status
                      int ventilation=0;
                      int light=0;
                      int mode=0; // 0 = hob2hood control, 1 = manual control
                      
                      IRrecv irrecv(PIN_IR_RECEIVER); // create instance of 'irrecv'
                      decode_results results;
                      
                      
                      
                      
                      void setup() {
                       
                        // Setup manual switches/control inputs
                        pinMode(PIN_IN_LIGHT, INPUT);
                        pinMode(PIN_IN_SPEED_1, INPUT);
                        pinMode(PIN_IN_SPEED_2, INPUT);
                        pinMode(PIN_IN_SPEED_3, INPUT);
                        pinMode(PIN_IN_SPEED_4, INPUT);
                      
                        // define startup state
                        digitalWrite(PIN_IN_LIGHT, HIGH); // PullUp
                        digitalWrite(PIN_IN_SPEED_1, HIGH); // PullUp
                        digitalWrite(PIN_IN_SPEED_2, HIGH); // PullUp
                        digitalWrite(PIN_IN_SPEED_3, HIGH); // PullUp
                        digitalWrite(PIN_IN_SPEED_4, HIGH); // PullUp
                       
                        // Setup relay-outputs
                        pinMode(PIN_OUT_LIGHT, OUTPUT);
                        pinMode(PIN_OUT_SPEED_1, OUTPUT);
                        pinMode(PIN_OUT_SPEED_2, OUTPUT);
                        pinMode(PIN_OUT_SPEED_3, OUTPUT);
                       
                        // define startup-state
                        digitalWrite(PIN_OUT_LIGHT, HIGH); // LOW -> AN HIGH -> AUS
                        digitalWrite(PIN_OUT_SPEED_1, HIGH); // LOW -> AN HIGH -> AUS
                        digitalWrite(PIN_OUT_SPEED_2, HIGH); // LOW -> AN HIGH -> AUS
                        digitalWrite(PIN_OUT_SPEED_3, HIGH); // LOW -> AN HIGH -> AUS
                       
                       
                        Serial.begin(9600); // for serial monitor output
                        irrecv.enableIRIn(); // Start the IR receiver
                      }
                      
                      
                      
                      
                      void loop() {
                       
                        // read manual control inputs
                        int inLight = digitalRead(PIN_IN_LIGHT);
                        int inSpeed1 = digitalRead(PIN_IN_SPEED_1);
                        int inSpeed2 = digitalRead(PIN_IN_SPEED_2);
                        int inSpeed3 = digitalRead(PIN_IN_SPEED_3);
                        int inSpeed4 = digitalRead(PIN_IN_SPEED_4);
                       
                        // if any of the manual control inputs is IN USE (PullUp: LOW = ON) --> manual mode
                        if (inLight == LOW ||
                          inSpeed1 == LOW ||
                          inSpeed2 == LOW ||
                          inSpeed3 == LOW ||
                          inSpeed4 == LOW ) {
                      
                          if (mode==MODE_HOB2HOOD) {
                            Serial.println("Switching to manual mode");
                          }
                            
                          mode = MODE_MANUAL;
                          
                          if (inLight == LOW) {
                            // Beleuchtung einschalten:
                            light = 1;
                          } else {
                            // Beleuchtun ausschalten:
                            light = 0;
                          }
                       
                          if (inSpeed1 == LOW) {
                            // set ventilation speed 1
                            ventilation = 1;
                          } else if (inSpeed2 == LOW) {
                            // set ventilation speed 2
                            ventilation = 2;
                          } else if (inSpeed3 == LOW) {
                            // set ventilation speed 3
                            ventilation = 3;
                          } else if (inSpeed4 == LOW) {
                            // set ventilation speed 4
                            ventilation = 4;
                          } else {
                            // set ventilation off
                            ventilation = 0;
                          }
                          
                          controlHood();
                       
                        } else {
                          // now we are in HOB2HOOD-mode, because no manual control is in use
                          
                          // check for previous mode
                          if (mode==MODE_MANUAL) {
                            Serial.println("Switching to Hob2Hood mode");
                            // set to initial state
                            ventilation = 0;
                            light = 0;
                            controlHood();
                            
                            // and switch to hob2hood mode
                            mode = MODE_HOB2HOOD;
                            irrecv.resume();
                          }
                          receiveIRCommand();
                        }
                      
                      }
                      
                      // Receive and decode IR commands and control hood upon received command
                      void receiveIRCommand() {
                       
                        // have we received an IR signal?
                        if (irrecv.decode(&results)) {
                      
                          Serial.println("Received IR command: ");
                          Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
                          Serial.println("");
                          
                          switch (results.value) {
                      
                            case IRCMD_LIGHT_ON:
                              light = 1;
                              break;
                      
                            case IRCMD_LIGHT_OFF:
                              light = 0;
                              break;
                      
                            case IRCMD_SPEED_1:
                              ventilation = 1;
                              break;
                      
                            case IRCMD_SPEED_2:
                              ventilation = 2;
                              break;
                      
                            case IRCMD_SPEED_3:
                              ventilation = 3;
                              break;
                      
                            case IRCMD_SPEED_OFF:
                              ventilation = 0;
                              break;
                      
                            default:
                              break;
                          }
                      
                          controlHood();
                          irrecv.resume(); // receive the next value
                        }
                      }
                      
                      
                      // control hood based on 'light' and 'ventilation' variables
                      void controlHood() {
                      
                        // control light
                        switch (light) {
                          // Light OFF
                          case 0:
                            Serial.println("Light: OFF");
                            digitalWrite(PIN_OUT_LIGHT, HIGH);
                            delay(10);
                            break;
                          // Light ON
                          case 1:
                            Serial.println("Light: ON");
                            digitalWrite(PIN_OUT_LIGHT, LOW);
                            delay(10);
                            break;
                          default:
                            break;
                        }
                      
                        // control ventilation
                        switch (ventilation) {
                          
                          // Ventilation OFF
                          case 0:
                            Serial.println("Ventilation: OFF");
                            digitalWrite(PIN_OUT_SPEED_1, HIGH);
                            digitalWrite(PIN_OUT_SPEED_2, HIGH);
                            digitalWrite(PIN_OUT_SPEED_3, HIGH);
                            delay(10);
                            break;
                            
                          // Ventilation Speed 1
                          case 1:
                            Serial.println("Ventilation: 1");
                            digitalWrite(PIN_OUT_SPEED_2, HIGH);
                            digitalWrite(PIN_OUT_SPEED_3, HIGH);
                            delay(100);
                            digitalWrite(PIN_OUT_SPEED_1, LOW);
                            delay(10);
                            break;
                            
                          // Ventilation Speed 2
                          case 2:
                            Serial.println("Ventilation: 2");
                            digitalWrite(PIN_OUT_SPEED_1, HIGH);
                            digitalWrite(PIN_OUT_SPEED_3, HIGH);
                            delay(100);
                            digitalWrite(PIN_OUT_SPEED_2, LOW);
                            delay(10);
                            break;
                            
                          // Ventilation Speed 3
                          case 3:
                            Serial.println("Ventilation: 3");    
                            digitalWrite(PIN_OUT_SPEED_1, HIGH);
                            digitalWrite(PIN_OUT_SPEED_2, HIGH);
                            delay(100);
                            digitalWrite(PIN_OUT_SPEED_3, LOW);
                            delay(10);
                            break;
                          
                          // Ventilation Speed 4
                          case 4:
                            Serial.println("Ventilation: 4 NotYetSupported");    
                            // Not yet supported?!
                            break;
                            
                          default:
                            break;
                          
                        }
                      
                      }

                      Kommentar


                        #26
                        Hab gestern die HEX Werte nochmal live ausprobiert: Passt auch bei mir alles.
                        hab dann meine DAH zerlegt und wie erwartet, kann ich hier tatsächlich einfache Relais einsetzen die die Dreh-Schalter ablösen. Um alles umzusetzen brauche ich 5 Relais:

                        4 für die Lüftungsstufen 1-4
                        1 für das Licht

                        Bin aktuell noch am überlegen ob ich da nicht noch die KnxTpUart mit kombiniere und so auf den Bus gebe wenn die DAH (und vor allem wie stark) läuft. Damit könnte ich dann noch nachgelagert die KWL steuern.

                        Kommentar


                          #27
                          Alexius84 Wie hast du das in deiner Haube verbaut? Ich hab eine Inselhaube. Alles in ein Gehäuse packen und oben drauf legen wäre möglich. Sieht aber bescheiden aus.
                          Im inneren wäre zwar Platz, aber da habe ich noch kein passendes Gehäuse gefunden. Am besten wäre etwas in ca. 15x15x3-5cm mit Befestigungslaschen. Aber da finde ich nix anständiges.

                          Am liebsten wäre es mir ich könnte alles Stecken und Schrauben (Arduino Nano auf einem Schraubterminal-Adapter + Relais-Board mit Schraubkemmen). Dann könne man in einem defekt-Fall das Ersatzteil ohne Lötkolben einbauen. Aber das frisst alles Platz...

                          Oder hast du noch einen experimentellen, fliegenden Aufbau?

                          Gruß
                          Alex

                          Kommentar


                            #28
                            Ich hab alles fest verbaut...In der Haube hatte ich eine Plastikbox die man aufschrauben kann. Darin waren die ganzen Kabel mit Quetschverbinder versteckt. Ich hab alle Kabel gekürzt und so hatte ich platz für Arduino, Relais und Kabel. Da drauf habe ich ein USB Ladegerät geklebt... aus der Box kommt langes USB-Kabel, was in das Ladegerät geht. Wenn ich Flashen muss, kann ich das lange USB Kabel ausstecken und am Laptop anschliessen

                            Im inneren wäre zwar Platz, aber da habe ich noch kein passendes Gehäuse gefunden
                            Schon an sowas gedacht?

                            527575_Feuchtraum-Leergehaeuse-AP.jpg
                            Zuletzt geändert von Alexius84; 15.04.2015, 17:03.

                            Kommentar


                              #29
                              In meiner Haube ist im vorhandenen Gehäuse für die Elektronik kein Platz. Ist recht exakt bemessen. Ich müsste ein extra Gehäuse verwenden. Vom Platz her würde ein 15x15cm großes und ~5cm hohe Gehäuse rein passen. Da ich das aber Kopf-über aufhängen muss, und ich da auch wieder "bequem" ran kommen können will, wäre eines mit Befestigungslaschen nicht verkehrt. Hab aber noch keines gefunden das diesen Ansprüchen entspricht. Wenn es in Richtung 15x15cm geht, dann sind die gleich 7-8cm hoch.

                              Hab noch ein Gehäuse hier rumliegen: http://www.reichelt.de/Kunststoffgeh...RCH=TEKO%20011

                              Das würde von der Größe her gehen. Aber mit der Befestigung muss ich mir etwas einfallen lassen. Und lieber wäre es mir, das Gehäuse wäre "dicht". Wobei das Gehäuse für die Steuerelektronik auch nicht wirklich dicht ist.

                              Die Idee mit dem USB-Kabel ist nicht schlecht. Allerdings werde ich bei mit eine bestehende 12V Ader des Steuer-Kabels anzapfen.

                              Hab jetzt mal zwei 4-fach-Relais Boards und zwei Arduino Nanos sowie eine Adapterplatine für den Nano mit Schraubterminals geordert. So kann ich alles "zusammenstecken". Und mit 8 Relais, von denen ich erstmal nur 5 brauche, habe ich dann noch 3 für "sonstiges" und "ersatz" übrig. Wobei ich eines wohl als zusätzlichen Steuerausgang nutzen werde: Wenn die Lüftung in Betrieb ist, wird ein zusätzliches Relais geschalten. Zusammen mit einer KNX Tasterschnittstelle kann ich dann auf den Bus geben dass die DAH läuft und ich die KWL entsprechend höher laufen lasse. Vielleicht nehme ich auch alle 3 übrigen Relais und hänge die an die Tasterschnittstelle. Dann kann ich noch mehr an Infos raus ziehen.

                              KNX selbst mit dem Arduino anzapfen würde auch gehen, aber nicht ohne Lötkolben. Und die Tasterschnittstelle ist so günstig, dass es sich für diese paar Status-Infos nicht lohnt da selbst zu basteln.

                              Kommentar


                                #30
                                So, hab jetzt alles zusammengeschraubt und verkabelt und bin am feintunen der Software bevor ich die Haube anzapfe...
                                Bin dabei auf ein Problem gestoßen, dem du auch begegnet sein müsstest:

                                digitalWrite(Licht_Pin, HIGH); // LOW -> AN HIGH -> AUS
                                Deine Relais sind wohl auch bei HIGH "aus" und bei LOW "an". Wie meine.

                                Das ist im Betrieb nicht weiter tragisch. Aber beim Start:

                                Der Arduino startet ja mit alles Digitalausgängen auf 0/LOW.

                                Das Relaisboard schaltet dann mal alle Kanäle AN.

                                Dann kommt der init wo alle ausgänge, wie eben zitiert, in einen definirten Zustand versetzt werden, nämlich 1/HIGH was die Kanäle dann faktisch ausschaltet.

                                D.h. beim Start des Arduinos habe ich einen Zustand auf den Ausgängen, der von der Haube nicht "gewollt" ist. Die Haubenelektronik verhindert dass mehr wie ein Steuerkanal eingeschaltet ist.
                                Ich hab kein Plan was die dann dazu sagt wenn der Arduino beim Start bei für einen Moment alles einschaltet ....

                                Verkraftet das deine Haube? Oder wie hast du das gelöst? Bin nicht der Ober-Elektronik-Experte, aber ich hätte schon gerne dass der Arduino sich beim Start so verhält wie die bisherige Steuerung, ohne dass ich von Hand eingreifen muss.

                                Any ideas?


                                [update]

                                Ich glaub ich hab die Lösung selbst gefunden:

                                Hab in der Init-methode zu viel krempel um den init der Ports gemacht, was das ganze "verlangsamt" hat. Wenn ich nur den port-mode setze und direkt danach den wert HIGH schreibe, und erst dann meinen ganzen krempel drum herum mache, dann ist das so schnell, dass die Relais nichtmal anfangen zu zucken (nur deren LEDs flackern für einen bruchteil einer Sekunde) und das ganze sauber ohne eingeschaltete relais startet...
                                Zuletzt geändert von tuxedo; 11.05.2015, 22:27.

                                Kommentar

                                Lädt...
                                X