Raspberry PI GPIO-Ausgang kann RGBW-Streifen nicht über N-FETs steuern (immer auf 100 %)

Ich versuche, ein Beleuchtungssystem zu bauen, mit dem ich einige RGBW-Streifen mit einem Raspbery PI Zero rund um die Uhr steuern kann.

Ich bin ein Software-Typ, also bin ich ziemlich neu in der Elektronik, abgesehen von ein bisschen Arbeit an Autos und dem Verkabeln der seltsamen Stecker / Lampen. Es gibt ein paar Tutorials zum Verdrahten von RGB-Streifen mit PI und Arduinos, und sie sind alle ziemlich ähnlich, indem sie den GPIO verwenden, um Mosfets auszulösen, um die für den Streifen erforderlichen 12 V bereitzustellen.

Ich habe hauptsächlich dieses Tutorial hier befolgt , aber einen zusätzlichen Mosfet für den weißen LED-Pin hinzugefügt.

Hier ist mein Schaltplan (gelbe Drähte => weiß):

Geben Sie hier die Bildbeschreibung ein

Ich habe 4 IRLB8721PBF 30 V, 62 A N-Kanal-MOSFETs, 5 Meter 12 VDC 5050 RGBW-Streifen (Ebay-Spezial, nicht viele Daten) verwendet. Der GPIO ist mit dem Gate verbunden, der RGBW-Streifenkanal ist mit dem Drain verbunden und die 12V- mit der Source.

Ich habe auch Pigpiod auf dem PI mit Methode 1 installiert .

Wenn alles läuft, leuchtet es:

Geben Sie hier die Bildbeschreibung ein

Ich finde jedoch, dass es immer scheint, voll beleuchtet zu sein. Wenn ich versuche, die Pegel über die GPIO-Pins mit Befehlen wie diesen zu ändern (ausschalten):

pigs p 17 0
pigs p 22 0
pigs p 24 0
pigs p 27 0

oder dies (machen Sie es rot):

pigs p 17 255
pigs p 22 0
pigs p 24 0
pigs p 27 0

Im Grunde passiert nichts und es bleibt auf allen Kanälen bei 100% Leistung.

Meine Frage: Wie soll ich das Debuggen dieses Problems angehen? Ich habe nur ein billiges Multimeter.

Außerdem möchte ich mein Verständnis noch einmal überprüfen.

Zuerst dachte ich, Mosfets würden die Gate-Spannung verwenden, um die größere Source / Drain-Spannung zu "schalten". Wenn also der Ausgang des GPIO einen Schwellenwert erreicht, schaltet der Mosfet ein und die 12 V gehen von Source zu Drain.

Ich kann nicht sehen, wie das das (analoge?) Himbeer-PI-Signal vom GPIO in etwas anderes als 12 V EIN oder AUS umwandeln würde.

Nimmt der Mosfet die Gate-Spannung und verstärkt die 3,5 V proportional auf 12 V? Ein 1,75-V-Ausgang (ein Wert von 127) würde also 6 V erzeugen, und somit wäre dieser Kanal „halb“ hell? (Falls es geklappt hat!)

Bearbeiten

Ich habe nur ein einzelnes Mosfet mit einer einzigen Farbe auf dem RBG verdrahtet,

Der Mittelstift ist mit dem RGB R-Kanal verbunden. Der rechte Pin ist auf 12V- (Masse)

Das RGB+ ist 12V+

Wenn ich jetzt den linken Pin auf 12 V- (Masse) berühre, sollte er sich ausschalten, oder? Dies simuliert eine NIEDRIGE Ausgabe (entschuldigen Sie das schreckliche Farbdiagramm):

Test 1 (sollte aus sein):

Geben Sie hier die Bildbeschreibung ein

Test 2 (sollte eingeschaltet sein):

Geben Sie hier die Bildbeschreibung ein

Was ich bekomme, ist ein bisschen ein Durcheinander. Es blinkt ein und aus. Manchmal ist es konstant aus, aber oft konstant ziemlich niedrig. Dann ist es plötzlich voll AN, dann flackert es.

Es schaltet sich meistens aus, wenn die Masse als Quelle dient, und häufiger ein als aus, wenn Masse auf +12 V (oder +3,3 / 5 V-Ausgang am PI, nicht GIPO) liegt, aber es ist überall. Oft geht es nicht einfach konstant sehr niedrig aus, aber selbst dann verhält es sich so, als ob es eine lockere Verbindung oder so etwas gibt - obwohl ich versucht habe, alle Verbindungen zu soldaten.

Mir fällt nichts ein, was dies verursachen könnte, aber zwielichtiger Mossfet? Ich könnte Probleme beim Löten der Verbindung verursacht haben.

