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
...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
Schonmal an DDS gedacht und die PWM als DAC ? http://de.wikipedia.org/wiki/Direct_Digital_Synthesis http://www.mikrocontroller.net/articles/DDS
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.
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
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...
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.