Forum: Mikrocontroller und Digitale Elektronik PWM berechnen


von J. K. (rooot)


Lesenswert?

Hi,

Ich möchte ein PWM - Signal mit einem MEGA16 erzeugen. Ich verwende dazu 
den PWM Mode (Top=0x03FF), nichtinvertierend. Über die UART wird der zu 
erzeugender Spannungswert eingegeben. Das Signal wird am Ende durch ein 
RC-Glied gefiltert

Jetzt geht es darum den Comparewert zu berechnen.

Meine Überlegung:
Ua= 5000mV * ZeitHIGH(=CompareWert) / Periodendauer (=03FF)

daraus folgt
CompareWert= 03FF * Ua / 5000

Leider stimmt das Ergebniss nicht.
Es stimmt nur bei 2500 mv also 1:1

hab ich einen Denkfehler? oder hab ich falsch progrmmiert?

mfg
J.K.

von J. K. (rooot)


Lesenswert?

Ok, Fehler gefunden!

Berechnung wäre richtug gewesen!

Problem war folgendes:

ausgabe=spannung/625;
ausgabe*=128;

zB: spannung =1000 (1V)

1000/625 = 1,6 > Integer = 1

riesiger Rundungsfehler!

mfg
J.K

von Falk B. (falk)


Lesenswert?

Festkommaarithmetik

Erst multiplizieren, dann dividieren.

MfG
Falk

von J. K. (rooot)


Lesenswert?

Ich habs jetzt geteilt.

weil:
zB. 1000*128 > Overflow

jetzt hab ich 128 (2^7) und 625 (5^4) factorisiert und rechne 
abwechselnd mal 2 und durch 5.

mfg
J.K

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.