Können Sie V von GPIO über jede Stufe bis zur LED messen? Normalerweise ist die Helligkeit PWM-gesteuert, nicht analog (verlustbehaftet zu heiß)
Ich werde versuchen, einige Spannungsmessungen an verschiedenen Stellen durchzuführen. Sie haben Recht, es ist PWM-gesteuert (dank der anderen Antworten). Würde PWM mit einer Einschaltdauer von 50% die Hälfte der Spannung auf einem Multimeter ergeben?
Wenn alle Farben eingeschaltet sind, bedeutet dies, dass das Tor die ganze Zeit hochgezogen wird. Überprüfen Sie Ihre Verkabelung und Mosfet-Pinbelegung und stellen Sie sicher, dass der GPIO-Ausgang niedrig ist (für Aus).
Die erste Frage, die Sie feststellen müssen, ist, ob der LED-Streifen immer noch leuchtet, wenn er vom Pi entfernt wird. Wenn ja, sind Ihre FETs (zumindest teilweise) kurzgeschlossen oder Sie haben ein Verdrahtungsproblem. Wenn nicht, haben Sie anscheinend noch keine Kontrolle über die Pi-GPIOs, haben die Pins falsch identifiziert oder möglicherweise das Pi beschädigt.
Ich habe den PI entfernt und getestet (nur ein einzelner MOSFET und Kanal). Es ist sehr flackernd und inkonsistent, selbst nach dem Löten der Verbindungen. Siehe Bearbeiten für Testschema in Bearbeiten.

Antworten (2)

Ich bin vielleicht etwas verwirrt, aber wahrscheinlich, weil Sie zuerst verwirrt waren.

Ich habe 4 IRLB8721PBF 30 V, 62 A N-Kanal-MOSFETs verwendet,

Sie sind nicht NPN (wie im Titel). Das sind MOSFETs :)

Wie soll ich das Debuggen dieses Problems angehen?

Trennen Sie das RPi überhaupt. Versuchen Sie, das Gate eines beliebigen Mosfet mit der Quelle zu verbinden. Die LEDs sollten ausgehen. Wenn sie mit +12 verbunden sind, sollten sie weitergehen. Es sei denn, ich habe deinen Schaltplan falsch verstanden.

Wiederholen Sie dann die gleiche Fütterung mit einfachem HIGH / LOW-Pegel vom RPi (nicht PWM). Dies hilft zu verstehen, ob Ihre Pins die LEDs über Mosfets steuern.

Vergessen Sie nicht, Klimmzüge an Pins auszuschalten, wenn Sie welche haben.

Hoppla, ich habe "N Channel" im Titel mit NPN verwechselt ... korrigiert. Darf ich fragen, was Sie mit "Klimmzüge an Stiften ausschalten, wenn Sie welche haben" meinen? Ich bin mir nicht sicher, ob ich sie habe!
Ah, sorry - ich bin hier falsch, Klimmzüge spielen keine Rolle, wenn Ihre Pins richtig für die Ausgabe konfiguriert sind. Es wäre gut, den Anschluss einer kleinen LED + 1 kOhm-Widerstand zwischen Pin und Masse zu testen. (anstelle des Bandes mit Transistor)
Ich habe versucht, das Gate zu trennen und mit der Quelle / Masse zu verbinden. Es ging los ... manchmal. Es scheint wild inkonsistent zu sein, flackert an und aus und an. Es schaltet sich meistens aus, wenn die Masse als Quelle dient, und häufiger ein als aus, wenn Masse auf +12 V (oder +3,3 / 5 V-Ausgang am PI, nicht GIPO) liegt, aber es ist überall. Oft geht es nicht einfach konstant sehr niedrig aus, aber selbst dann verhält es sich so, als ob es eine lockere Verbindung oder so etwas gibt - obwohl ich versucht habe, alle Verbindungen zu soldaten.
Dieses Flackern ist eher verdächtig :) Wenn Sie sich sicher sind, was die Anschlüsse angeht, dann ist es vielleicht an der Zeit, die 12-V-Stromversorgung zu überprüfen? ZB anderes Band (sagen wir blau) parallel direkt daran anschließen und schauen ob beide gleichzeitig flackern oder nur das rote...
Gute Idee, ich habe nicht daran gedacht, das Netzteil (und den Streifen) zu testen, indem ich einfach die 12 V direkt anschließe.
Ja! Es funktioniert! Ich überprüfte die Stromversorgung und identifizierte einen Kabelbruch (einen, den ich gerettet habe, weil er einen festen Kern hatte und so leicht in die Stifte passte). Das verursachte das stärkste Flackern. Ich habe auch alles wieder auf das Steckbrett gelegt und aufgebaut, wobei jede Stufe die Komplexität erhöht (nur Einzelkanalsteuerung) und festgestellt hat, dass es mit einem frischen MOSFET funktioniert. Der MOSFET, den ich (sehr schlecht) gelötet hatte, führte tatsächlich dazu, dass immer etwas Strom durchfloss, sodass selbst das Schreiben eines Pins auf Low oder das Anschließen an Masse immer noch etwa die halbe Helligkeit hatte. Austausch von MOSFETs auf dem Steckbrett behoben.
Herzlichen Glückwunsch! Ich habe keine genauen Angaben zu Ihrem gelöteten Design erhalten, aber normalerweise sollten Sie damit rechnen, dass durch ungewaschenes Flussmittel auf der Leiterplatte und den Komponenten etwas austritt (es sei denn, Sie haben Kolophonium verwendet, aber es ist kein sehr praktisches Zeug) - daher ist das Waschen und Trocknen ziemlich wichtig. .. Auch in einigen Fällen (z. B. starkes EM-Rauschen, lange Drähte) wären leistungsstarke NPN-s anstelle von MOSFETs weniger betroffen, da sie von Strom und nicht von Potenzial angesteuert werden.

