Forum: Mikrocontroller und Digitale Elektronik PWM Signal in Gleichspannung wandeln und multiplizieren


von Kolja B. (decola977)


Lesenswert?

Hallo alle zusammen.

Ich bin jetzt schon seit einiger Zeit am Suchen und finde keine Lösung 
fürt das Problem, zumal ich recht neu in der Materie bin.

Konkret möchte ich 2 PWM Signal multiplizieren und in Gleichspannung 
umwandeln. Dabei ist es egal in welcher Reihenfolge das passiert.

PWM -> Multi -> Gleichspannung
PWM -> Gleichspannung -> Multi

Ratschläge wie dies am besten zu machen ist?

Danke schonmal für die Antworten greetz decola977

von David P. (chavotronic)


Lesenswert?

Was meinst du mit "2 PWM multiplizieren"
Es gibt beim PWM ja nur die Zustände 0 und 1.
Demnach sollte das ganze mit einem AND-Gatter zu multiplizieren sein ( 
1&1 =1 1&0=0 0&1 =0 0&0=0)
Dahinter dann ein Tiefpass deiner Wahl (zB RC Glied) um daraus eine 
Gleichspannung zu erzeugen.

von Kolja B. (decola977)


Lesenswert?

Also wenm ich richtig bin kann ein PWM Signal verschiedene Zahlenwerte 
repräsentieren. Also wenn das Signal kurz ist steht das für eine 10 und 
wenn es 128 (zum Beispiel). Diese beiden Zahlenwerte würde ich gerne 
multiplizieren.

von Martin K. (maart)


Lesenswert?

Trink weniger Alkohol.

von Alexander S. (esko) Benutzerseite


Lesenswert?

Beschreibe mal das Problem als ganzes.
Woher kommen die PWM-Signale, in welcher Form liegen sie vor (Frequenz, 
Spannung), was repräsentieren sie, wieviel Ausgangssignale soll es 
geben, was soll mit dem Ausgangssignal geschehen, welche Form soll 
dieses haben, und was soll damit gesteuert werden?

von MaWin (Gast)


Lesenswert?

Kolja B. schrieb:
> Ratschläge wie dies am besten zu machen ist?

Multiplizieren ist in Analogtechnik schlecht zu machen. Also sollte man 
die PWM Signale digital erfassen, das gehr sehr genau, binär 
multiplizieren, und wieder in ein PWM Signal wandeln, welches dann 
gefiltert werden kann.

von Teo D. (teoderix)


Lesenswert?

Analog würde das in etwa so aussehen:
http://de.wikipedia.org/wiki/Analogmultiplizierer#Prinzipaufbau
Wobei natürlich noch die Wandlung der PWMs fehlt.

Mach was MaWin sagt.
Er wird Dich schon nicht die Spannung in der Steckdose mit der Zunge 
prüfen lassen... hoffe ich ;)

von Wolfgang (Gast)


Lesenswert?

MaWin schrieb:
> Multiplizieren ist in Analogtechnik schlecht zu machen. Also sollte man
> die PWM Signale digital erfassen, das gehr sehr genau, binär
> multiplizieren, und wieder in ein PWM Signal wandeln, welches dann
> gefiltert werden kann.

Man muss es nicht übertreiben.
Als analoge Lösung kann man das erste PWM-Signal mit einem Tiefpass in 
ein Analogsignal umwandeln und dieses mit einem Analogschalter mit dem 
zweiten PWM-Signal takten. Ein Tiefpaßfilter dahinter gibt einem ein 
Analogsignal proportional zum Produkt der beiden PWM-Steuersignale.
Ob die Bandbreite bei diesem Verfahren reicht, hängt von der Anwendung 
ab.

von Harald A. (embedded)


Lesenswert?

Mein Eindruck ist, es geht schlicht und ergreifend darum, ein PWM-Signal 
in 0..10V zu wandeln - richtig?

Also einfaches RC-Glied als Tiefpass am PWM Ausgang und anschließend 
OP-Schaltung mit Verstärkung von 2, d.h. zwei gleiche Widerstände in der 
Rückkopplung.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

mir ist nicht klar was du da multiplizieren möchtest.

PWM = Puls-Weiten-Modulation. Das ist erstmal ein digitales 0/1 Signal

