PWM Frequenz am Oszilloskop

Moinsen,

ich habe mir mit folgendem Sketch die PWM Frequenz auf 25kHz gesetzt, damit mein Lüfter nicht dauernd piept:

#include <PWM.h>

int32_t frequency = 25000;

void setup()
{
  InitTimersSafe();
  bool succes = SetPinFrequencySafe(9, frequency);
  if(succes) 
  {
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);
  }
}

void loop()
{
  int sensorValue = analogRead(A0);
  pwmWrite(9, sensorValue / 4);
  delay(30);
}

Nun habe ich das ganze mal an ein Oszi gehängt, da ich die Vermutung hatte, dass andere Pins davon auch betroffen sind. Nun konnte ich dieselbe Frequenz auch auf jedem anderen PWM Pin beobachten, was natürlich für eine zusätzliche PWM Dimmung von LED nicht so schön ist. Kann mir einer vielleicht verraten, wie ich jeden Pin unterschiedlich belegen kann? Es gibt ja immer die über einen Timer zusammenhängenden PWM Frequenzen, aber meine Variante war so schön einfach zu realisieren :wink:

Hier noch ein paar Bilder vom Oszi:
Pin 9, gewollt auf 25kHz, funktioniert super:

Pin 11, gewollt auf den Standard eingestellten 490 Hz (p.s.: diese wird natürlich nicht überlagert angezeigt, das lag nur an meiner Kamera):

Vielleicht kann mir jemand dabei helfen.

Grüße,

Jan

Hast du mal probiert die Timer per Hand ansteuern? Eine Lib ist dafür vollkommen überflüssig. Man braucht nur eine Zeile um die Frequenz zu ändern.

Siehe hier:
http://playground.arduino.cc/Main/TimerPWMCheatsheet

Aber wirklich eine unterschiedliche Frequenz auf allen Pins haben dürfte nicht gehen. Die hängen nun mal am selben Timer.

Das 2. Oszylogramm hat eine Spitzenspannung von knapp 40mV (Falls Du eine 1x Tastspitze verwendest).
Diese Störungen können ruhig die Restwelligkeit des Netzteils sein. oder andere Störungen. Hänge mal einen 10kOhm Widerstand vom Pin auf Masse und schau was die Spannung macht.
Grüße Uwe

was natürlich für eine zusätzliche PWM Dimmung von LED nicht so schön ist

Warum ? LED können doch wohl auch 25 kHz vertragen, oder ?
Klar, man braucht es nicht, aber stören sollte es doch auch nicht.

Moinsen,

hatte leider viel zu tun, danke für eure Antworten!

Das mit dem ändern der Frequenz schaue ich mir mal an, danke dafür!
Es würde mich wundern, wenn der eine Pin ohne Restwelligkeit läuft, der andere aber durchdreht. Checke das bei Möglichkeit mal.

25kHz bei meinen LED flackert ziemlich stark, was eigentlich nicht sein dürfte, da diese ja noch schneller schalten? Leider habe ich dazu noch das Problem, dass meine LED nicht komplett runter dimmen, was ich mir nicht erklären kann -.-

Grüße

Jan

Moin, habe mir den Artikel vom Playground mal durchgelesen. Habe ich das richtig verstanden, dass es nur festgesetzte PWM Frequenzen mit der Methode gibt? Ich brauche für meine Lüfter ja genau 25kHz, da drunter fiepen die wie blöde...

Grüße

Das verändert nur den Prescaler. Du könntest zusätzlich noch das Compare-Register anpassen. Dann kannst du beliebige Frequenzen einstellen.

EDIT: Mit den Compare Registern in PWM Modi rumzufummeln ist jedoch sehr kompliziert. Dazu muss man erst mal genau verstehen was da genau abläuft. Würde ich daher nicht machen /EDIT

Wenn du aber einfach den Prescaler ausschaltest (Divisor 1), damit der Timer mit dem Systemtakt läuft hast du ca. 31 kHz mit Timer1 und Timer2. Bei anderen Leuten hat das gereicht um die Geräusche zu unterdrücken. Ich sehe nicht wieso das genau 25 kHz sein muss und nicht auch höher sein kann.

Na ja, bei über 25 kHz läuft der gar nicht erst an...

Grüße