Zuerst dachte ich, Mosfets würden die Gate-Spannung verwenden, um die größere Source / Drain-Spannung zu "schalten". Wenn also der Ausgang des GPIO einen Schwellenwert erreicht, schaltet der Mosfet ein und die 12 V gehen von Source zu Drain.

WAHR. (Eigentlich fließt nicht die Spannung, sondern der Strom.)

Nimmt der Mosfet die Gate-Spannung und verstärkt die 3,5 V proportional auf 12 V? Ein 1,75-V-Ausgang (ein Wert von 127) würde also 6 V erzeugen, und somit wäre dieser Kanal „halb“ hell? (Falls es geklappt hat!)

FALSCH.

pigs pBefehl steuert einen PWM-Ausgang. Sie sollten überprüfen, ob Ihre Ausgänge richtig als PWM konfiguriert sind (ich bin mit Himbeeren nicht vertraut). Wenn Sie das PWM-Tastverhältnis steuern, indem Sie es von 0 auf 255 (== 0 % bis 100 %) ändern, steuern Sie die Zeit, in der Ihr Farbkanal beleuchtet werden soll. Wenn Ihre PWM-Frequenz 50 kHz (Periode von 20 us) und Ihre Einschaltdauer 64 (etwa 25 %) beträgt, sollte der Kanal für 25 % * 20 us = 5 us leuchten und für die restlichen 15 us ausgeschaltet sein. Auf diese Weise wird ein LED-Streifen gedimmt. So weit, ist es gut.

Die andere zu berücksichtigende Sache ist die Ansteuerung Ihres MOSFET. Ich denke da liegt dein Problem. Bei Hochfrequenz-PWM sollte ein Hochstrom-Gate-Treiber verwendet werden, um den MOSFET richtig anzusteuern. Dies liegt an seiner Eingangskapazität (und auch an der Rückwärtsübertragungskapazität).

Versuchen Sie zunächst, die Raspeberry auf eine niedrigere PWM-Frequenz einzustellen. Alles über 100 Hz ist für das Flackern des für das Auge sichtbaren Lichts in Ordnung, und über 18-20 kHz wird kein Ton erzeugt, den der Mensch hören kann. Dann könnten Sie einige MOSFET-Stromtreiber für mindestens 1,5 A besorgen und sie zwischen dem Pi und dem Gate jedes MOSFET anschließen.

Ein Oszilloskop wäre hier eine große Hilfe. ;)

Ah, ich dachte, es könnte eher ein digitales Signal mit unterschiedlicher Frequenz als ein analoges Signal mit unterschiedlicher Amplitude sein (daher das Fragezeichen nach "Analog?"). Das macht das Debuggen ohne Zugriff auf ein Oszilloskop mühsam. Sollte das Setzen des PWM-Ausgangs auf 0 nicht alles ausschalten, unabhängig von der Konfiguration?
Ja, wenn PWM richtig konfiguriert ist und auf 0 eingestellt ist, sollten Sie auf diesem Raspberry-Pin 0 V lesen. Trennen Sie den MOSFET, während Sie dies messen, um sicherzugehen, ob das Problem mit dem Pin-Ausgang oder der MOSFET-Verbindung zusammenhängt.
Eine Sache, die mir aufgefallen ist, sind die Drähte des Steckbretts sehr dünn (und ich hatte einige Probleme mit schlechten Verbindungen). Angesichts der Tatsache, dass das RBG-Array etwa 72 W hat, ist es möglich, dass das Steckbrett Probleme mit höheren Strömen verursacht? Ich zögere jedoch, Dinge zusammen zu löten, da es nicht funktioniert!
Überprüfen Sie vor dem Löten zuerst Ihre Raspel. Konfiguration, schließen Sie eine Low-Power-LED mit Widerstand direkt an Rasp an. Wie @RodionGorkovenko vorgeschlagen hat, machen Sie es DIM mit einem PWM-Wert von pigs pund wenn alles funktioniert, können Sie löten.
Ich habe es geschafft, eine LED und einen Widerstand zum Laufen zu bringen. Ich habe auch den PI entfernt und einen einzelnen MOSFET und Kanal getestet. Es ist sehr flackernd und inkonsistent, selbst nach dem Löten der Verbindungen. Siehe Bearbeiten für Testschema.