Angenommen, du möchtest eine Glühbirne mit PWM ansteuern. Wenn du in 1 
Sekunde die Hälfte der Zeit Spannung auf der Leitung hast, und die 
andere Zeit nicht, hast du ein Tastverhältnis von 50%

Wegen mir kannst du da auch eine Wandel- und Ansteuer-Routine haben, 
welche dir aus  0 .. 255 ein entsprechendes Pulsverhältnis von 0 .. 100% 
"macht".

aber was nützt die dir Multiplikation von 128 (=50,0%) mit 10 (=0,04%)?

Heraus kommt 2% (oder dein ursprünglicher Binärwert "5"). Aber was 
machts du nun damit? Was soll dieser Rechenwert ausdücken?

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?


von Kolja B. (decola977)


Lesenswert?

Erst mal danke für die Antworten. Ich werde jetzt mal versuche etwas 
Licht ins Dunkle zu bringen.

Ziel ist es mit einem Raspberry PI einen Show Laser mit Hilfe des ILDA 
Standards zu kontrollieren. Der ILDA Standard schreibt vor das Position, 
Intensität und andere Parameter des Lasers über eine Gleichspannung im 
Bereich von -5V bis 5V geregelt werden.

Der Rasperberry PI ist ein Minicomputer der ein GPIO (General-purpose 
input/output) Interface hat, welches die Möglichkeit hat PWM Signal 
auszugeben. Dieses PWM Signal kann 1024 verschiedene Zustände darstellen 
(oder hat 1024 verschieden lange Tastgerade wenn man so will).

Dies ist aber für die Steuerung eines Laser zu wenig da dann die 
darstellbaren Formen zu "Eckig" sind. Aus diesem Grund möchte ich gerne 
das Signal von 2 PWM Ausgängen mit einander multiplizieren, so dass ich 
auf 1024*1024 = 1048576 Zustände komme (wobei 16Bit => 65536 ausreichend 
sind).

Die Frequenz des PWM Signals lässt sich im Bereich von 4600Hz bis 
19.2MHz frei einstellen. Die Spannung kann bis zu 5V erreichen.

Es gebe auch die Möglichkeit ein UART, SPI oder I2C Ausgang zu nutzen, 
aber ich frage mich ab dass nicht noch komplizierter wäre.

@Wolfgang: Wäre dein Lösungsvorschlag für dieses Scenario geeignet?

von Alexander S. (esko) Benutzerseite


Lesenswert?

Kolja B. schrieb:
> Ich werde jetzt mal versuche etwas Licht ins Dunkle zu bringen.
Das ist gut. Optimalerweise schreibt man das gleich im ersten Beitrag.

> Ziel ist es mit einem Raspberry PI einen Show Laser mit Hilfe des ILDA
> Standards zu kontrollieren.
Läuft das Ganze schon mit 10 Bit? Ich könnte mir vorstellen, dass der 
Raspberry PI dafür zu langsam ist. Nicht von der Rechenleistung, sondern 
von der Ausgabegeschwindigkeit.

> Dies ist aber für die Steuerung eines Laser zu wenig da dann die
> darstellbaren Formen zu "Eckig" sind. Aus diesem Grund möchte ich gerne
> das Signal von 2 PWM Ausgängen mit einander multiplizieren, so dass ich
> auf 1024*1024 = 1048576 Zustände komme (wobei 16Bit => 65536 ausreichend
> sind).
Da würde ich dir stark von abraten. Das multiplizieren funktioniert 
schon, z.B. so wie von Wolfgang vorgeschlagen, aber es wird zu ungenau 
werden.
D.h. du wirst es kaum schaffen zusätzliche 6 Bit zu gewinnen.
Damit man eine Auflösung von 16 Bit ausschöpfen kann, braucht man eine 
Genauigkeit von 15 ppm. Das ist analog sehr schwer und bei deinen 
Vorkenntnissen unmöglich.
Jedenfalls ist es viel einfacher einen Mikrocontroller zu verwenden, der 
schon 16 Bit Ausgänge hat.

> Es gebe auch die Möglichkeit ein UART, SPI oder I2C Ausgang zu nutzen,
> aber ich frage mich ab dass nicht noch komplizierter wäre.
Das wäre auch eine Möglichkeit, wenn du keinen anderen Prozessor 
verwenden willst. An diese Ausgänge kannst du dann einen externen DAC 
anschließen.

