Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

  • kblankenheim
    antwortet
    Achtung NCD Telegramme!

    Die Methode KnxTpUart::readKNXTelegram() ruft immer sendNCDPosConfirm(...) auf wenn ein NCD Telegramm empfangen wurde und zwar unabhängig von der Zieladresse. Das ist nicht sinnvoll und kann einfach behoben werden.

    Hier mal eine kurze Fehleranalyse. Arduino mit physikalischer Adresse 1.1.31 und dem folgendem Sketch:

    Code:
    #include <KnxTpUart.h>
    #include <Bounce2.h>
    
    KnxTpUart knx(&Serial1, "1.1.31");
    
    String  SEND_GROUP_1     =  "3/0/5";     // DG Flur
    String  LISTEN_GROUP_1   =  "3/0/5";     // DG Flur
    int  LISTEN_GROUP_1_INT  =  6149;         // t_main*2048 + t_middle*256 + t_sub
    
    bool    light_state      =  false;
    
    #define BUTTON_PIN 9
    
    // Instantiate a Bounce object
    Bounce debouncer = Bounce(); 
    
    void setup() {
      
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for Leonardo only
      }
      Serial.println("TP-UART Test");  
    
      Serial1.begin(19200);
      UCSR1C = UCSR1C | B00100000; // Even Parity
    
      knx.uartReset(); 
      knx.addListenGroupAddress(LISTEN_GROUP_1);  
      
      // setup the button and Bounce object
      pinMode(BUTTON_PIN, INPUT_PULLUP);  
      debouncer.attach(BUTTON_PIN);
      debouncer.interval(20);
    }
    
    
    void loop() {
      
      boolean stateChanged = debouncer.update();
      
      if (stateChanged) {  
          // the state has changed, send knx event
          light_state = !light_state;
          bool success = knx.groupWriteBool(SEND_GROUP_1, light_state);
      }
    }
    
    void serialEvent1() {
      // nur zum Testen ...
      KnxTpUartSerialEventType eType = knx.serialEvent();
    
    }
    Ich erzeuge aus der ETS ein paar NCD (Numbered Control Data) Pakete (Diagnostics → Individual Adresses… → List all existing addresses in a line) die via USB Datenschnittstelle (15.15.255) auf den Bus gelangen:

    Code:
    LPDU: B0 FF FF 11 01 61 43 00 7D :L_Data system from 15.15.255 to 1.1.1 hops: 06 T_DATA_CONNECTED_REQ serno:00 A_DeviceDescriptor_Read Type:00 
    LPDU: B0 11 01 FF FF 60 C2 FD :L_Data system from 1.1.1 to 15.15.255 hops: 06 T_ACK Serno:00
    Soweit so gut. Jetzt mal aufgepasst. Was ist dass?

    Code:
    LPDU: BC 11 1F 11 01 60 C2 FF :L_Data low from 1.1.31 to 1.1.1 hops: 06 T_ACK Serno:00
    Der Arduino (1.1.31) schickt ein acknowledge an 1.1.1? Wofür? 1.1.1 hat ein NCD Paket an 15.15.255 geschickt. Da schauen wir mal genauer hin:

    Code:
    bool KnxTpUart::readKNXTelegram()
    Source: 1.1.1
    Target Physical: 15.15.255
    Interested (group, physical, broadcast) = 0, 0, 0 	[B]<= wir sind nicht interessiert[/B]
    NCD Telegram 0 received
    NCD sending positive confirm >>>>>>	[B]<= und senden trotzdem eine acknowledge an 15.15.255 weil in KnxTpUart::readKNXTelegram() ein NCD Teleramm unabhängig von der Zieladresse immer bestätigt wird[/B]
    NCD Waiting for confirmation >>>>>>	[B]<= und warten auf eine Antwort von 15.15.255 die wir nicht bekommen[/B]
    Wenn wir jetzt nur einen Arduino haben, endet die NCD-Warteschleife irgendwann und dann ist bis zum nächsten NCD-Paket gut. Es können aber Pakete verloren gehen.

    Jetzt nehmen wir mal einen zweiten Arduino mit dem gleichen Sketch und physikalischer Adresse 1.1.34 dazu.

    Der empfängt das NCD acknowledge das von 1.1.31 an 1.1.1 geschickt wurde :

    Code:
    LPDU: BC 11 1F 11 01 60 C2 FF :L_Data low from 1.1.31 to 1.1.1 hops: 06 T_ACK Serno:00
    und schickt wie oben ein ACK an 1.1.31 (weil in KnxTpUart::readKNXTelegram() ein NCD Telegramm unabhängig von der Zieladresse immer bestätigt wird)

    Code:
    LPDU: BC 11 22 11 1F 60 C2 DC :L_Data low from 1.1.34 to 1.1.31 hops: 06 T_ACK Serno:00
    LPDU: 9C 11 22 11 1F 60 C2 FC :L_Data (repeated) low from 1.1.34 to 1.1.31 hops: 06 T_ACK Serno:00 
    LPDU: 9C 11 22 11 1F 60 C2 FC :L_Data (repeated) low from 1.1.34 to 1.1.31 hops: 06 T_ACK Serno:00 
    LPDU: 9C 11 22 11 1F 60 C2 FC :L_Data (repeated) low from 1.1.34 to 1.1.31 hops: 06 T_ACK Serno:00
    Die beiden Arduinos fangen an sich gegenseitig Telegramme zu schicken und das ganze schaukelt sich auf und erzeugt eine extrem hohe Buslast. Bei mir kam teilweise kein anderes Packet mehr durch. Je mehr Arduinos angeschossen sind umso größer die Buslast.

    Einen Kommentar schreiben:


  • Mag Gyver
    antwortet
    Hallo Andi 99,

    folgende Angaben beziehen sich auf meinen Sketch.

    Die LED 13 blinkt beim Starten des Sketch nur kurze Zeit. Bei "Unknown Event" blitzt die LED 13 kurze Zeit.
    Aber bei Gruppenadresse 0.0.1 wird Ausgang 11 angesteuert und bei Gruppenadresse 2.5.0 wird Ausgang 12 angesteuert.

    Es laufen bei mir 6 Stück EIBuinos seit mehreren Monaten ohne Probleme (nur Senden).
    Seitdem htwg/Pascal seinen Sketch eingestellt hat, laufen jetzt 2 Stück mit zusätzlich zum Senden auch noch Empfangen von Gruppenadressen.

    Benütze bitte die Libary https://bitbucket.org/dka/arduino-tpuart/downloads und natürlich den 5WG1 117-2AB12 von Siemens.

    Deine Hardwareanschlussbelegung stimmt -> Wackler ?

    Bei USB-Speisung (Verbindung zum PC) musste ich den Pin 5 mit Pin 6 der ICSP1 mit einander kurzschließen.

    Busankoppler zum Programmieren des EIBunios immer abstecken, ansonsten gibt es eine Fehlermeldung.


    Grüße

    Mag Gyver

    Einen Kommentar schreiben:


  • Andi99
    antwortet
    KNX Nachrichten Empfangen funktioniert nicht

    Hallo,

    leider schaffe ich es nicht, den Code von htwg/Pascal bzw. von Mag Gyver zum Laufen zu bringen.
    Mein Vorgehen:
    - Code z.B. von Mag Gyver in IDE kopieren
    - physical address anpassen KnxTpUart knx(&Serial, "0.0.50")
    - Pragramm auf Arduino UNO R3 übertagen
    - USB entfernen
    - Arduino an Busankoppler(Siemens 5WG1) anschließen
    - GND an BUS-Pin1 (unten links)
    - TX->1 an BUS-Pin2
    - RX<-0 an BUS-Pin4
    - 5V an BUS-Pin5
    - Resetknopf drücken und ca. 20 Sekunden warten
    - die Gruppenadresse 0.0.1 am Bus mit 1 auslösen
    - jetzt sollte doch zumindest die LED 13 kurz aufblitzen

    Was mach ich falsch?
    Ich habe das Identische auch mit void serialEvent1() ohne Erfolg getestet.

    Vielen Dank

    Gruß
    Andi
    PS: Das Senden funktioniert perfekt!

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi
    @kblankenheim: was sendest du denn?
    Gibt es für diese GA einen Empfänger "auf dem Bus" - oder nur im Rasperi?
    Grund der Frage: wenn ein Telegramm nicht auf dem Bus von einem Teilnehmer empfangen wird - wird sie (laut SPezifikation) 3x wiederholt...
    Ein normales IP Gateway (und auch EIBD) "ACK´en" (bestätigen) ein Telegramm normal NICHT (für den EIBD gibt es - zumindest für´s Wiregate - ein "ack-all"-parameter....)

    Zur not einfach mal die genutzte Gruppenadresse auch auf einen Aktor legen - dann kommt auch ein ACK auf dem Bus an...

    @Leonelf: die BCU ist kein BA - daher wird dein BJ-BA nicht funktionieren (auch wenn BCU und BA identisch aussehen... sind sie es nicht)

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • Leonelf
    antwortet
    Hallo!
    Wir haben noch ein paar Busch-Jaeger Buskoppler rumliegen, kann man diese auch nutzen, oder greift da die Hersteller(er)kennung?

    Einen Kommentar schreiben:


  • kblankenheim
    antwortet
    Hallo zusammen,

    klasse Projekt! Danke an alle die hier Zeit investiert und mitgeholfen haben!!

    Bei mir funktioniert das alles wunderbar. Bei der Beobachtung es Busverkehrs bin ich jetzt allerdings auf ein Problem gestoßen. Die Arduinos scheinen zu versuchen untereinander Verbindung aufzunehmen, haben dabei keinen Erfolg und „verstopfen“ den Bus mit tausenden von Nachrichten. Das Verhalten tritt - bisher nicht reproduzierbar - nur zeitweise auf. Der Sketch auf den Arduinos ist ganz einfach nur einen Schalter abfragen.

    Ich habe mal über Nacht -wenn sonst wenig Busverkehr ist - den Busverkehr mitgeschnitten und angehängt.

    Hat jemand etwas ähnliches beobachtet?

    Code:
    LPDU: BC B1 01 11 07 60 E2 67 :L_Data low from 11.1.1 to 1.1.7 hops: 06 T_ACK Serno:08 
    LPDU: BC B0 01 B1 01 60 E2 C0 :L_Data low from 11.0.1 to 11.1.1 hops: 06 T_ACK Serno:08 
    LPDU: BC BB 02 B1 01 60 E2 C8 :L_Data low from 11.11.2 to 11.1.1 hops: 06 T_ACK Serno:08 
    LPDU: 9C BB 02 B1 01 60 E2 E8 :L_Data (repeated) low from 11.11.2 to 11.1.1 hops: 06 T_ACK Serno:08 
    LPDU: 9C BB 02 B1 01 60 E2 E8 :L_Data (repeated) low from 11.11.2 to 11.1.1 hops: 06 T_ACK Serno:08 
    LPDU: 9C BB 02 B1 01 60 E2 E8 :L_Data (repeated) low from 11.11.2 to 11.1.1 hops: 06 T_ACK Serno:08 
    LPDU: BC B0 01 BB 02 60 E2 C9 :L_Data low from 11.0.1 to 11.11.2 hops: 06 T_ACK Serno:08 
    LPDU: 9C B0 01 BB 02 60 E2 E9 :L_Data (repeated) low from 11.0.1 to 11.11.2 hops: 06 T_ACK Serno:08 
    LPDU: 9C B0 01 BB 02 60 E2 E9 :L_Data (repeated) low from 11.0.1 to 11.11.2 hops: 06 T_ACK Serno:08 
    LPDU: 9C B0 01 BB 02 60 E2 E9 :L_Data (repeated) low from 11.0.1 to 11.11.2 hops: 06 T_ACK Serno:08 
    LPDU: BC B1 01 B0 01 60 E2 C0 :L_Data low from 11.1.1 to 11.0.1 hops: 06 T_ACK Serno:08 
    LPDU: BC BB 02 B0 01 60 E2 C9 :L_Data low from 11.11.2 to 11.0.1 hops: 06 T_ACK Serno:08 
    LPDU: 9C BB 02 B0 01 60 E2 E9 :L_Data (repeated) low from 11.11.2 to 11.0.1 hops: 06 T_ACK Serno:08 
    LPDU: 9C BB 02 B0 01 60 E2 E9 :L_Data (repeated) low from 11.11.2 to 11.0.1 hops: 06 T_ACK Serno:08 
    LPDU: 9C BB 02 B0 01 60 E2 E9 :L_Data (repeated) low from 11.11.2 to 11.0.1 hops: 06 T_ACK Serno:08 
    LPDU: BC B0 01 B1 01 60 E2 C0 :L_Data low from 11.0.1 to 11.1.1 hops: 06 T_ACK Serno:08 
    LPDU: 9C B0 01 B1 01 60 E2 E0 :L_Data (repeated) low from 11.0.1 to 11.1.1 hops: 06 T_ACK Serno:08 
    LPDU: 9C B0 01 B1 01 60 E2 E0 :L_Data (repeated) low from 11.0.1 to 11.1.1 hops: 06 T_ACK Serno:08 
    LPDU: 9C B0 01 B1 01 60 E2 E0 :L_Data (repeated) low from 11.0.1 to 11.1.1 hops: 06 T_ACK Serno:08
    Angehängte Dateien

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Hi Throsten,

    Zitat von ThorstenGehrig Beitrag anzeigen
    laut dem verlinkten Post braucht man nur
    * Pin1: Binäreingang (HIGH = Filter fehler)
    * Pin2: Binäreingang (HIGH = Störung)
    * PIN3: Digital bzw. Analogausgang: Homevent Aus (0-3V) / EIN 6-24 Volt
    Frage= ist das nur ein/aus oder 6-24 Volt bedeuten Leistung x bis y?
    * PIN4: Analogausgang 0-10Volt => Volumenstrom 0-100%
    (daraus ergibt sich eigentlich das PIN 3 nur AUS/AN ist, richtig?)
    Soweit ich das verstanden habe, ist PIN3 nur AN/AUS und PIN4 regelt den Volumenstrom. Das Bedienteil ist bei der Verwendung des LSA Moduls weiterhin notwendig und erfasst den Feuchtigkeitsgehalt der Luft. Die Luftfeuchtigkeit lässt sich dann weiterhin nur über das Bedienteil einstellen. Zwar schade, wäre aber für mich erstmal ausreichend.

    Scheinbar kann man sich das Bedienteil und das LSA Modul auch sparen und direkt auf die Homevent zugreifen, in dem man direkt auf das Kabel geht. Einige hier im Forum haben das wohl so gemacht, aber eine richtige Dokumentation habe ich hierfür nicht gefunden. Außerdem habe ich das LSA Modul bereits und sehe keine Chance das auch nur annähernd zum ursprünglichen Preis wieder los zu werden. Daher kann ich es auch einfach verbauen.

    Zitat von ThorstenGehrig Beitrag anzeigen
    Eigentlich kein Hexenwerk.
    Der Arduino-Code sollte auch überschaubar sein...
    Sorry - soweit erstmal ein Gedankenspiel.
    Ich denke da muss ich einer der Gruppe selbst ein bisschen Zeit nehmen - dann kriegen wir das zusammen hin.
    Ich dachte mir schon, dass es für jemand mit etwas Ahnung von der Materie kein großes Problem darstellen sollte. Für mich als absoluter Anfänger auf dem Gebiet wäre es für ein einmaliges Projekt allerdings viel zu aufwändig, mich in das ganze Einzuarbeiten. Da bin ich lieber bereit, etwas Geld zu investieren, falls mir das jemand als fertig verlötete und programmierte Platine liefern würde.

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Ich erlaube mir mal einen Cross-Post:
    https://knx-user-forum.de/diy-do-you...tml#post408068

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • Mag Gyver
    antwortet
    Jawohl der Code von htwg funktioniert.

    Leider kann der Code nicht zwischen den Gruppenadressen unterscheiden, deshalb habe ich diesen Code etwas modifiziert und vielleicht hilf dieser weiter.

    Und danke htwg für deine Mühen!

    Ich stand selber auch auf dem Schlauch, wie das mit dem Empfangen von Gruppenadressen gehen sollte.

    Code:
    ////////////////////////////////////////////////////////////
    // KNX Project - HN 
    // Receive Grouptelegrams and turn on/off coffee or doorbell
    //
    // Works with Arduino UNO (only tested with SMD-Edition)
    // Only one serial port is needed, no debug outputs! Don't add Serial.println
    // After Upload the sketch you have to disconnect the Arduino UNO from PC and shortcut the ICSP1 Pin 5 with ICSP1 Pin 6, Reset the Arduino Uno
    //////////////////////////////////////////////////////////
     #include <KnxTpUart.h>
     // Initialize the KNX TP-UART library on the Serial port of Arduino Uno
    // and with KNX physical address 1.1.16
    KnxTpUart knx(&Serial, "1.1.16");
     //Outputs
    int led = 13;
    int coffee = 12;
    int doorbell = 11;
     void setup() {
      Serial.begin(19200);
      UCSR0C = UCSR0C | B00100000; // Even Parity
       knx.uartReset();
       //The Group Adresses you want to listen too
      knx.addListenGroupAddress("0/0/1");
      knx.addListenGroupAddress("2/5/0");
       //Output pinMode
      pinMode(led, OUTPUT);
      pinMode(coffee, OUTPUT);
      pinMode(doorbell, OUTPUT);
    }
     
    void loop() {
      //Only wait for an Serial Event
    }
     void serialEvent() {
      //Start Serial Event
      digitalWrite(led, LOW);   // turn the LED off (LOW is the voltage level)
      delay(200);
      digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(200);
      digitalWrite(led, LOW);   // turn the LED off (LOW is the voltage level)
      delay(200);
       //Get Serial Event
      KnxTpUartSerialEventType eType = knx.serialEvent();
       //Check Serial Event
      if (eType == KNX_TELEGRAM) {
        KnxTelegram* telegram = knx.getReceivedTelegram();
        // Here you have the telegram and can do whatever you want
        
        int main = telegram->getTargetMainGroup();                           // Get TargetMainGroup
        int middle = telegram->getTargetMiddleGroup();                       // Get TargetMiddleGroup
        int sub = telegram->getTargetSubGroup();                             // Get TargetSubGroup
        int TargetGroupAddress(main*2048 + middle*256 + sub);                // Create TargetGroupAddress
        
        //Turn on/off the doorbell "0/0/1"
        if ((TargetGroupAddress == 1) && (telegram->getFirstDataByte() == 0)) {
          digitalWrite(doorbell, LOW);
        }  
        if ((TargetGroupAddress == 1) && (telegram->getFirstDataByte() == 1)) {
          digitalWrite(doorbell, HIGH);   
        }
        //Turn on/off the coffee "2/5/0"
        if ((TargetGroupAddress == 5376) && (telegram->getFirstDataByte() == 0)) {
          digitalWrite(coffee, LOW);
        }
        if ((TargetGroupAddress == 5376) && (telegram->getFirstDataByte() == 1)) {
          digitalWrite(coffee, HIGH);
        }
      } 
      else {
        //Unknown Event: Make Trouble!
        for (int i = 0; i < 10; i++) {
          digitalWrite(led, HIGH);     // turn the LED on
          delay(30);
          digitalWrite(led, LOW);      // turn the LED off
          delay(30);
        }
      }
    }
    Grüße

    Mag Gyver

    Einen Kommentar schreiben:


  • Rasmus7700
    antwortet
    Zitat von ThorstenGehrig Beitrag anzeigen
    Hi,
    @Rasmus7700:
    Sorry for my late reply.
    which version of the Library do you use? The "old" DKA-One - or the new one?
    With with Arduino? The referred comment from myself does not apply to the "new" Version.
    You can find the new one here:
    https://bitbucket.org/thorstengehrig...knx-user-forum

    @DavidB:
    Ich habe die neue Version selbst im Einsatz an einem RFID Leser - und keine Probleme.
    Die letzen Änderungen haben auch keinen Einfluss auf irgendwelche dinge die verspätet auftreten... daher: wenn es am Anfang läuft - sollte es immer Laufen (oder du hast was in deinem Code der nicht passt).
    Vielleicht einfach mal ein ganz simples Test-Programm laufen lassen: alle 60 Sekunden ein Telegram schicken und danach 60 Sekunden warten...

    Gruß
    Thorsten
    Hello Torsten - also sorry from here - forgot the answer

    No it was a version from here :
    https://bitbucket.org/dka/arduino-tpuart

    I've downloaded the version you linked, i will try that - i'll give response if it works

    Thanks alot

    EDIT:
    I've used the new library, it seems a bit better, but not good.... When starting the Example "GroupWrite" and only change input pin to A0 upload, and monitor i get:
    Code:
    TP-UART Test
    UCSR1A: 100010
    UCSR1B: 10011000
    UCSR1C: 100110
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    Successfully sent: 0
    This results in 2 replies in the Group Monitor in ETS4....
    Sometimes it does send, but not that often.... please help

    Einen Kommentar schreiben:


  • htwg
    antwortet
    Zitat von Andi99 Beitrag anzeigen
    Hallo,
    Als nächsten Schritt habe ich gestern den Code von htwg/Pascal auf meinem uno getestet, leider ohne Erfolg.
    Der Code ansich funktioniert bei mir auf dem Uno ohne Probleme.
    Achte darauf, dass nach dem übertragen des Sketches das USB Kabel wieder entfernt werden muss und dann evtl der Uno noch mal kurz Stromlos gesetzt werden sollte. Der GND-PIN muss ebenfalls zwischen Uno und KNX verbunden sein wegen dem Potenzialausgleich.

    Als Fehlersuche hilft evtl auch der Bus/Gruppenmonitor in der ETS Software.

    Zur Debugausgabe/Fehlerausgabe habe Ich inzwischen an den Arduino ein Nokia 5110 LCD Display angeschlossen. Man bekommt es aus ebay China für unter 3€ und kann es leicht über Digitale I/O ansprechen. So kann man leicht den fehlenden zweiten seriellen Port kompensieren.

    Viel Erfolg ;-)

    Einen Kommentar schreiben:


  • mode
    antwortet
    Zitat von DavidB Beitrag anzeigen
    Ich hab leider kein Oszi. Aber vielleicht ist das eine gute Ausrede sich mal ein neues Spielzeug zuzulegen.
    Wenns günstig sein soll mal hier reinschauen:
    http://www.mikrocontroller.net/topic/249628#new

    Einen Kommentar schreiben:


  • DavidB
    antwortet
    Hi Mode,

    danke für die Rückmeldung.

    Zitat von mode Beitrag anzeigen
    result von groupWrite2ByteFloat bleibt immer gleich?
    Ja, result ist immer gleich. Aber mir ist jetzt erst aufgefallen, dass es immer false zurückgibt. Sogar zu dem Zeitpunkt, an dem ich noch Telegramme im GA-Monitor sehe. Gibt es da irgendwie eine Art von Debug-Log oder so?

    Zitat von mode Beitrag anzeigen
    Tritt das Problem auch bei anderen groupWrite (also nicht Float) Methoden auf?
    Ja, der Fehler tritt bei allen GroupWrite-Typen auf.

    Zitat von mode Beitrag anzeigen
    Kannst du mit dem Oszi an der Seriellen zwischen Arduino und TP Uart messen ...
    Ich hab leider kein Oszi. Aber vielleicht ist das eine gute Ausrede sich mal ein neues Spielzeug zuzulegen.

    Einen Kommentar schreiben:


  • Andi99
    antwortet
    KNX Nachrichten Empfangen funktioniert nicht

    Hallo,

    das Senden auf den Bus funktioniert.
    Als nächsten Schritt habe ich gestern den Code von htwg/Pascal auf meinem uno getestet, leider ohne Erfolg.
    Angepaßt habe ich Serialadresse und die Gruppenadresse.
    Vom Bus aus habe ich ein Bit 0 und 1 gesendet aber die LED 13 blieb immer aus.
    Was mache ich falsch?

    Gruß
    Andy

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi 2ndsky,
    laut dem verlinkten Post braucht man nur
    * Pin1: Binäreingang (HIGH = Filter fehler)
    * Pin2: Binäreingang (HIGH = Störung)
    * PIN3: Digital bzw. Analogausgang: Homevent Aus (0-3V) / EIN 6-24 Volt
    Frage= ist das nur ein/aus oder 6-24 Volt bedeuten Leistung x bis y?
    * PIN4: Analogausgang 0-10Volt => Volumenstrom 0-100%
    (daraus ergibt sich eigentlich das PIN 3 nur AUS/AN ist, richtig?)

    Galvanische Trennung ist imho pflicht.

    Daraus ergibt sich:
    * Einfacher Arduino
    * BCU
    * PIN 1/2 Arudino Digitaleingang über Optokoppler
    * PIN 3 Arduino Digitaleingang über Optokoppler
    * PIN 4 über Arduino PWM-Ausgang (z.B. http://www.cctools.eu/download/Anleitungen/1420.pdf )

    Eigentlich kein Hexenwerk.
    Der Arduino-Code sollte auch überschaubar sein...
    Sorry - soweit erstmal ein Gedankenspiel.
    Ich denke da muss ich einer der Gruppe selbst ein bisschen Zeit nehmen - dann kriegen wir das zusammen hin.

    Gruß
    Thorsten

    Einen Kommentar schreiben:

Lädt...
X