Seltsames Phänomen

Hallo,

nach langer Zeit auch wieder mal ein Post von mir und auch gleich mit einem Phänomen, das ich mir nicht erklären kann und das mit keine Ruhe lässt.

Ich habe eine kleine Schaltung / Platine gemacht, mit der ich RGB-LED Streifen mit gemeinsamer Anode steuern will. Das Bild "schaltung.png" zeigt den Aufbau. Im Grunde sind es nur drei N-Kanal MOSFETs deren Gates mit einem 10k Widerstand gegen Masse geschaltet sind.

Verwende ich nur einen der drei Kanäle, so habe ich auf der Arduino als auch auf der "Power" Seite ein sauberes Rechtecksignal (siehe kanal_1.png und kanal_2.png). Sobald ich aber zwei Kanäle verwende, beeinflussen sich beide Kanäle gegenseitig.
Aufgefallen ist mir das durch ein 1 bis 2 Hz Flackern, da PWM auf Pin 3 und 5 nicht Phasengleich sind. (gemessen hier an Pin 3 und 9 da dort der Trigger beide Kurven sauber erwischt)

Auch wenn ich die 10k Widerstände entferne, bleibt das Verhalten so. Ich habe die IRLZ44N auch schon gegen IRF740 getauscht und das Ganze auf einem Breadboard nachgebaut. Der Effekt ist immer der Gleiche.

Ich kann mir das gegenseitige Beeinflussen nicht erklären. Mit dem Oszi gemessen habe ich zwischen der gemeinsamen Masse und dem jeweiligen Drain-Pin am MOSFET. Messe ich hier falsch?

Hat jemand evtl. eine Idee was da vorgeht?

Aufgefallen ist mir das durch ein 1 bis 2 Hz Flackern, da PWM auf Pin 3 und 5 nicht Phasengleich sind

Schau nach welche Timer die PWM Pins steuern:
http://playground.arduino.cc/Main/TimerPWMCheatsheet

Nur Pins die auf dem gleichen Timer laufen sind auch garantiert synchron.

10K ist etwas wenig. 100K reicht.
Ist aber sicherlich nicht das Problem.

Es sieht eher so aus, als wenn die Stromversorgung des Arduinos einbricht.
Hänge da mal den Oszi dran...

Haben die LED keine Vorwiderstände?
Welche max Strom liefert das Netzteil?
Wieviel Strom braucht der LED-Strip?

Bitte schreib genau was Du in welchem Bild mißt. Gemeint ist zb
Bild kanal_2_1_seltsam:
Kanal rot: Spannung an xy, xV/div;
Kanal gelb: Spannung an zx, yV/div.
Wo ist dei Basislinie?
So sind die Bilder kaum zu interpretieren.

Grüße Uwe

Hallo,

danke für die Antworten. Ich gehe mal der Reihe nach vor.

  1. Spannungsversorgung ist 12V von einem Labornetzteil das genug Strom liefern kann
  2. Der Effekt tritt auf egal ob der Arduino via USB mit 5V oder über Vin mit 12V versorgt wird
  3. Die 5V am Arduino brechen nicht ein, gemessen mit dem Oszilloskop am 5V Pin
  4. Die LEDs haben Vorwiderstände, es ist ein normaler LED-Streifen, der mit +12V versorgt wird und die einzelnen Farben sind auf die Drain Eingänge der MOSFETs geschaltet

Ich habe die Schaltung mal etwas angepasst, damit es klarer wird.

Zu den Bildern (Einstellungen stehen im Bild übrigens links unten in der Anzeige).

rot: Kanal 1 mit 5V/div
gelb: Kanal 2 mit 5V/div

