Matrix friert ein nach ein paar Sekunden

  • Ich habe mir vor kurzem eine 16x16 ws2812b matrix gekauft und will diese mit Jinx steuern, was eigentlich gut funktioniert, bis auf das Problem das die Matrix nach 2-60s einfriert und die Vorschau in Jinx weiterläuft. Wenn ich jinx dann neustarte läuft die Matrix wieder kurz und das gleiche passiert wieder...


    Hat jemand eine Ahnung an was das liegen könnte?


    ps: das ist mein erster Beitrag, wenn ich zu wenig infos gebe, falsches Vokabular benutze,.. macht mich gerne darauf aufmerksam. :)

  • Hallo Synx,


    das ist vielleicht wirklich ein bisschen zu wenig Info um hier zu helfen.

    Was hast du denn für ein Netzteil für deine Matrix benutzt ?

    Da Jinx ja weiterläuft, kann fast nur was mit der Kommunikation nicht so ganz passen.

    Es scheint lt. deinem Schreiben auch nicht immer an der gleichen Stelle zu sein, oder ?

    Falls du ein Multimeter zu Hand hast, kannst du ja mal die Spannung im Betrieb der Matrix beobachten.

  • Als Netzteil benutze ich ein Stromanschluss mit 10V. Ich habe mal mein Multimeter genommen und gemessen, wenn die Led Matrix einfriert verändert sich davor und danach nichts mit der Spannung.

    Und nein, es ist nicht immer an der gleichen Stelle. Im Durchschnitt läuft die Matrix immer 5-60s und friert dann ein.


    Als Controller benutze ich einen Arduino Uno.



    Mfg und sorry für die späte Antwort

  • Als Netzteil benutze ich ein Stromanschluss mit 10V. Ich habe mal mein Multimeter genommen und gemessen, wenn die Led Matrix einfriert verändert sich davor und danach nichts mit der Spannung.

    Ein Multimeter ist viel zu langsam dafür. Da müßtest du schon mit einem Oszilloskop messen.

    Wie kommst du von 10V dann auf die nötigen 5V für die WS2812? Spannungsregler ICs sind kurzschlussfest und begrenzen den Strom, um sich selbst zu schützen.

    Bei Schaltreglermodulen aus China ist die Induktivität oft gerenzwertig unterdimensioniert, was deren Sättigungsstrom angeht. Auch die Pufferelkos sind auf Kante genäht. Dazu dann noch längere zuleitungen mit geringem Querschnitt und keine weiteren Pufferkondensatoren und es kommt zu derartigen "unerklärlichen" Effekten.

  • Als Controller benutze ich einen Arduino Uno.

    Welche Baudrate hast Du eingestellt...? - Ich vermute hier das Problem...


    Bei 256 Pixeln (16 x 16) á 3 Byte hast Du 768 Byte pro Frame, sind dann (mit Start- und Stopp-Bit) 7.680 Bits pro Frame. Jinx! gibt m.W. mit 30 fps aus, also dann 230.400 Bits in der Sekunde - Minimum nötige Übertragungsrate, da sind ja meist kleine Pausen zwischen den Bytes...


    Wenn der Arduino jetzt auf die üblichen (zumindest bei mir war das immer default) 115.200 Bit/s eingestellt ist, kann das nicht funktionieren.


    Ich hatte das mal bei einer anderen Konstellation, mit vvvv "zu schnell" Daten ausgegeben. Das funktioniert ne Zeit lang, die werden ja gepuffert, und je nach Effekt fällt es einem nicht unbedingt auf, dass das auf der Matrix "hinterher hinkt".


    Aber irgendwann, nach ein paar Sekunden, ist der Buffer dann voll, und die Ausgabe streikt.


    Das klingt hier so ähnlich, Puffer läuft voll, irgendwann geht "seriell" nix mehr raus, Jinx! bekommt davon aber nix mit und läuft munter weiter...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Wie kommst du von 10V dann auf die nötigen 5V für die WS2812? Spannungsregler ICs sind kurzschlussfest und begrenzen den Strom, um sich selbst zu schützen.

    Richtig, ich hab einen Spannungsregler benutzt. Inzwischen benutze ich aber ein Usb Netzteil, sprich 5V. Somit brauche ich keinen Spannungsregler mehr. Trotz dessen ist das Problem noch immer da.

  • Pesi hat das Problem ja sehr schön erklärt. Hatte ich so auch nicht auf dem Schirm.

    Merkst du denn bei unterschiedlichen Baudraten unterschiedlicche Zeiten, bis zum Einfrieren? Also läuft es mit höherer Baudrate länger?

  • Ich hab heute wieder bisschen rumprobiert und hab rausgefunden das man die Baud Rate in dem Gladiator Script ändert und nicht im Seriellen Monitor.:pinch:



    Nur um sicher zu gehen, das ist der Arduino-Gladiator Code:


    --------------------------------------------------------------------------------------


    void setup()

    {


    // Set data pin as output

    DATA_DDR |= (1 << DATA_PIN);


    // Initialize UART

    UCSR0A |= (1<<U2X0);

    UCSR0B |= (1<<RXEN0) | (1<<TXEN0) | (1<<RXCIE0);

    UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00) ;

    UBRR0H = 0;

    UBRR0L = 1; //Baud Rate 1 MBit (at F_CPU = 16MHz)


    ptr=display_buffer;


    //Enable global interrupts

    sei();

    }


    --------------------------------------------------------------------------------------


    Ergo habe ich eine Baud Rate von 1 Millionen, sprich ich hatte die ganze Zeit schon genug. Versteh ich das Richtig?



    Beim Testen ist dann das passiert:


    -Wenn ich die BR unter 1 gestellt hab ist kein vernünftiges Bild angekommen, nur zufällige Farben.


    -BR über 1 hat auch keinen Unterschied gemacht zum normalen Wert, die Matrix friert noch immer Zufällig ein.


    -Bei BR 2 und alles drüber das gleiche Ergebnis wie bei >= 1.




    Vielleicht hat das hier auch was zu sagen.


    Wenn die Matrix einfriert, muss ich Jinx! immer neu starten. Wenn die Matrix eingefroren ist und ich "Start Output" einfach an und aus mach kommt die Fehlermeldung:


    Error

    Failed to open output. Please check your devices.
    Maybe a com-port is not available anymore or in double use.

  • Ja, das mit dem Fehler deutet darauf hin, dass der Buffer (im Windows) überläuft. Da sind noch Daten drin, deswegen ist der noch "in use"...


    Was hast Du denn in Jinx! eingestellt als Baudrate...? - Das sind ja zwei Stellen, Du musst einstellen, wie schnell der Sender sendet, und der Empfänger muss dazu passen, also auf dei selbe Baudrate eingestellt sein...


    d.h., wenn Du im Arduino-Script auf 1 Mbit stellst, aber in Jinx! auf 250.000*, dann kann das auch nicht funktionieren - dann kommt vielleicht mal zufällig ein Bitmuster an, das der Empfänger irgendwie als Daten "erkennt", also eben "kein vernünftiges Bild angekommen, nur zufällige Farben".


    250.000 kann bei den berechneten 230.400 benötigten Bit/s auch schon knapp werden, eben weil die Bytes meistens nicht "dicht an dicht" raus geschickt werden...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!