PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Software PWM: 6 Kanäle, >25kHz, 10Bit -> möglich?



Christoph2
12.09.2011, 12:24
Hallo,

ich will einen Adapter bauen, der das 0-10V Ausgangssignal einer SPS in ein PWM Signal umwandelt, mit dem ich dann z.B. Lampen dimmen kann.
Der Adapter soll 6 Signale gleichzeitig umwandeln können, also einfach per ADC 10 Bit Werte einlesen und über PWM ausgeben.

Dazu will ich einen ATmega8 mit einem 16MHz Quarz verwenden. Da der AVR aber nur zwei hardware PWM Ausgänge hat, werde ich die PWM Ausgabe softwaremäßig lösen.
Hier gibt es ein sehr gutes Beispielprogramm: http://www.mikrocontroller.net/articles/Soft-PWM (ganz unten, unter "Intelligenter Lösungsansatz").

Ich habe dieses Programm schon einmal verwendet, mit 8 Kanälen, aber nur 100Hz und 10Bit. Hat super funktioniert auf einem mega32, nur hat die PWM ein nerviges Summen produziert.
Diesmal will ich nur 6 Kanäle und 10 Bit, aber dafür >25kHz, damit man das Summen nicht mehr hört.

Ganz unten auf http://www.mikrocontroller.net/articles/Soft-PWM gibt es eine Zusammenfassung, in der für das Programm eine CPU Auslastung von 0,3-1,2% berechnet ist. Diese gilt für das Beispielprogramm, es hat 8 Kanäle, 100Hz und 8 Bit auf einem 8MHz Controller.

Kann man irgendwie berechnen/abschätzen wie hoch die Auslastung mit 6 Kanälen, 25kHz und 10 Bit auf einem 16MHz Controller ist, bzw. ob das überhaupt möglich ist?

LG
Christoph

Besserwessi
12.09.2011, 18:14
Ganz so schnell wird der AVR nicht sein. Beim klassischen Software PWM braucht man pro Kanal und Zeitschritt mindestens 5 Taktzklen bei 8 Bit Auflösung, bei 10 Bit Auflösung eher 10 oder mehr, wenn man in ASM Programmiert. In C wird man eher bei 30 Zyklen aufwärts landen. Unter der Annahmen 10 Zyklen kommt man da auf 10*25000*6*1024 = 1,536 * 10^9 Zklen je Sekunde. Der Hypotetische AVR müßte als mindestens mit 1,5 GHz laufen, bzw. der 16 MHz Typ wäre etwa 100-fach überlastet.

Mit der berechenten Auslastung für das Beispiel mit 8 Bit kann da auch was nicht hinkommen. Das sollte schon mehr als 10 % Auslastung bedeuten - wenn man nicht aufpasst auch über 50%.

Es gibt µCs die haben 6 Kanäle Hardware PWM, wenn auch teils nur mit 10 Bit Auflösung. Den Schritt von 8 Bit auf 10 Bit, könnte man ggf. in Software per Dithering erreichen.

seite5
12.09.2011, 18:23
Hallo,
der AVR XMega sollte das wohl schaffen, genügend Hardware-PWM hat er, und mit seiner Hi-Res Extension sollten die 10bit @ 25kHz
auch kein Problem sein.
mfg
Achim