Bei den Bildern wo nur ein Kanal aktiv ist, ist die Basislinie bei 0V, auch bei dem Bild mit beiden Kanälen und 50% dutycycle. Auffällig ist, das der rote Kanal bei ca. 2.5V anfängt, nicht bei 0V aber nur wenn der zweite Kanal aktiv ist.
Weiterhin messe ich am Zweiten Kanal auch das Signal des ersten Kanals, wenn ich das Gate des zweiten Kanals gar nicht über den Arduino betreibe und das Gate auf Masse lege um es zu entladen.

Wie es aussieht, erzeuge ich immer die Differenz aus beiden Kanälen. Wenn beide bei 50% dutycycle und synchron sind, dann passt es. Aber wenn das nicht der Fall ist, dann mischen sich die Signale und ich verstehe nicht warum das so ist.

Da ich sowas schon einige mal gemacht habe, kann ich sagen: Da mischt sich nix.
Zumindest sollte sich nix "mischen".

Offensichtlich suchst du den Fehler an der falschen Stelle.
Und folgerichtig zeigst du uns auch die falsche Stelle.

Grundsätzlich:
Der Fehler steckt immer da, wo man zuletzt sucht.

PS:
Warum sprichst du von PWM Pins, zeigst aber Analog Pins im Schaltplan?

Genau das ist mein Problem, es sollte sich nichts mischen. Die Bezeichnung "A" steht nicht für analog, sonder für Ausgang. Der Arduino hat auch kein analog-Pin9 beim Nano gibt es noch A6 und A7 (beide reine analog Eingänge). Es sind also die Pins D3,D5,D9.

Schaut man sich das Bild "misch_signal.png" an, so hat der rote Kanal einen kurzen "High" Pulse. Der gelbe Kanal hat einen längeren igh Pulse. Den habe ich in blau mal so eingemalt, wie er sein sollte.

Schaut man sich den Kurvenverlauf an, so sieht man, das wenn "rot" noch LOW ist und "gelb" HIGH sein sollte, das an gelb nur ungefähr die halbe Spannung statt der vollen gemessen wird. Erst wenn auch "rot" HIGH ist, dann geht "gelb" auf die volle Spannung. Dann wird "rot" wieder LOW und die Spannung von "gelb" fällt langsam wieder auf die halbe Spannung ab, bis auch "gelb" selbst wieder auf LOW geht.

Das meine ich mit dem Mischen der Signale. Ich verstehe aber nicht an welcher Stelle und wie das passieren kann.

Ich habe als Gegenprobe den LED-Streifen mal durch einfache 1k Widerstände ersetzt, die ich zwischen 12V und Drain gepackt habe, damit messe ich ein sauberes Signal. Es scheinen also die LED-Streifen zu sein. Ich habe zwei unterschiedliche Streifen (unterschiedliche Hersteller) getestet und bei beiden das gleiche Ergebnis.

Ein weiteres Experiment war nun, Streifen unterschiedlicher Länge zu verwenden und der Effekt wird stärker, je länger der LED-Streifen wird.

Jetzt ist der Effekt zwar auf die Last, welche durch die MOSFETs geschaltet wird eingeschränkt, aber verstehen tue ich das immer noch nicht.
Ich habe sogar in meiner Verzweiflung die Streifen komplett abgewickelt, um auszuschließen, das sich der aufgerollte Streifen wie eine Spule verhält. Aber wie zu erwarten, hatte das keinen Einfluss :slight_smile:

Mario.

Es sind also die Pins D3,D5,D9.

Gut, damit ist schon mal eine Verwirrung vom Tisch!

Ich nehme mal an, dass die Messung an den Ausgängen des Arduinos IMMER einen sauberen Rechteck liefern.
Unter allen Umständen.
AVRs machen da keine halben Sachen. (prüfe das mal)

Damit "sollten" die FETs auch sauber schalten.
Das tun sie offensichtlich nicht.

Mein provisorischer Schluss:
Die Masse(GND) Verbindung zwischen Arduino, FET und Oszi ist schadhaft/schwach/defekt.
Lege die Masse mal sternförmig auf einen Punkt.

PS:
Zeige doch auch mal dein Programm...

