Piepsen bei Dimmen von LED

Hallo zusammen,

ich habe folgendes Problem und bin mir sicher, dass ihr mir helfen könnt, dieses zu beheben:

Ich steuere gerade eine LED-Leiste (12 V) mit einem Atmega328P an. Diese ist per Potentiometer dimmbar, per Taster an- und ausschaltbar und wird per Transistor geschaltet. Die Stromversorgung läuft über ein gutes 12 V Netzteil und einen kleinen Step-Down-Konverter, der den Atmega328P mit 5 V versorgt.
Alles funktioniert einwandfrei, jedoch ist ein sehr hohes leises Piepen hörbar, wenn die LED gedimmt wird. Im Umkehrschluss gibt es nur dann kein Piepen, wenn die LED aus oder auf der hellsten Helligkeitsstufe ist (Poti auf max).
Im Internet habe ich schon viel gelesen (Resonanz der Spule/Drossel im Step-Down-Konverter / PWM Frequenz des Arduino ändern, da dieses hörbar ist / etc.). Bis jetzt habe ich es jedoch noch nicht geschafft, das Problem zu lösen.

Nun meine Frage(n):

  1. Kann ich das Problem hardware-technisch lösen oder nur software-technisch?
  2. Wie kann ich es lösen? :slight_smile:

Ich freue mich über zahlreiche Antworten, damit wir das Problem gemeinsam schnell beheben können...

Viele Grüße

Noah

Jo, ist wie immer: Schaltung zeigen, Sketch zeigen.
Sonst ist erst mal wieder Geräte angesagt.

Meiner Meinung ist das Netzteil, das wegen der durch die PWM Ansteuerung der LED eine gepulsten Leistung abgeben muß und darum Lärm macht.
Hast Du noch ein anderes Netzteil (anderes Model)? Hast Du das schon versucht?
Grüße Uwe

Hi

Irgendwelche Drähte ziehen sich hier im Takt der PWM-Ansteuerung an - oder eben nicht.
WO Das passiert - immer den Ohren nach!
Angehen kann man Das, indem man die PWM-Frequenz anpasst - entweder tiefer, oder höher.
Eventuell ist's auch nur eine Schwebung, also eine Mischung zwischen Takt des Netzgerät und Takt des Arduino - auch hier hilft Es, eine der Frequenzen abzuändern.

MfG

Ich kenne das Problem auch und habe das bei einem bestimmten Netzteil.

Wie Uwe schon schrieb, dieses tauschen.

uwefed:
Meiner Meinung ist das Netzteil, das wegen der durch die PWM Ansteuerung der LED eine gepulsten Leistung abgeben muß und darum Lärm macht.
Hast Du noch ein anderes Netzteil (anderes Model)? Hast Du das schon versucht?
Grüße Uwe

Ja. Auch bei einem anderen Netzteil hatte ich dasselbe Problem... Lässt sich eventuell diese gepulste Leistung mit einem Kondensator "glätten" oder generell beheben und wenn ja wie?

postmaster-ino:
Hi

Irgendwelche Drähte ziehen sich hier im Takt der PWM-Ansteuerung an - oder eben nicht.
WO Das passiert - immer den Ohren nach!
Angehen kann man Das, indem man die PWM-Frequenz anpasst - entweder tiefer, oder höher.
Eventuell ist's auch nur eine Schwebung, also eine Mischung zwischen Takt des Netzgerät und Takt des Arduino - auch hier hilft Es, eine der Frequenzen abzuändern.

MfG

Das könnte auch sein... Vermutlich irgendetwas zwischen den Antworten von euch beiden. :wink: Wie kann ich die Frequenz von meinem Atmega328P an Pin 5 ändern?

Grüße

Noah

Nicht alle Arduino UNO PWM Ausgänge haben die gleiche Frequenz.

Andererseits kannst Du die Frequenzen auch ändern:

Grüße Uwe

uwefed:
Nicht alle Arduino UNO PWM Ausgänge haben die gleiche Frequenz.
analogWrite() - Arduino Reference
Andererseits kannst Du die Frequenzen auch ändern:
https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM

Grüße Uwe

Habe schon beide gelesen. Trotzdem danke.

Diese Seite war für mich jedoch verständlicher: Arduino Playground - TimerPWMCheatsheet

Wenn ich jedoch TCCR0B = TCCR0B & 0b11111000 | 0x05; im void setup eingebe, ist 1s nicht mehr delay(1000) oder millis(1000), sondern delay(16000) oder millis(16000) (Vorfaktor 1024 anstelle von 64: 1024/64=16). Ich brauche jedoch funktionierende delays und millis…

