Forum: Mikrocontroller und Digitale Elektronik PWM Frequenz


von Malte Struebert (Gast)


Lesenswert?

Hallo,

wenn ich das Datenblatt richtig verstanden habe, ergibt sich meine
Periodendauer für einen PWM Durchlauf wie folgt:

f = Taktfrequenz / (N*510) wobei N mein Prescaler ist.

Damit lassen sich ja aber doch nur relativ grob die Periodendauern
einstellen oder?!

Jetzt habe ich eine Anwendung in der ich meine PWM Priodendauer in
relativ (möglichst kleinen) kleinen Schritten sagen wir mal von 0.003
Hz bis 350 Hz variiren können muß.

Dazu brauche ich dann noch die Möglichkeit das PWM Verhältniss also ein
Zeit zu Aus Zeit zu variiren.

Gibt es da eine elegante Möglichkeit oder geht sowas nur über einen
Manuell gesteuerten und immer wieder neu gesetzten Timer?

Gruß
Malte.

von Ronny Schulz (Gast)


Lesenswert?

Wäre vielleicht günstig zu erwähnen, wovon Du redest. Also welches
Datenblatt z.B. Dann könnte man dir evtl. sogar helfen.

von Eugen Dischke (Gast)


Lesenswert?

na also sofern du nen avr benuzt, könntest du den timer extern tackten
lassen, und abhängig von der frequenz die du von ausen zuführst, ändert
sich halt auch die PWM freauenz, und das verhälniss, der zeiten stellst
du mit dem entsprechendem register ein  ( siehe datenblatt)
MfG
Eugen Dischke

von Malte Struebert (Gast)


Lesenswert?

Hi,

also was ich habe, ich habe ein Drehzahlsignal von aussen das mit einen
TTL Pegel liefert also immer einen kurzen Pulse pro Umdrehung.

Meine PWM Frequenz muß genau 4 mal der Umdrehungsfrequenz sein so das
ich quasi wärend einer Umdrehung 4 perioden in meinem PWM durchlaufe...
und dann muß ich halt das Taktverhältniss noch einstellen können.

Gruß
Malte.

von Eugen Dischke (Gast)


Lesenswert?

also die allererste idee,
die mir jezt durch den kopf für diese anwendung geht, ist ziemlich
aufwendig, verstehe ich dich richtig das du versucht durch das PWM die
drehzahl zu steuern, bzw konstannt zu halten ? ( nur ne annahme)

die die aufwendige idee, die mir durch den kopf ging ist die. du nimmst
nen PLL(z.B. 74HCT4046) und vervielfachst mit dem pll und nem
frequenzteiler deine drehzahl(iss ja auch nur ne frequenz), und
tacktest damit den timer.
ne andere idee, ist du stoppst die zeit zw 2 impulsen, (mit z.b.
timer0) teilst die anzahl der zyklen durch 4 und lädst diese zahl in
das OCR1C register (diese methode erfordert auch den entsprechenden
timer mit einer solchen funktion z.B. Tiny26) das OCR1C register beim
tiny 26 bestimmt im PWM mode bis zu welchem wert der timer zählt ehe er
auf 0 zurückgesezt wird, er ändert dadurch aber auch die genauichkeit
des PWM, so dass du dabei auch immer die werte der verhältnisse
anpassen musst
du solltest dir mal das datenblatt des tiny 26 durchlesen, da kannste
schlauer draus wedern wie das alles geht
MfG
Eugen Dischke

von Malte Struebert (Gast)


Lesenswert?

Hi,

ne deine Annahme ist nicht ganz richtig... ich bekomme ein
Drehzalsignal und da ich pro Umdrehung in gleichen Abständen allerding
mit variablen Pulslängen 4 mal einen Ausgang schalten muß brauche ich
besagtes PWM Signal.

Sollte doch eigentlich nicht so schwer sein, aufgrund einer
vorgegebenen Zeitspanne welche letztendlich die Drehzahl angibt.

Bsp: 500U/Min = 120ms pro Umdrehung -> PWM Periodendauer = 120/4=30ms

Es muß doch irgendwie möglich sein die PWM Periodendauer auf exakt 30ms
einzustellen oder nicht?! der Rest ist ja kein Problem eigentlich...

Gruß
Malte.

von Michael (Gast)


Lesenswert?

Brauchst Du wirklich 0.003Hz -> 350Hz ?
Mit einem 4046 und 0.003Hz bräuchtest Du das ganze Jahr + Schalttag,
damit sich die PLL synchronisiert - wenn's reicht.

Es sollte aber kein Problem sein, die Periode des Eingangssignals genau
zu erfassen. U.U. reicht dazu ein freilaufender Timer0 vom z.B.
90S2313.

Die Erzeugung der PWM hängt von dem benötigten Tastverhältnis ab. Bei
höheren Ausgabefrequenzen kannst Du PWM mit Timer1 verwenden; wenn es
ganz langsam werden soll, kannst Du das PWM-Signal per Software
erzeugen. Damit kannst Du dann 30ms oder auch 100 Sekunden Intervalle
exakt erzeugen, was immer 'exakt' sein mag.

>Sollte doch eigentlich nicht so schwer sein, aufgrund einer
>vorgegebenen Zeitspanne welche letztendlich die Drehzahl angibt.

Ist es auch nicht. Es finden sich einige Beispiele in der Codesammlung.

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.