Das Testprogramm ist simpel. Ich ändere einfach nur das dutycycle Verhältnis gegenläufig für beide Kanäle.

void setup() {
  pinMode(3,OUTPUT);
  pinMode(9,OUTPUT);
}

void loop() {
 analogWrite(3,(analogRead(A3)>>2));
 analogWrite(9,(255-(analogRead(A3)>>2)));
}

Der Effekt tritt ja nicht auf, wenn ich einen Widerstand als Last verwende. Zu prüfen wäre noch, was passiert wenn die Last größer wird.
Die Platine mit der ich das eigentlich gebaut habe, hat eine große Massefläche und der Arduino wird über die 12V und GND vom Netzteil mit versorgt. Ich habe also zwei unterschiedliche Aufbauten, die das gleiche Ergebnis liefern.

Da mir das Ganze keine Ruhe läßt, habe ich jetzt zwei LED-Streifen genommen und von jedem nur eine Farbe. Einfach um sicher zu stellen, das ich komplett eigenständige Verbraucher habe, die ich schalte. Dort tritt der Effekt auch auf, aber komischerweise nur für einen der beiden Kanäle. Noch verwirrender ist, das ich je nachdem welche LED-Farbe ich verwende, unterschiedliche Spannungen zwischen Drain und Masse messe. Ich habe das Gefühl das mit meinem Messaufbau etwas nicht stimmt, oder ich etwas übersehe.

Am Arduino sehe ich auch ein sauberes Signal. Das habe ich gerade nochmal geprüft. Aber um die Verwirrung komplett zu machen, messe ich zwischen Masse und Drain genau dann 12V wenn der Arduino das Gate auf GND legt und 0V wenn das Gate auf 5V liegt. Es ist aber ein IRF740 und damit ein N-Kanal MOSFET und wenn ich das richtig verstehe, sollte der MOSFET ja durchschalten, wenn 5V am Gate anliegen. Oder vertauscht mein Messaufbau das Signal-Level?

OK, vergesst die letzte Frage. Ich messe ja die 12V wenn der MOSFET sperrt und wenn er durchschaltet wird Drain auf Masse gezogen, daher passt das alles.

Ich habe das Gefühl das mit meinem Messaufbau etwas nicht stimmt, oder ich etwas übersehe.

Dem stimme ich zu!

Das größte Problem ist, dass du (vermutlich) etwas übersiehst!
Und weil du es nicht siehst, kommst du gar nicht auf die Idee es hier zu zeigen.
Oder es selber als Fehler in Betracht zu ziehen.

Am Arduino sehe ich auch ein sauberes Signal. Das habe ich gerade nochmal geprüft.

Das ist fein!
Damit ist der Arduino heile.

So langsam komme ich mir wie ein Priester vor, weiterhin: GND Verbindung!

Du mißt praktisch die Spannung zwischen Drain des MOSFET und Masse

Wenn Du einen IRF740 verwendest dann schaltet der mit 5V Ansteuerung nicht ganz durch, Ist kein Logic Level MOSFET. Der IRLIZ44 ist ein LogicLevel MOSFET und müßte diesen Effekt nicht haben also (fast) auf 0V schalten.

Kannst Du mal Gatspannung und Drainspannung eines Mosfets gegen Masse messen?

Wieviel Strom braucht der LED-Streifen. Von welchen Größenordnungen sprechen wir? 20mA 1A ??

Kannst Du uns ein Foto vom Aufbau geben , wo man die Verdrahtung gut sieht.
Grüße Uwe

Ich habe gerade noch einmal die komplette Schaltung auf dem Breadboard neu aufgebaut. Dabei habe ich auch die IRF740 durch die IRLIZ44 ersetzt. Der Effekt ist der gleiche.

Messe ich zwischen Masse und Gate, habe ich ein sauberes Signal mit 5V Pegel.
Die Masse ist die Masseleiste vom Breadboard. Der LED-Streifen zieht bei den 2 Farben zwischen 600 mA und 800 mA.

