SPI geht plötzlich nicht mehr. Kaputt?

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo zusammen,

    ich betreibe einen 3D-Drucker mit Hilfe eines Raspberry 4 in einem selbstgebautem Gehäuse. Für die Gehäuse-Beleuchtung wird über einen WS2812b-Led-Streifen betrieben, der ein extra 5V Netzteil (Meanwell LPV-60-5) hat. Der Streifen hat ca. 40 LEDs. Der Pi4 nutzt das originale Netzteil. Die Datenleitung des LED-Streifens habe ich an gpio10 angeschlossen da pwm auf gpio18 schon belegt ist durch eine Lüftersteuerung. Auf gpio 10 ist SPI geschaltet. Das Pythonskript zur LED-Steuerung nutzt die rpi_ws281x Bibliothek. Kurz zur Verkabelung. "common ground" und "sternförmige masseverteilung" habe ich beachtet. Die Masse vom Pi liegt mit der vom LED-Netzteil zusammen.


    Eine ganze Zeit lang hat alles normal funktioniert und plötzlich bemerke ich das die LEDs nicht mehr leuchten. Von jetzt auf gleich. Dabei habe ich nichts gemacht, auch kein Update. Einen Hinweiß darauf das sich ein Problem anbahnt gab es allerdings ein paar Stunden vorher. Für den Drucker, der über ein USB-Kabel angeschlossen ist (serielle Schnittstelle), wurde in Octoprint plötzlich als Status sowas wie "warten auf serielle verbindung" angezeigt. Jedenfalls musste ich den pi neustarten damit der Drucker wieder über die serielle Schnittstelle erkannt wird. Jedenfalls hatte ich mich bis dahin nicht weiter gewundert. Das Licht ging ja noch. Als es dann irgendwann ausfiel hab ich etwas hin und her probiert. Dabei ist folgendes aufgefallen. Wenn man das USB-Kabel normal am Drucker anschließt und mit der Seite die am Pi angeschlossen wird, mit dem Stecker die Masse der USB-Buchse am Pi berührt, ändert sich die Farbe der ersten LED auf dem Streifen. Jedemal wenn man nochmal gegen das Gehäuse tippt ändert sich die Farbe wieder. Vielleicht ist das auch nicht der Grund aber es ist schon irgendwie sehr komisch. Nur weil man die masse vom Pi mit der des Druckers verbindet, gelangt ein Signal zur LED-Leiste. Die sind doch gar nicht direkt verbunden.


    Jetzt frage ich mich jedenfalls ob es eine Möglichkeit gibt "einfach" zu testen ob ich den Pin geschrottet habe und wenn ja ob ich das beim nächsten mal besser anschließen kann, so dass es nicht wieder passiert. Vielleicht den Datenpin mit einem npn-transistor absichern? Ich bin da echt nicht so belesen leider. Hat jemand eine Idee wie ich die LED-Leiste wieder zum Laufen bekomme? Die scheint jedenfalls heile geblieben zu sein. Manchmal leuchtet auch eine LED auf die weiter hinten liegt. Das sie nicht leuchtet scheint also daran zu liegen das kein Steuer-Signal ankommt.


    Kann es auch sein das es ein übersprechen vom USB-Kabel des Druckers und der Datenleitung der LED-Leiste gibt? Die liegen genau nebeneinander. Das USB-Kabel ist aber geschirmt, nur die Datenleitung nicht, ist halt ein Kabel aus dem KFZ-Bereich.


    Ich bin echt dankbar für jeden kleinen Ratschlag :)

  • Braucht man für die Streifen nicht Pegelwandler jar ?

    JAAAAAAAAAAAAA


    man kann es nicht oft genug anmerken, es könnte auch zufällig mal von Anfang an funktionieren und später aussetzen und es soll verschiedene Versionen vom Stripe gehen von Version 01 bis 05.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Nabend und danke schonmal für die schnelle Rückmeldung. Ich hatte damals auch viel gelesen bis ich rausgefunden habe, dass ich die ws2812 mit der neueren FIrmware habe, welche als high signal schon mit den 3,3V vom pi auskommt. Nicht so wie bei den älteren, wo das Steuersignal noch 5V benötigt. Allerdings wäre es ja mal einen Versuch wert einen Wandler anzuschließen

  • GPIOs kannst du ja prüfen, indem du sie an- und ausmachst.

    Sonst:

    Gemeinsame Masse nicht mehr gegeben ?

    Braucht man für die Streifen nicht Pegelwandler jar ?

    Ich hab mal gemessen, die gemeinsame Masse ist noch vorhanden, falls das als Frage gemeint war?

  • Moinsen marcel1704


    Ich fange mal so an: Der erste Link wenn man nach WS2812 sucht macht hier schon eine klare Aussage.
    Theoretisch macht es rein von den Logikpegeln nichts ob du diese mit 3,3 V GPIO Out oder 5,0 V GPIO Out ansteuerst. Denn der HIGH-Pegel beginnt bei bei beiden Pegelspannungen weit unter 3 Volt. Also müsste der Pegelzustand richtig erkannt werden, egal mir welcher realen Pegelspannung du arbeitest. Jetzt kommt aber das große "ABER" ! . Bei einer Hand voll dieser LED Module macht das noch nichts. Erst wenn die Anzahl beträchtlich ansteigt, bzw auch die Leitungslängen zunehmen schlägt hier das Ohmsche Gesetz zu. Je länger die Leitungen bei relativ kleinem Leitunsgsquerschnitt werden um so mehr bricht auch die Spannung auf Grund des Widerstandes zusammen. Was dann wieder mit einer höheren Strombelastung der GPIOs einher geht.

    GPIOs kann man mit einer einfachen LED mit Vorwiderstand 330 - 360 Ohm testen ob die überhaupt noch funktionieren. Aber auch das wurde schon gesagt und geschrieben.

    Das viel größere Problem ist, wie hängen die Stromkreise RasPi Netzteil und dieses Schaltnetzteil in deinem heimischen Stromnetz zusammen ?
    Gemeinsame Masse kann gut sein, wenn man weiß wie das ganze auch ausserhalb deines Druckers verstrippt ist. Aber grundsätzlich wenn in einem angesteuerten Sekundärstromkreis mit höheren Spannungen betrieben wird sollte man auf eine galvanische Trennung zB via Optokoppler setzen.
    Wenn du die GPIOs zur Ansteuerung nicht mit einer Verpolschutzdiode oder eine Z-Diode zur Spannungsbegrenzung betreibst kann ein minimaler extrem kurzer Störimpuls aus den Sekundärstromkreis kommend vom Schaltnetzteil, was eventuelle noch diese WS2812 überleben, ungebremst auf die nur für Vin ( max Eingangsspannung der GPIOs ) 3,3 V ausgelegten GPIOs prallen und diese dann wirklich killen.

    Hier wäre dann ein flotter Optokoppler der sowohl eine galvanische Trennung wie auch eine Spannungs- oder Pegelanpassung sorgt der sichere Weg.


    Zur Not täte es auch diese Variante, jedoch ohne galvanische Trennung


    Franky

  • Franky07 Wow, danke für die sehr umfassende Antwort. Auch wenn ich noch viel dazulernen muss, hilft mir das garantiert ein paar Schwachstellen auszubessern. Gerade ich als Leihe bin über solche Tipps sehr froh. Das hilft enorm ein Grundverständnis zu entwickeln. Ergänzend zur Verkabelung: Ich habe alle Massen, auch die der 230V Netzteile mit Wagoklemmen vereint. Drucker, Raspberrynetzteil, 5V und 12V Travo sind so verbunden aber auch die Massen der Gleichstrom-Verbraucher mit niedriger Spannung. Es hängt also im Hausnetz alles an der selben Steckdose. Allerdings hab ich mal gehört, dass es trotzdem unter den Netzteilen zu Potentialunterschieden kommen kann. Stimmt das? Die Transistorschaltung von der Abbildung finde ich hilfreich. Ich werde aber auch mal versuchen eine galvanische Trennung zwischen gpio und signalatromkreis der LED-Leiste zu bauen, rein Interessehalber. Klingt auch nach einer vernünftigen Lösung. Das PWM signal vom gpio ausgehend, habe ich mit einer sehr einfachen Schaltung abgesichert, die aus einem Wiederstand und einem npn besteht weil der angesteuerte Lüfter über den 12V Travo läuft. Ich liefere gerne mal ein paar Details dazu am Montag Abend aber ich bin gerade nicht zu Hause.

  • Allerdings hab ich mal gehört, dass es trotzdem unter den Netzteilen zu Potentialunterschieden kommen kann. Stimmt das?

    absolut, erst Recht wenn Antenne im Spiel ist, sei es über Haus- und/oder Kabel-fernsehen oder über Erdung von Satellitenschüsseln über TV, AV-Receiver o.ä.

    Bei mir hat es durch ein Modulator (SNT)Netzteil sogar den Antennenverstärker zerschosssen und viele kennen das es am Antennenstecker kribbeln kann, Phasenkopplung kapazitiv, sonst würden Lügenstifte aka Phasenprüfer nicht funktionieren.

    Also ein weit entfernter Erdpunkt muss keine gute Erde/Masse sein, dort können sich tödliche Spannungen tummeln zumindest für Elektronik.

    Gerade ich als Leihe

    Laie https://de.wikipedia.org/wiki/Laie

    Ich habe alle Massen, auch die der 230V Netzteile mit Wagoklemmen vereint.

    sternförmig?

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Franky07 Darf ich fragen womit du das Schaltbild gemacht hast? Ich würde gerne für mehr Klarheit auch noch ein Schaltbild von dem Drucker hochladen.


    Kannst du mir vielleicht ein auch Beispiel zeigen, wie man das Signal vom Pi zur LED-Leiste bekommt inkl. galvanischer Trennung?


    Aber trotz so einer galvanischen Trennunng hat man doch trotzdem eine gemeinsame Masse oder liege ich da falsch? Die Masse vom Raspberry ist ja schon alleine deswegen noch mit der Masse vom 5V Netzteil (u. a. Stromversogung der LED-Leiste) verbunden weil da ja auch noch andere Dinge mit geschaltet werden. Muss man diese dann evt. alle galvanisch trennen. Was ist hier eigentlich eine aktzeptable und stabile Lösung? Ich möchte eigentlich nur, dass das Licht im Drucker wieder vom Pi gesteuert werden kann.


    Wie angekündigt, lade ich noch ein Schaltbild hoch :P

  • Moinsen


    Wenn du ein Pi besitzt kannst du wie ich in dem Beispiel die Software "!Fritzing" verwenden. Diese kann man kostenlos mit sudo apt update && sudo apt upgrade und sudo apt install fritzing installieren, inwiefern du auf dem PI eine GUI nutzt.

    Ja das Thema galvanische Trennung ist nicht ganz ohne.
    Aber es geht auch ohne gemeinsame Masseverbindung.

    Franky

  • Ich habe den vermeindlich defekten Pin jetzt gemessen. Vorher hab ich ihn auf "OUT" geschaltet da er vorher auf ALT0 Stand wegen SPI. Setze ich mit "gpio -g write 10 0" den Pin auf 0, liegt trotzdem weiter eine Spannung von 2,55V an. Setze ich den Pin auf 1, liegt ca. eine Spannung von 3,3V an. Lese ich den Status des Pins aus, steht er in beiden Fällen auf 1, selbt wenn er auf 0 geschaltet wurde. Ich kann den Pin also nicht mehr ganz abschalten weil weiter ein Potentian anliegt. Ich vermute mal der ist hin.


    Franky07 Hier nochmal der Schaltplan als PDF Schaltplan_Druckergehäuse_schem.pdf

  • Moinsen,


    Lasse das mal in der Console ( Shell )

    Um die PINs zu testen kannst du einfach ein kleines Python Proggi schreiben oder nutzen und mit python3 <name>.py aufrufen.


    Die zu testenden Pins trägst du bei PIN_LIST mit ihrer GPIO Nummer ein. Der Rest sollte selbsterklärend sein. Einfach eine LED mit Vorwiderstand, oder ein Messgerät anschließen. Das Programm zeigt an, welcher PIN als nächstes ein- und ausgeschaltet werden soll. Mit <Enter> gehts dann los.

    Franky

  • Franky07 Moinsen auch :)


    Danke für deine Unterstützung nochmal ;)


    Kann ich als LED auch einfach eine von dem ws2812-Stripe abschneiden? Habe gerade keine Andere da. Die LED ist ja dieser kleine Kasten, da schließe ich die Kontakte einfach direkt an.

  • Moinsen,

    nein das geht nicht, weil in diesen LEDs der WS2XXX ein Encoder verbaut ist, der die Steuerungübernimmt. Aber du kannst dir einen Einfachen Adapter zu einem Spannungsmesser bauen, so das du nur auf dem Pi-Board den GPIO Umstecken musst, aber der GND Anschluss gesteckt bleibt. Ob nun eine LED leuchtet, oder das Meßgerät, mal eine Spannung anzeigt dann wieder nicht, kommt schlussendlich auf das Gleiche heraus.

    Franky

  • Franky07 Ich habe gerade mit dem Skript gemessen das du vorgeschlagen hast. Es passiert genau das Gleiche. Low ist 2,5V und High 3,3V. Messe ich einen anderen Pin, zeigt dieser bei Low auch wirklich 0.0V an.

  • Post by marcel1704 ().

    The post was deleted, no further information is available.