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.
Wäre vielleicht günstig zu erwähnen, wovon Du redest. Also welches Datenblatt z.B. Dann könnte man dir evtl. sogar helfen.
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
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.