Die unterschiedlichen Spannungen die ich für die unterschiedlichen Farben messe sind mir mittlerweile auch klar. Auf dem Streifen sind immer zwei LEDs einer Farbe pro Segment in Reihe geschaltet. Damit habe ich zwei Mal den Voltagedrop der entsprechenden Farbe (ca. 2.2V bei rot und ca 3.4V bei blau)

Verbinde ich nur einen PWM Ausgang mit dem Gate eines MOSFETs und Messe zum Einen zwischen Masse und Gate und mit dem anderen Kanal des Oszi zwischen Masse und Drain, dann sieht alles sauber aus.
Das Gleiche habe ich für den zweiten PWM Ausgang (alleine) und den anderen MOSFET.
Damit ist das als "Einzelschaltung" für mich erstmal sauber.

Verbinde ich dann den zweiten PWM Ausgang vom Arduino mit dem Gate des zweiten MOSFETs, ohne das dieser eine Last schaltet, dann ist auch noch alles sauber.

Erst wenn der zweite MOSFET auch eine Last zum schalten bekommt, dann wird es seltsam.
Wenn MOSFET 1 durchschaltet, scheint MOSFET 2 nicht komplett zu sperren, als ob das GATE von MOSFET 2 irgendwie noch eine Ladung von MOSFET 1 bekommen würde. So sieht es auf dem Oszilloskop zumindest aus. Erst wenn MOSFET 1 selbst wieder sperrt, dann sperrt auch MOSFET 2 vollständig.

Anbei auch die Bilder vom Aufbau. Die Source Pins sind direkt gegen Masse geschaltet. Zwischen Gate und Masse habe ich jeweils einen 10k Widerstand. Die PWM Ausgänge D3 und D9 gehen jeweils auch an ein Gate. Die +12V des LED Stripe sind mit den 12V auf dem Breadboard verbunden.
Die Masse-Anschlüsse der Oszilloskop Proben sind mit der Masse-Leiste des Breadborad verbunden, die Proben selbst mit den Drain Pins. Die Farbe Rot und Blau des LED-Stripe sind jeweils mit einem der Drain Pins der MOSFETs verbunden. Zwischen den 5V und GND am Arduino habe ich einen 10 Poti, dessen Mittelpin an A3 angeschlossen ist.

Das gemessene Ergebnis auf dem Oszilloskop sieht man auf dem dritten Bild. Beide Kanäle mit je 5V/div
Für Kanal 1 (rote Linie) messe ich übrigens 16V zwischen Drain und Masse, entferne ich die Last auf dem zweiten Kanal (LED-Streifen vom Drain Pin abziehen), dann messe ich für Kanal 1 nur noch 12 V
, so als ob sich die Spannungen addieren, wenn beide MOSFETs sperren.

Damit ich auch mein Oszilloskop als Fehlerquelle ausschließen kann, habe ich das Ganze auch noch mit meinem analogen Oszi gemessen und sehe dort das gleiche Bild.

Wie gesagt, dieser "Treppen" Effekt wird um so stärker, je länger der LED-Streifen ist, also vermutlich ist das abhängig von der Last.

Auch wenn mir mittlerweile einige Details klarer sind, bin ich immer noch ratlos, was das Verhalten der Spannungen zwischen Drain und Masse angeht, wenn beide MOSFETs per PWM angesteuert werden.

messe ich übrigens 16V zwischen Drain und Masse,

Du betreibst dein System mit 12V, nach eigener Aussage!

Da kommen niemals 16V zustande.
??
(Schwingungen?)

Hmm....
Nach betrachten der Fotos und der dürren China Strippen, würde ich mal sagen: Da ist der Fehler.
So bekommst du keine klaren Potentiale. Nirgendwo!
Messe mal den Spannungsabfall auf den Leitungen, du wirst dich vermutlich wundern.