> Die Frequenz des PWM Signals lässt sich im Bereich von 4600Hz bis
> 19.2MHz frei einstellen.
Die Frequenz des einen PWM Signals, das per Hardware erzeugt wird. 
Wenn du mehrere haben willst, brauchst du Soft-PWM.

: Bearbeitet durch User
von Kolja B. (decola977)


Lesenswert?

Also ich denke es wird dann eine Varinate mit SPI werden. Dazu brauche 
ich dann mehrere DACs die ich mit nur einem Master ansteuern kann (also 
die Adressierbar sind). Jemand ne Idee was für Bauteile man dort nimmt? 
Ideal wäre es diese Bauteile könnten von 0 bis 10 Volt arbeiten. Gibt es 
sowas? Alle die ich gefunden habe arbeiten nur bis 5 Volt.

von Wolfgang (Gast)


Lesenswert?

Kolja B. schrieb:
> Jemand ne Idee was für Bauteile man dort nimmt?

Du solltest erstmal das Timing klären, d.h. mit welcher Frequenz deine 
Analogwerte aktualisiert werden müssen.

von Ralph (Gast)


Lesenswert?

Nimm einen 2. µC der genügend 16Bit PWM Kanäle anbieten kann.

2 - 3 Kanäle wirst du bei vielen µC finden,
Brauchst du mehr solltest du dir mal die TMS570 von TI ansehen, aber die 
Versionen mit dem Modul HET (HighEndTimer).
Die können bis zu ~30 PWM Kanäle parallel.

Diesen zusätzlichen µC schließt du per SPI an. Je nach µC geht diese SPI 
mit bis zu sysclock/2 , das könne dann auch mal gute 30 Mbit/s sein.
Über die SPI gibt du die einzustellenden Werte an den 2. µc


Die Basteleien die du ursprünglich mal angefragt hast sind nur Murks und 
werden niemals zu einem befriedigendem Ergebnis führen.


Willst du mehrere DAC verwenden mit je einer separaten SPI geht das 
allerdings auch recht einfach.
2 Möglichkeiten.
1. Alle DAC's parallel an den SPI und jeweils eine eigene ChipSelect 
Leitung.
Über diese Chipselect kannst du den einzelnen DAC adressieren.
2. Alle DAC's in Reihe an den Spi. Dann alle Daten in der richtigen 
Reihenfolge durchtakten und die Dacs übernehmen die Daten mit wegnahme 
des CS.

von Karl H. (kbuchegg)


Lesenswert?

Kolja B. schrieb:
> Also ich denke es wird dann eine Varinate mit SPI werden. Dazu brauche
> ich dann mehrere DACs die ich mit nur einem Master ansteuern kann (also
> die Adressierbar sind). Jemand ne Idee was für Bauteile man dort nimmt?
> Ideal wäre es diese Bauteile könnten von 0 bis 10 Volt arbeiten. Gibt es
> sowas? Alle die ich gefunden habe arbeiten nur bis 5 Volt.

Ein OP-Amp um 5V auf 10V zu boosten sollte jetzt aber nicht das große 
Problem sein.
DIe erste Schaltung, die ich mit Google gefunden habe
http://ruggedcircuits.com/html/circuit__20.html

R1, C1 sind in dieser Schaltung nur deshalb drinnen, weil da mit einer 
PWM reingegangen wird. Brauchst du daher mit einem DAC nicht. Der Rest 
ist ein Verstärker mit einem Verstärkungsfaktor von 2 (die beiden 10k 
Widerstände)

: Bearbeitet durch User
von Hans (Gast)


Lesenswert?

Ralph schrieb:
> Nimm einen 2. µC der genügend 16Bit PWM Kanäle anbieten.

Braucht er doch garnicht.
So wie schon gesagt reicht ein DAC  mit SPI oder I2C der die benötigte 
Auflösung und Bandbreite bereitstellt. Dahinter dann noch nen OP der das 
Signal von 0-5V auf -5-5V verschiebt.

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

typischer Fall von Denkblockade. Einen Analogwert per PWM auszugeben 
dient dazu, eine Schaltstufe, z.B. eine H-Brücke, anzusteuern um 
Verlustleistung zu sparen. Den PWM-Ausgang mit Filtern wieder in einen 
Analogwert zurückzuverwandeln ist eine Schnapsidee (allerdings eine 
verbreitete), da nimmt man den Analogwert und gibt ihn auf einen DAC, 
dazu wurden die erfunden. Und die Frage der Multiplikation (eine weitere 
Schnapsidee, die sich aus der ersten ergibt) existiert garnicht, man 
wählt ganz einfach den DAC so dass er die nötige Auflösung hat, und 
alles wird gut.

