Forum: Mikrocontroller und Digitale Elektronik PWM-Rechteck-Generator Frequenz und Duty-Cycle Einstellbar


von Roland Z (Gast)


Lesenswert?

Hallo,

ich suche Anregungen wie ich mir so was bauen könnte. Es geht darum das 
ich Rechtecksignale im Bereich von 0-250Khz erzeugen möchte und der 
Duty-Cycle einstellbar sein soll. Mit nem Tiny85 sollte das doch mittels 
High-Speed PWM möglich sein nur kann ich die Frequenz nicht verstellen 
in der Gewünschten Schrittweite von 1KHz sondern nur mit dem Vorteiler 
was das ganze "grober" macht. Je nach Einstellung im Fast-PWM Modus ist 
das mit der PWM-Auflösung (8 Bit, also 256 Schritte reichen dicke!) auch 
nicht machbar.
Gibts da ne möglichkeit ohne gleich nen DDS zu bemühen?

Grüße
Roland Z.

von W.S. (Gast)


Lesenswert?

Schreib doch lieber erstmal, was du denn eigentlich bauen willst. Wenn 
es ein Testgenerator für den Basteltisch sein soll, dann mach es lieber 
rein analog: Dreieck variabler Frequenz erzeugen und per Komparator mit 
variabler Schwelle den Rechteck mit variablem Tastverhältnis draus 
machen.

Nicht für alles braucht man einen uC.

W.S.

von Karl H. (kbuchegg)


Lesenswert?

Roland Z schrieb:

> was das ganze "grober" macht. Je nach Einstellung im Fast-PWM Modus ist
> das mit der PWM-Auflösung (8 Bit, also 256 Schritte reichen dicke!) auch
> nicht machbar.

Gibts da keinen PWM Modus, bei dem du die Obergrenze vorgeben kannst?

von Roland Z (Gast)


Lesenswert?

@W.S.,
Das ist war man braucht nicht für alles einen uC, allerdings vereinfacht 
er das ganze ungemein, will sagen, er zeigt mir reproduzierbar an was am 
Ausgang "rauskommt". Ich will mir nen Testgenerator bauen um z.B. 
Treiberstufen in Verbindung mit dem OSzi etwas zu Testzwecken 
(Signalqualität der Übertragung usw.) zu "quälen".

@kbuchegg,

Doch gibts ich ziehe mir grade das Datasheet vom Tiny85 rein, geht von 
0-250KHz in 10 KHz schritten und von 250-500KHz in 20KHz schritten. 
Allerdings ist die PWM-Auflösung nicht wirklich toll da ich außer am 
Prescaler auch am TOP-Register nen Wert eintragen muss der meine 
Zählerbandbreite begrenzt und somit das PWM-Verhältnis auch. :)

Eventuell ist nen DDS-Chip der durch den uC gesteuert wird doch ne 
bessere Lösung....

von Norbert L. (norbert_l64) Benutzerseite


Lesenswert?

Hm, 250kHz mit 8-Bit aufgelöst ergibt 15,625ns pro Bit. Da brauchts wohl 
eine MCU mit mindestens 65-MHz Clock(PLL).

von Michael (Gast)


Lesenswert?

Norbert L. schrieb:
> Hm, 250kHz mit 8-Bit aufgelöst ergibt 15,625ns pro Bit. Da brauchts wohl
> eine MCU mit mindestens 65-MHz Clock(PLL).

Man muß nicht alles mit PWM machen, es gibt schließlich auch noch DDS 
mit direkter Ausgabe über DAC, z.B. den miniDDS (Grundfunktion in 7 
Zeilen Assemlercode).

von Roland Z (Gast)


Lesenswert?

@Norbert L,
der Tiny85 hat ne PLL und kann 64MHz erzeugen. Da fress ich mich im 
Datasheet grade durch.

@Michael,
ich denke du spielst auf Jespers MiniDDs an. Nen DAC brauche ich ja 
nicht da ich nur Rechteck erzeugen will. Wie ich die Vorgabe allerdings 
mache blicke ich noch nicht so ganz... Den Sollwert würde ich per RS232 
in den Controller übertragen, die Berechnung würde ein anderer 
Controller erledigen damit der "DDS-Controller" viel Zeit zum PWMen hat.

von Karl H. (kbuchegg)


Lesenswert?

Roland Z schrieb:
> @Norbert L,
> der Tiny85 hat ne PLL und kann 64MHz erzeugen. Da fress ich mich im
> Datasheet grade durch.
>
> @Michael,
> ich denke du spielst auf Jespers MiniDDs an. Nen DAC brauche ich ja
> nicht da ich nur Rechteck erzeugen will. Wie ich die Vorgabe allerdings
> mache blicke ich noch nicht so ganz... Den Sollwert würde ich per RS232
> in den Controller übertragen, die Berechnung würde ein anderer
> Controller erledigen damit der "DDS-Controller" viel Zeit zum PWMen hat.

Ähm. Der erzeugt doch die Ausgabe sowieso mehr oder weniger komplett in 
Hardware bzw. mittels Interruptroutinen. Und in der Zwischenzeit dreht 
er Däumchen. Da kann er ganausogut in der Zwischenzeit auch aus den per 
RS232 erhaltenen Daten die Konstanten für die Hardware ausrechnen.

von Roland Z (Gast)


Lesenswert?

Hmm, nun ja auch wieder wahr. Allerdings muss ich erst mal das Prinzip 
des DDs verstehen dann kann ich mich um den Rest kümmern. Ich ziehe mir 
den Assemblercode von Jesper mal rein.

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.