Wie gesagt:
Ich betreibe fast die selbe Schaltung!
Mehrfach.
Völlig OK!

Was ist bei mir anders:
DICKE kurze Strippen.
Gate zu GND 100K
Pin zu Gate 100R

Das Bild zeigt die eigentliche Platine. Dort gibt es keine dünnen Chinadrähte, die Leiterbahnen sind auf jeden Fall breit genug für bis zu 3A. Dazu kommt, das die Verbindungsdrähte vom Stecker zum LED-Streifen selbst sogar dünner sind, als das was ich verwende. Daher würde ich die Drähte ausschließen.
Bei der Platine ist der Effekt der gleiche.

Als Gegenprobe habe ich eben zwei 12V / 10 W Halogenlampen mit den MOSFETs geschaltet und dort habe ich den Effekt auch, aber deutlich schwächer, obwohl auch gute 800 mA fließen.

Es ist ja auch nicht so, das die Schaltung nicht funktioniert. Allerdings gibt es ein Flackern, wenn ich D3 und D5 verwende, da die von unterschiedlichen Timern gesteuert werden und leicht unterschiedliche Frequenzen haben. Dadurch das aber Signal 1 auf welche Weise auch immer Signal 2 beeinflusst (gemessen und am Effekt gesehen), ändert sich periodisch ganz leicht die Helligkeit der LEDs. Das fällt besonders auf, wenn die LEDs stark gedimmt sind und sich daher Änderungen für das Auge stärker bemerkbar machen.

Verwende ich D3 und D9 (gleicher timer) sind die PWM Signale Phasen- und Frequenzgleich und es gibt kein Flackern, das für das Auge warnehmbar ist, auch wenn die Spannungsunterschiede messbar sind.

Ich habe jetzt, damit ich an Deinen Aufbau heran komme auch noch einen Widerstand (330R, 100R hab ich nicht da) zwischen Pin und Gate geschaltet. Das ändert aber auch nicht.

Wenn ich das richtig gefunden habe, dann laufen D5 ud D6 mit einer Frequenz von 976 Hz an Timer0 und die anderen PWM-Pins mit je 488 Hz an Timer1 und Timer2

Verwendet man als z.B. D9,D10 und D11 als PWM Pins fällt vermutlich gar nicht auf, da es keine Interferenzen gibt (weil gleiche Frequenz).

Ich würde nur gern verstehen was da passiert. Selbst wenn das kein Fehler, sondern ein "normales" Verhalten der Schaltung ist. Ich habe zwei verschiedene Oszilloskope (digital, analog) zum Messen verwendet. Die Schaltung gibt es zwei Mal (Platine, Breadboard). Ich habe die MOSFETs ausgetauscht und die Schaltung mehrmals ab und wieder aufgebaut. Der Effekt den ich da Messe, das sich die Spannungen zwischen Drain und Masse verändern, wenn ich die mit einem, oder sogar zwei separaten LED-Streifen betreibe, bleibt. Unsaubere Masseleitungen halte ich für den gemessenen Effekt für unwahrscheinlich, das würde sich eher in Rauschen äußern.

Falls jemand die Schaltung gerade aufgebaut hat und mal selbst mit einem Oszi messen könnte, wäre das hilfreich. Selbst wenn mein Messaufbau falsch ist, wäre das für mich OK, wenn mir jemand zeigen kann, wie ich das dann korrekt aufbauen muss.

Das Bild schaltung3.png ist genau der Aufbau den ich jetzt mit der Platine und dem Arduino habe.

Update: für das schaltung.png habe ich noch die Belegungen ergänzt, damit das Layout klarer wird.

sondern ein "normales" Verhalten der Schaltung ist

Ist es nicht!

combie:
Ist es nicht!

Das würde ich aber gern erstmal an einer anderen Schaltung sehen. Ich sehe bei mir nicht, wo ich noch etwas ändern kann.