Gruss Reinhard

von Harald W. (wilhelms)


Lesenswert?

Wolfgang schrieb:

> Als analoge Lösung kann man das erste PWM-Signal mit einem Tiefpass in
> ein Analogsignal umwandeln und dieses mit einem Analogschalter mit dem
> zweiten PWM-Signal takten. Ein Tiefpaßfilter dahinter gibt einem ein
> Analogsignal proportional zum Produkt der beiden PWM-Steuersignale.

Genau so hat man früher präzise Multiplikatoren gebaut.
Gruss
Harald

von Axel S. (a-za-z0-9)


Lesenswert?

Harald Wilhelms schrieb:
> Wolfgang schrieb:
>
>> Als analoge Lösung kann man das erste PWM-Signal mit einem Tiefpass in
>> ein Analogsignal umwandeln und dieses mit einem Analogschalter mit dem
>> zweiten PWM-Signal takten. Ein Tiefpaßfilter dahinter gibt einem ein
>> Analogsignal proportional zum Produkt der beiden PWM-Steuersignale.
>
> Genau so hat man früher präzise Multiplikatoren gebaut.

Was heißt hier "früher", das macht man immer noch so.

Aber Multiplikation war ja (abgesehen vom Rest) auch falsch. Denn wenn 
man zwei "schmale" DAC zu einem "breiten" kombinieren will, dann 
multipliziert man die Ausgangssignale nicht, sondern addiert sie mit 
passender Gewichtung.

Z.B. kann man aus 2 8-bit-DAC einen 16-bit DAC machen, indem man das 
Ausgangssignals des 2. im Verhältnis 1:256 abschwächt und zum anderen 
addiert. Wie genau das wird und ob die unvermeidlichen Sprünge beim 
Updaten der Einzel-DAC zur Anwendung passen, ist wieder eine andere 
Frage.


XL

von Alexander S. (esko) Benutzerseite


Lesenswert?

Harald Wilhelms schrieb:
> Genau so hat man früher präzise Multiplikatoren gebaut.

Wie "präzise" wurde man denn da?

von Axel S. (a-za-z0-9)


Lesenswert?

Wolfgang schrieb:
> Kolja B. schrieb:
>> Jemand ne Idee was für Bauteile man dort nimmt?
>
> Du solltest erstmal das Timing klären, d.h. mit welcher Frequenz deine
> Analogwerte aktualisiert werden müssen.

Das PDF zum ILDA Standard Projector erwähnt ein Pestpattern, das 30000 
Punkte pro Sekunde enthält. Dafür braucht man 60KB/s pro DAC-Kanal. 
Davon sind es mindestens 5 (X, Y, R, G, B) und optional noch ein paar 
mehr. Allein für die 5 Kanäle braucht man also 600KB/s oder 4.8Mbit/s 
bei serieller Übertragung.

OK, vermutlich muß man soviel nicht können. Zumindest so lange man keine 
Projektoren baut sondern Steuergeräte. Trotzdem ist das recht sportlich.


XL

von Peter (Gast)


Lesenswert?

Kolja B. schrieb:
> Dies ist aber für die Steuerung eines Laser zu wenig da dann die
> darstellbaren Formen zu "Eckig" sind. Aus diesem Grund möchte ich gerne
> das Signal von 2 PWM Ausgängen mit einander multiplizieren, so dass ich
> auf 1024*1024 = 1048576 Zustände komme (wobei 16Bit => 65536 ausreichend
> sind).

Das ist ein großer Irrtum

Durch die Multiplikation bekommst du nur ein_ _einziges Bit dazu !!!

Du hast
 !!!

von Harald W. (wilhelms)


Lesenswert?

Alexander Schmidt schrieb:

>> Genau so hat man früher präzise Multiplikatoren gebaut.
>
> Wie "präzise" wurde man denn da?

Nun, in den siebziger Jahren hat man solche Multiplizierer
(Multiplikatoren war falsch) zur Leistungsmessung in der
Energietechnik benutzt. Ich denke schon, das die Genauig-
keit besser 1% war.
Gruss
Harald

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.