Forum: Mikrocontroller und Digitale Elektronik Signalnachbildung über PWM


von Kxx S. (kskolik)


Angehängte Dateien:

Lesenswert?

Hallo,

nach langem Suchen im Forum habe ich leider nichts passendes gefunden.

Ich habe folgendes vor:
Mittels PWM möchte ich ein (beliebiges Signal) ausgeben. Besser gesagt 
möchte ich mit einer PWM eine Leistungsstufe (MOSFET incl. Treiber) 
ansteuern, welche mir dann das Signal nachbildet.

Das PWM Muster sollte dann in etwa so aussehen, wie auf dem angehängten 
Bild zu erkennen ist. Die Frequenz auf dem Bild ist erst einmal außer 
Acht zu lassen.

Für meinen Anwendungsfall reicht es nicht aus, eine feste sinusförmige 
Kurve nachzubilden, da sich diese in Frequenz und Amplitude ändert. 
Ebenfalls ist es nicht zwingend ein Sinus.

Prinzipiell habe ich da folgende Idee:
Ein Microcontroller erzeugt mir das nachzubildende Signal, dieses soll 
dann per UART an einen AT90PWM3B Controller übertragen werden, welcher 
mir dann das zugehörige PWM Muster generiert.

---   ---   ---
Bietet es sich an, das Muster mittels Software PWM zu generieren, oder 
gibt es eine Möglichkeit die Hardware PWM zu verwenden?
---   ---   ---

Zwei Controller sind deshalb notwendig, da der AT90PWM3B nicht über 
genügend A/D Wandler bzw. IO Ports verfügt.

Ich hoffe, ich habe das Problem hinreichend genau beschrieben.

Danke für reges Antworten :-)

-Kai

von kommutator (Gast)


Lesenswert?

...etwa so?

http://en.wikipedia.org/wiki/Switching_amplifier


Da gibt es jede Menge Lösungen für. Suchbegriffe:

*sinusbewertete PWM
*Class D Amplifier
*sigma delta

von DDS (Gast)


Lesenswert?


von Kxx S. (kskolik)


Lesenswert?

Ja, eine Class-D Endstufe ist im Prinzip, was ich benötige.

Nur, wie realisiere ich das am besten mit dem AT90PWM3B?

Zu dem Bild bei meinem ersten Beitrag: Das untere Diagramm (der Sinus) 
ist das Eingangssignal, das über UART kommt. Das obere Diagramm ist dann 
das generierte PWM Muster am Ausgang des µC.

von Thomas B. (Firma: Druckerei Beste) (virtupic)


Lesenswert?

Welche Frequenz hat denn dein Signal? PWM ist ja ein DAC. Und wenn der 
Duty Cycle digital gesteuert wird, dann kriegst du einen 
Quantisierungsfehler, der von der Prozessorfrequenz abhängt.

Wenn du Audio mit 20 kHz Bandbreite ausgeben willst und dein Prozessor 
(sorry, kenne die Daten nicht) das Timing mit 20 MHz Auflösung steuern 
kann, dann kriegst du 20 MHz  20 kHz  2 = 500 Werte. Hast also einen 
DAC von 9 Bit Auflösung.

Ich weiß, Klasse D-Verstärker hören sich teilweise prima an. Keine 
Ahnung, wie man dran drehen muss, damit es klappt.

virtuPIC

von Kxx S. (kskolik)


Lesenswert?

Das Signal hat eine Frequenz von unter 1kHz. Ist allerdings variabel im 
Bereich von 100Hz - 1kHz (ungefähr).

Vielleicht reden wir gerade aneinander vorbei, oder ich habs noch nicht 
ganz verstanden.

Ich hab mir das so vorgestellt, dass das nachzubildende Signal über UART 
kommt, mit einem Timerstand verglichen wird (halt PWM) und dann an den 
µC Pins wieder ausgegeben wird.

Also wie kann ich den Vergleich durchführen? Normalerweise wird bei der 
PWM ja das Zählregister mit dem OCR (wenn ich das jetzt richtig im Kopf 
habe) verglichen, und damit der Ausgang geschaltet.
Jetzt habe ich aber keinen festen Wert in dem Vergleichsregister, 
sondern den "variablen" Wert von meinem Signal...

von Kai G. (runtimeterror)


Lesenswert?

>Jetzt habe ich aber keinen festen Wert in dem Vergleichsregister,
>sondern den "variablen" Wert von meinem Signal...

Das sollte aber kein Problem sein, wenn deine PWM-Frequenz deutlich 
höher als die des zu modulierenden Signals ist.

Ich weiß nicht, ob beim Ändern des OCR-Wertes was beachtet werden muss 
(insbesondere beim Herabsetzen der Grenze), denke aber nicht. Probier's 
doch einfach mal aus.

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.