Hallo.
Ich habe schon seit längerem die Idee eine PWM mit digitaler Ansteuerung
als Hardwareaufbau zu realsieren. Im Anhang ist der Aufbau Schematisch
verdeutlicht.
Vom µC kommt der Sollwert über einen Bus (z.B. I²C), im EEPROM des DAC
wird der Wert gespeichert, sodass auch nach Power Off die Einstellung
wieder vorhanden ist. Bei dem DAC handelt es sich um einen 10/12biter,
je nach Anforderung an die Auflösung. Anschließend wir das Signal auf
einen OPV als Komperator gegeben und mit einer Dreieck oder
Sägezahnspannung verglichen. Am Ausgang des OPV sollte nun ein PWM
Signal anliegen. Dieses kann nun weiterverarbeitet werden z.B. als
Schaltsignal für einen FET.
Nun hab ich einige Fragen.
1. Habe ich in meinem Konzept einen Denkfehler oder ist es schlüssig?
2. Wie sieht die technische Realisierbarkeit aus. OPVs und DACs kosten
ja nicht die Welt. Aber wie sieht es da mit Quarzen/Oszilatoren aus, die
eine Dreickspannung erzeugen?
3. Welche Vor und Nachteile ergeben sich gegenüber einem Aufbau mit
NE555 oder einer PWM direkt aus dem µC?
4. Hat jemand sonstige Anmerkungen?
Alex
Alex schrieb:> 1. Habe ich in meinem Konzept einen Denkfehler oder ist es schlüssig?>> 2. Wie sieht die technische Realisierbarkeit aus. OPVs und DACs kosten> ja nicht die Welt. Aber wie sieht es da mit Quarzen/Oszilatoren aus, die> eine Dreickspannung erzeugen?
Und warum machst du das ganze nicht mit den Timern des uC? Dann kannst
du dir den ganzen Aufbau mit OPs und DAC sparen und du hast direkt 16
Bit Aufloesung.
Ein auf 12 bit präzises analogen Dreiecksignal ?
Vergiss es.
Selbst mit Konstantstromquellen schaffst du keine 8 bit.
3 Bauteile (DAC, Dreieckgenerator, Komparator)
statt 1 Bauteil (ein weiterer uC der aus dem per
I2C übermittelten im EEPROM gespeicherten Wert die
PWM erzeugt auch wenn der Haupt-uC angeschaltet ist)
oder 0 weiteren Bauteilen (der Haupt-uC erzeugt
immer die PWM, warum eigentlich nicht).
Weil die meisten µC ja nicht mehr als 3 timer haben. d.h. Wenn ich 8
einzeln ansteuerbare PWM Signale haben will, brauch ich 3 oder mehr µCs.
Das Dreiecksignal soll keine 8 bit haben, sondern nur zwischen 0V und
z.B. 10DAC+ EEPROM oszilieren. der DAC soll die Schwellspannung
erzeugen, damit der OPV einen Schaltpunkt hat.
Ich kenne mich mit Oszilatoren nicht so aus, sndern kenne nur die
idealen Kennlinien. Aber die realen müssten ja zumindest ansatzweise mit
den idealen übereinstimmen. Dass da ein rauschenvorhanden sein wird, ist
mir klar.
Alex schrieb:> Weil die meisten µC ja nicht mehr als 3 timer haben. d.h. Wenn ich 8> einzeln ansteuerbare PWM Signale haben will, brauch ich 3 oder mehr µCs.
Und wieviele PWMs hat jeder Timer???
Z.B. ein ATmega88 hat schon mal 6 PWM-Kanäle.
Alex schrieb:> Weil die meisten µC ja nicht mehr als 3 timer haben. d.h. Wenn ich 8> einzeln ansteuerbare PWM Signale haben will, brauch ich 3 oder mehr µCs.
Konrad S. sagte es ja schon das ein Timer mehrere PWM Kanaele haben
kann.
Aber andersum ein uC mehr oder weniger ist immer noch billiger und
praeszieser als das ganze mit DAC und OPs.
Alex schrieb:> 1. Habe ich in meinem Konzept einen Denkfehler oder ist es schlüssig?
Es ist unsinnig. Ungefähr vergleichbar mit der Ansteuerung eines
LCD-Monitors mit einem analogen VGA-Signal.
Ein digitaler PWM-Modulator besteht aus einem ladbaren Zähler und einem
Flipflop. Außerdem einem Referenzzähler, der für beliebig viele
PWM-Kanäle gemeinsam verwendet werden kann.
Die Funktion ist wie folgt:
- alle Zähler bekommen den gleichen PWM-Takt
- wenn der Referenzzähler überläuft, löst das folgendes aus:
* alle PWM-Zähler werden mit ihrem Sollwert geladen
* die Flipflops werden gesetzt
- immer wenn ein PWM-Zähler überläuft, setzt er sein Flipflop zurück
Die Ausgänge der Flipflops sind die PWM-Signale. Am einfachsten begreift
man die Funktion, wenn der PWM-Zähler rückwärts zählt. Dann ist die
Pulsbreite am Flipflop direkt proportional zum geladenen Zählerwert.
Aber man kann genausogut vorwärts zählen und das Ausgangssignal
invertieren.
Man braucht für ein k-kanaliges n-Bit PWM-System also:
- k n-bittige Register für den Sollwert
- k n-bittige Zähler mit Preload-Funktion
- k Flipflops
- einen weiteren n-bittigen Zähler
- irgendeine Mimik, um die Sollwerte in die Register zu bekommen
im wesentlichen braucht mal also k*(2n+1) + n Flipflops und ein bisschen
Logik zur Verknüpfung. All das findet man in einem PLD.
http://www.mikrocontroller.net/articles/Programmierbare_Logik
XL
@ Alex (Gast)
>Weil die meisten µC ja nicht mehr als 3 timer haben. d.h. Wenn ich 8>einzeln ansteuerbare PWM Signale haben will, brauch ich 3 oder mehr µCs.
Macht kein Mensch so. Entweder ein uC mit mrh Timern/PWM Ausgängen oder
digitale PWM-ICs. Analoge PWM Erzeugung ist Schnee von vorgestern.
Wenn die PWM-Frequenzen eher niedrig sind, nimmt man Soft-PWM.
Konrad S. schrieb:> Alex schrieb:>> Weil die meisten µC ja nicht mehr als 3 timer haben. d.h. Wenn ich 8>> einzeln ansteuerbare PWM Signale haben will, brauch ich 3 oder mehr µCs.>> Und wieviele PWMs hat jeder Timer???> Z.B. ein ATmega88 hat schon mal 6 PWM-Kanäle.
Das kann ich dir leider nicht sagen, da ich mich noch nicht so tief in
die Materie der µC eingearbeitt habe um das für alle Familien zu wissen.
Von FPGAs hab ich bishr gar keine Ahnung, von daher wäre eine kleine
Skizze zu dem was Axel geschrieben hat sehr nützlich.
Alex schrieb:> Weil die meisten µC ja nicht mehr als 3 timer haben. d.h. Wenn ich 8> einzeln ansteuerbare PWM Signale haben will, brauch ich 3 oder mehr µCs.
Und um das zu vermeiden, nimmst du 8 DACs plus OPVs plus Beschaltung -
ist dir nicht bewusst was für eine völlig unsinnige Argumentation das
ist?
Nicht nur analoge PWMs sind nicht mehr Stand der Technik, diskrete
digitale sind ebenso out, ein winziger µController kann das einfach
besser und billiger und kleiner. Höchstens über ein CPLD/FPGA mit 8 x
PWM könnte man noch nachdenken, aber die Entwicklungskosten dafür lohnen
sich nicht.
Gruss Reinhard
> Weil die meisten µC ja nicht mehr als 3 timer haben. d.h. Wenn ich 8> einzeln ansteuerbare PWM Signale haben will, brauch ich 3 oder mehr µCs.
Oje, kannst du wirklich keine PWM programmieren ?
> Kennt jemand einen SPI oder I2C IC, der ca. 8 Pins und min. 2 PWM> Ausgänge hat?
bereits ein ATTiny10.
Ist aber unsinnig, 2 Pins Versorgung, 3 Pins SPI, 2 Pins PWM, ist eine
schlechte Ausnutzung.
PCA9626B hätte 24 PWM Kanäle, PCA9532 16, und beide sind für LEDs
gebaut.
Alex schrieb:> Das kann ich dir leider nicht sagen, da ich mich noch nicht so tief in> die Materie der µC eingearbeitt habe um das für alle Familien zu wissen.
Du musst es mit auch garnicht sagen. Ich lese das selbst aus den
Datenblättern. ;-)