Am Ausgang des Arduino ist der Rechteck immer OK, oder?
Dann schließe ich den mal vorsichtig, als Fehlerquelle, aus.

Die FET laufen immer an ihrer Kennlinie entlang. Die können nicht anders. Die verständigen sich auch nicht untereinander über ihren jeweiligen Strom. Dafür sind die zu doof.

Bis hier sind wir uns einig! (?)

Und ab hier haben wir Differenzen!

Also können die unterschiedliche Schaltverläufe nur aus der Verkabelung kommen.
Ins Besondere aus der GND Verkabelung. (aber das habe ich jetzt schon gefühlte 10 mal gesagt)

Vereinfacht:
Maßgeblich für den Ron ist Vgs.
Vgs sollte ca 4,5V sein. (Arduino typisch)
Wenn die GND Verkabelung Mist ist, erreicht Vgs nicht mehr diese 4,5V damit steigt Ron und damit auch Vds. Ids sinkt, die LEDs werden schwächer. Sie flackern bei asynchronem PWM auf mehreren Kanälen.

Beweis:
Löte direkt an einem FET, an G und S, dünne Messleitungen. Dann stecke den FET wieder ins Breadboard.
Klemme GND des Oszis direkt an Netzteil GND (stecke nicht ins Breadboard)
Klemme kanal 1 an S kanal 2 an G (stecke die Messleitungen NICHT ins Breadboard, LÖTEN)
Schau dir die Werte auf dem Oszi an.
Dein Oszi kann doch bestimmt G - S rechnen? Also Vgs zeigen.

Ich gebe an der Stelle jetzt auch auf.

Laut Foto ist das kein orgianl Arduino NANO sondern ein Niedrigpreis-China-Nachbau.

Ich möchte nicht, daß das Problem eine 3-Wahl ATemga ist.
Hast Du um das Problem eines teildefekten Controllers auszuschließen einen anderen (ORGINAL) - Arduino zu Testen der Schaltung nehmen?

Grüße Uwe

Hallo Uwe,

auch mit einem originalen Arduino Uno SMD ändert sich nichts. Masse vom Oszilloskop ist direkt mit der Masse vom Netzteil verbunden und gemessen direk am Drain Pin und am Gate Pin des MOSFET ändert sich auch nichts.
Ich kann daher (auch zum 10 Mal) nur wiederholen, die Masseverbindung halte ich für unwahrscheinlich.
Warum sollte denn dann bei identischem Aufbau der Effekt bei den Halogenleuchten (bei gleicher Leistung) geringer ausfallen als bei einem LED-Streifen, wenn die angeblich unzureichenden Masseverbindungen die gleichen sind? Vgs habe ich auch schon gemessen, das ist ein sauberes 5V Rechtecksignal.
Und wenn es die schlechten Masseverbindungen sind, warum verändert sich dann die Stärke des Effektes bei unsterschiedlichen Längen von LED-Streifen, wenn der Rest der Schaltung nicht verändert wird.

Ich will ja das Masseproblem nicht nicht ausschließen, aber dann sollte es unabhängig vom Verbraucher sein, der geschaltet wird. oder wenigstens nur abhängig von der geschalteten Leistung. Aber auch das ist ja nicht der Fall.

Und wie gesagt, in der originalen Schaltung ist nichts auf einem Breadboard gesteckt, da ist alles gelötet und ich habe da das gleiche Problem. Baut es nach und überrascht mich :slight_smile:

Für heute habe ich auch erstmal genug. Ich werde mal schauen, ob ich das Ganze mal 1:1 mit "dicken", "kurzen" Drähten direkt verlötet bekomme, um alle Eventualitäten auszuschließen. Das Ganze mit einem großen, sternförmigen Massepunkt an dem dann das Netzteil und die Oszi-Proben angeschlossen werden.
Damit es sauber ist auch mit 100 Ohm Widerständen zwischen Pin und Gate und 100k zwischen Gate und Masse.