Forum: Mikrocontroller und Digitale Elektronik PCA9685 PWM Frequenz ungenau


von Horst (Gast)


Lesenswert?

Hallo,

ich verwende einen PCA9685 zur PWM Erzeugung.
Der PCA läuft mit dem internen 25 MHz Quarz.
Mit der Formel aus dem Datenblatt erhalte ich statt der gewünschten 250 
Hz so ca. 276 Hz.
Der PCA befindet sich zur Einstellung der PWM Frequenz wie gefordert im 
Sleep mode.
[c]
...
i2c_start(address);         // Start, Address of selected pca9685
i2c_write(MODE1);           // Mode 1 address
// Setting mode to sleep so we can change the default PWM frequency
i2c_write(PCA9685_AI | PCA9685_SLEEP | PCA9685_ALLCALL);
i2c_stop();                 // Stop
waitMS(1);                  // Required 50 us delay

i2c_start(address);         // Start, Address of selected pca9685
i2c_write(PRE_SCALE);       // PWM frequency PRE_SCALE address
// [osc_clk/(4096*update_rate)]-1 = [25000000/(4096*250)]-1= 23,414 ~23 
= 0x17
i2c_write(0x17);
i2c_stop();                 // Stop
waitMS(1);
...
[\c]
Im Datenblatt habe ich keine Angaben zur Quarzgenauigkeit gefunden.
Ist das normal, oder mache ich etwas falsch?

von Horst (Gast)


Lesenswert?

hier noch mal in richtiger Formattierung:
1
...
2
i2c_start(address);         // Start, Address of selected pca9685
3
i2c_write(MODE1);           // Mode 1 address
4
// Setting mode to sleep so we can change the default PWM frequency
5
i2c_write(PCA9685_AI | PCA9685_SLEEP | PCA9685_ALLCALL);
6
i2c_stop();                 // Stop
7
waitMS(1);                  // Required 50 us delay
8
9
i2c_start(address);         // Start, Address of selected pca9685
10
i2c_write(PRE_SCALE);       // PWM frequency PRE_SCALE address
11
// [osc_clk/(4096*update_rate)]-1 = [25000000/(4096*250)]-1= 23,414 ~23 
12
= 0x17
13
i2c_write(0x17);
14
i2c_stop();                 // Stop
15
waitMS(1);
16
...

von Horst (Gast)


Lesenswert?

Stelle ich den PCA auf 0x1A (26 dezimal) dann sollte das rechnerisch 225 
Hz ergeben, ich erhalte aber 245,4 Hz.

Lohnt es evtl. den 16 MHz Quarz des Controllers auch auf den externen 
Takteingang des PCA zu legen?

von Horst (Gast)


Lesenswert?

Hat niemand Probleme mit einer ungenauen PWM Frequenz beim PCA9685?

von spess53 (Gast)


Lesenswert?

Hi

>Der PCA läuft mit dem internen 25 MHz Quarz.

Im Datenblatt steht:

25 MHz typical internal oscillator requires no external components

Also ein RC-Oszillator, kein Quarz.

>Lohnt es evtl. den 16 MHz Quarz des Controllers auch auf den externen
>Takteingang des PCA zu legen?

Macht die abweichende PWM-Frequenz Probleme?

MfG Spess

von Horst (Gast)


Lesenswert?

spess53 schrieb:
> Macht die abweichende PWM-Frequenz Probleme?

Nicht direkt, aber sieht bei mehreren Geräten nicht schön aus, wenn die 
Frequenz immer anders ist. Also entweder muss ich individuell anpassen 
oder einen externen Takt spendieren...

von spess53 (Gast)


Lesenswert?

Hi

>Nicht direkt, aber sieht bei mehreren Geräten nicht schön aus, wenn die
>Frequenz immer anders ist.

Den Unterschied zwischen 250 Hz und 276 Hz kann man sehen?

MfG Spess

von Falk B. (falk)


Lesenswert?

@ spess53 (Gast)

>Den Unterschied zwischen 250 Hz und 276 Hz kann man sehen?

Wenn man beide gleichzeitig auf dem Oszi anschaut schon ;-)

von Horst (Gast)


Lesenswert?

Ich meinte "sehen" im Sinne von nachprüfen.

Vermutlich spielt es nicht wirklich eine Rolle, ob es ein paar Herz mehr 
oder weniger sind. Es werden über HS-Treiber Ventile angesteuert.
Es soll aber schon zuverlässig und reproduzierbar sein.

von Falk B. (falk)


Lesenswert?

@ Horst (Gast)

>oder weniger sind. Es werden über HS-Treiber Ventile angesteuert.
>Es soll aber schon zuverlässig und reproduzierbar sein.

Da spielt die Frequenztoleranz keine Geige. +/-20 % sind da piepegal, 
selbst +/-50% sollten bei passender Dimensionierung zu verkraften sein.
Bitte mal nicht immer Overengineering betreiben!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.