Eine andere Frage: Warum hört man beispielsweise kein PWM, wenn man normal an einem Arduino eine LED per analogWrite ansteuert? Schließlich ist dabei die Frequenz da doch auch 490 oder 980 Hz...

Grüße

Noah

Maker1212:
Eine andere Frage: Warum hört man beispielsweise kein PWM, wenn man normal an einem Arduino eine LED per analogWrite ansteuert? Schließlich ist dabei die Frequenz da doch auch 490 oder 980 Hz...

Grüße

Noah

Weil eine einzelne Led nicht so viel Strom braucht.

Wenn ich jedoch
Code: [Select]

TCCR0B = TCCR0B & 0b11111000 | 0x05;

im void setup eingebe, ist 1s nicht mehr delay(1000) oder millis(1000), sondern delay(16000) oder millis(16000) (Vorfaktor 1024 anstelle von 64: 1024/64=16). Ich brauche jedoch funktionierende delays und millis…

Nimm einen andern Timer und ander PWM Pins.

Eine andere Frage: Warum hört man beispielsweise kein PWM, wenn man normal an einem Arduino eine LED per analogWrite ansteuert? Schließlich ist dabei die Frequenz da doch auch 490 oder 980 Hz...

Grüße Noah

Das was Du hörst ist die Spannungsregelung, die nach einem Stromimpuls, der die Elkos leersaugt, wieder Nachregeln muß.
Ein 20mA LED kitzelt da nur leicht.

Grüße Uwe

uwefed:
Nimm einen andern Timer und ander PWM Pins.

Eine andere Frage: Warum hört man beispielsweise kein PWM, wenn man normal an einem Arduino eine LED per analogWrite ansteuert? Schließlich ist dabei die Frequenz da doch auch 490 oder 980 Hz...

Grüße Noah




Das was Du hörst ist die Spannungsregelung, die nach einem Stromimpuls, der die Elkos leersaugt, wieder Nachregeln muß.
Ein 20mA LED kitzelt da nur leicht.

Grüße Uwe

Kann leider keinen anderen PWM Pin und/oder Timer nehmen, da der Atmega auf einem PCB fest ist...

Könnte ich das ganze Problem auch eventuell hardwaretechnisch lösen?

Gruß

Noah

Hi

Du könntest zumindest mit einem anderen Arduino, Den Du aktuell statt den fest verlöteten ATmega benutzt, prüfen, OB das Klingeln aus dieser Richtung kommt.
Oder wollen wir nun mit Hardware um uns werfen, bis Das genügend den Schall isoliert?
Das geht auch mit wesentlich billiger Wolle - und auch ohne Löten!!

MfG

Maker1212:
Kann leider keinen anderen PWM Pin und/oder Timer nehmen, da der Atmega auf einem PCB fest ist...

Könnte ich das ganze Problem auch eventuell hardwaretechnisch lösen?

Gruß

Noah

Versuchs mal mit einem anderen Netzteil. Das wäre doch Hardwaretechnisch. Und auch die schnellste Lösung. Und wenn Wir Deine Zeit und unsere zusammenzählen und 1 € pro Stunde rechnen wäre das auch die billigste Lösung gewesen.

Grüße Uwe

postmaster-ino:
Hi

Du könntest zumindest mit einem anderen Arduino, Den Du aktuell statt den fest verlöteten ATmega benutzt, prüfen, OB das Klingeln aus dieser Richtung kommt.
Oder wollen wir nun mit Hardware um uns werfen, bis Das genügend den Schall isoliert?
Das geht auch mit wesentlich billiger Wolle - und auch ohne Löten!!

MfG

Ich weiß inzwischen, dass die kleine Spule auf dem Step-Down-Konverter piept. Wenn ich im void setup

TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM01) | _BV(WGM00); 
  TCCR0B = _BV(CS00);

hinzufüge, hört man zwar kein Piepen mehr, aber ein Großteil vom Programm funktioniert nicht mehr. Mir ist aufgefallen, dass egal wie ich die wiring.h Datei abändere (nach dieser Website: Arduino Playground - TimerPWMCheatsheet), sich nichts ändert.

Muss ich beim Ändern der wiring.h Datei irgendetwas beachten?

Viele Grüße

Noah

Ich meinte natürlich die wiring.c Datei...

uwefed:
Versuchs mal mit einem anderen Netzteil. Das wäre doch Hardwaretechnisch. Und auch die schnellste Lösung. Und wenn Wir Deine Zeit und unsere zusammenzählen und 1 € pro Stunde rechnen wäre das auch die billigste Lösung gewesen.

Grüße Uwe

Ich hatte schon oben geschrieben, dass auch ein anderes Netzteil nicht geholfen hat...