PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM-Spannungen skalieren



Ruppi
02.10.2006, 17:03
Hallo,
ich erzeuge mit einem ATMega8 (V=5V) 2 sinusförmige Ausgangsspannungen über zwei PWM-Pins mit nachgeschalteten Filtern zweiter Ordnung. Problem ist nun, dass ich die Amplitude der beiden Spannungen mit EINEM Poti einstellen möchte (zwischen 0V und 1V) und keinen Ansatz für eine Lösung habe. Ich hatte anfangs mit den PWM-Signalen BC547 Transistoren geschaltet, die die vom Poti kommende Spannung beim Durchschalten auf Masse zieht, jedoch wurde die Signalform dabei verfälscht.
Wäre nett, wenn mir jemand helfen könnte, vielen Dank dafür...

Ruppi

clupus
02.10.2006, 18:38
Eine Möglichkeit wäre im Chip:
Du erzeugst eine analoge Spannung mit deinem Poti und lässt den AVR diese Spannung messen. (Muss ja nicht höllisch genau sein) Ich gehe mal von einer ADC-Leitung mit 10 Bit aus.
Jetzt lässt du die PWM-Signale nicht direkt erzeugen (mit der Sinus-Folge), sondern multiplizierst deine PWM-Folge mit <ADC-Wert>/1024. Damit wird die Amplitude im Chip errechnet und du hast (theoretisch) genau das selbe Signal wie ohne Poti-Konstruktion.

Warum das mit den Transistoren nicht klappt, liegt vermutlich (ich weiß es nicht genau) daran, das die Transistoren beim Einschalten vom sperrenden Zustand über den verstärkenden Zustand (Ib ~ Ic) in den übersättigten Zustand und andersherum schalten. Damit würde beim Einschalten das Signal leicht verzerrt, da erst der Transistor voll durchschalten muss.
Du solltest mal suchen nach speziellen HF-Transistoren. Vllt. lässt sich auch was mit FETs machen (die sind immer ohmisch).
Eine andere Möglichkeit wäre (je nach gewünschter Ausgangsleistung !?!) statt mit dem Transistor eine Spannung von 1V zu modulieren (mit der PWM), eine Spannung von 1 V zu modulieren (mit der Sinus-Spannung nach den Filtern) oder aber (dazu bracuhst du FETs) die Ausgangsspannung des AVRs über einen dynamischen Spanungsteiler zu jagen. (Ein Widerstand und ein FET werden in Reihe geschalten; Widerstand an Drain. An den Widerstand kommt der Ausgang des AVRs, an Source kommt Masse. Nun bestimmt die Spannung am Gate den Widerstand des FETs)

Ich hoffe geholfen zu haben.

rideyourstyle
02.10.2006, 20:28
das mit dem verfälschen:

je nach frequenz würde ich einmal nach audioverstärker suchen... oder zeig doch mal deine schaltung. um eine analoges signal verzerrungsfrei zu verstärken muss man die basis "vorspannen". aber ein volt sind da zuviel. eher 0.7 oder so. kommt auch noch auf den trans drauf an. (datenbaltt!! :-p )

magnetix48
02.10.2006, 20:50
Hallo Ruppi,

Mag sein, dass ich deine Schaltung nicht richtig begriffen habe, aber aus deinem Versuch, mit Transistoren abzuschwächen habe ich darauf geschlossen, dass du versucht hast, auf der PWM-Seite (am uC) abzuschwächen.

Sicher hast du einen Operationsverstäker für das Filter benutzt, sodass du am Ausgang des OP eine Spannung mit niedrigem Innenwiderstand hast.
Dort könntest du die Signale mit Potis abschwächen und wenn du ein niederohmiges Signal brauchst, noch einmal OPs als Spannungsfolger nachzuschalten.

Gruß
Detlef

Ruppi
03.10.2006, 10:12
Guten Morgen!
Ich muss wohl erstmal noch ein paar Randbedingungen nennen: Ich erzeuge mit einem ATMega8 über Fast-PWM (f=250kHz, 6Bit) zwei Rechteckspannungen. Gedacht ist das ganze für eine Schrittmotorsteuerung. Die Sinussignale möchte ich vorgeben, um Mikroschritte zu erzeugen.
Detlef, Du hast Recht, ich habe versucht, die Signale auf der uC-Seite abzuschwächen. Die Filter sind einfache RC Filter, also ohne OP. Das Problem ist, dass die Amplituden BEIDER Signale mit einem Poti abgeschwächt werden müssen, oder ich müsste ich zwei Potis verwenden und jedesmal, wenn ich den Phasenstrom ändere, beide genau verstellen - das wird also nichts.
Christian: Deine Idee ist grundsätzlich gut, aber bei einem 6-Bit PWM Signal würde ich durch die Multiplikation ja Auflösung verschenken, die ich nicht zur Verfügung habe.
Im Grunde bräuchte ich sowas, wie einen OP im Doppelpack, bei dem sich die Verstärkung beider OPs mit einer externen Spannung einstellen lässt. Leider habe ich keinen Schaltplan von der Sache. Ich habe das früher mal mit einem Stereopoti gemacht, funktionierte auch wunderbar, aber zum einem viel zu groß und zum anderen auch nicht sonderlich genau - einfach unschön...
ich frage mich, wie andere Leute diese Sache bei Ihren Mikroschritt-Stufen hinbekommen.

Wenn noch jemand eine Idee hat, immer raus damit. Vielen Dank erstmal für die Antworten!!

Ruppi

magnetix48
03.10.2006, 10:58
Hallo Ruppi,

wie wäre es, wenn Du eine durch Poti variable "Referenzspannung" im Takt der PWM-Signale mit FET-Schaltern auf 2 Widerstände nach Gnd schaltest. An diesen R fällt dann 0 oder Vref ab, diese Signale kannst Du dann filtern.

Gruß
Detlef

Ruppi
03.10.2006, 11:15
Hi,
Ich hatte es damals genauso gemacht, jedoch mit BC547 Transistoren. Durch die Widerstände (oder was auch immer) wurde leider das Signal verfälscht. FETs dürften sich vielleicht anders verhalten, hmm...
Ich könnte sicher auch ohne Widerstand nach Masse schalten, denn ich habe 5V Versorgungsspannung und erzeuge dann ja per Spannungsteiler die 0..1V Referenzspannung. Bei Schluss nach Masse würde nicht sehr viel Strom fließen. Was für einen FET würdest Du vorschlagen? Habe noch nicht so viele Typen verbaut.

Ruppi

magnetix48
03.10.2006, 11:24
Hallo Ruppi,

ich würde keine einzelnen FETs, sondern FET-Schalter, z.B. CD4016 benutzen.
Die lassen sich mit den PWM-Signalen schalten.

Gruß
Detlef

Manf
03.10.2006, 13:03
Einige Möglichkeiten zum Multiplizieren allgemein.
http://homepages.fh-regensburg.de/~cuh39305/ae/analmult.pdf
Der D/A Wandler wird dort nicht erwähnt, das elektronische Poti und PWM.

PWM mit einstellbarer Spannung U und Tastung ist wohl am einfachsten. Wie gesagt, COMS Analogschalter, die zwischen U und GND wechseln.
Manfred


Ein paar (schnelle) Multiplizierer mit logarithmischer Kennlinie:
http://www.ee.washington.edu/stores/DataSheets/linear/ad633.pdf
http://web.mit.edu/6.301/www/AD532_c.pdf
http://www.enformatika.org/ijsp/v2/v2-4-31.pdf

Ruppi
03.10.2006, 18:39
hallo,
ich habe es mit einem mos4016 probiert, jedoch habe ich dann das problem, dass ich mit der ausgangsspannung nicht auf 0V komme, nachvollziehen kann ich das nicht! Das Signal bleibt bei etwa 300mV stehen. Manfred, die analogmultiplier sind ganz interessant, kannte ich noch gar nicht. allerdings auch nicht gerade billig... wenn es mit dem mos 4016 wirklich nicht klappt, werde ich es mit diesen bausteinen versuchen.

vielen dank für die zahlreichen tipps!

Ruppi

Ruppi
04.10.2006, 16:20
Hallo,
momentan sehe ich keine Lösung mit dem MOS4016. Wenn das PWM-Signal gerade low ist, sperrt er ja den Durchgang zu meinem nachgeschalteten Filter. Das bedeutet, dass ich bei PWM=low natürlich nicht auf Masse ziehe, wodurch ich auch keine 0V erreichen kann. Ich bekomme auf diese Weise keinen Wechsel zwischen der Referenzspannung und Masse hin.
Gibt es noch einen anderen FET-Schalter, der sich für diese Anwendung eignen würde?

Manf
04.10.2006, 16:52
Wie gesagt, COMS Analogschalter, die zwischen U und GND wechseln.
Zwei Schalter einer an Ue einer an GND, die mit PWM abwechselnd ihren Wert durchschalten, das geht schon.
Manfred

Ruppi
04.10.2006, 16:55
Hallo Manfred,
klar geht das, dann müsste ich aber einen Eingang invertieren, oder mache ich da einen Denkfehler? Zumindest müsste ich es so machen, wenn ich den MOS4016 verwende. Oder gibt es Schalter mit zusatzlichen invertierenden Eingängen?

Manf
04.10.2006, 16:57
Analog-Multiplexer mit Adressleitungen gibt es, die machen das dann.
CD4512
Manfred

Ruppi
04.10.2006, 17:05
Ok, werde ich mir ansehen.
Vielen Dank...

Ruppi

Manf
04.10.2006, 17:07
Ich fürchte der CD4512 ist doch ein Baustein für digitale Signale.
Manfred

Ruppi
04.10.2006, 17:19
Der CD4512 ist nicht gerade klein und dann noch die Filterung beider Kanäle... Mittlerweile denke ich, dass es besser wäre, gleich einen 2-Kanal DA-Wandler einzusetzen. In dem Fall bräuchte ich keine Filter, keine Multiplexer und hätte sicher auch noch ein saubereres Signal.
Habe bei Reichelt gerade den TLC 7528 gefunden, der müsste sich eignen. Ich weiß nur nicht, ob es damit möglich ist, beide Ausgänge im gleichen Augenblick durchzuschalten. Man müsste ja das erste Byte auf die Eingänge legen, dann den Ausgang umschalten und das zweite Byte anlegen. Leider scheint der Baustein kein Strobe zu haben...

FriLu
04.10.2006, 17:47
Hallo,
4016/4066 als Wechsler? Bitte sehr: O:)
Alternative: 4051,52,53

magnetix48
04.10.2006, 18:18
Hallo Ruppi,

ich habe mal einen Schaltplan gezeichnet um zu zeigen, wie ich mir das mit den FET-Schaltern vorgestellt hatte.

Gruß
Detlef

Manf
04.10.2006, 18:20
Genau CD4053 so ein vertrauter Name und man kommt einfach nicht drauf. Wenn es den als SMD gibt müßte das eigentlich etwas sein für Ruppi.
Wie ist das denn mit der Geschwindigkeitsabschätzung? Wie groß wäre der Phasenfehler ohne Strobe bei den D/A Wandlern?
Manfred

Ruppi
04.10.2006, 18:50
Detlef:
genauso hatte ich es beschaltet. Da gab es dann das Problem, dass ich die Spannung nach dem Filter nicht auf 0V bekomme. Durch den Widerstand wird das ganze Signal nur kleiner skaliert und ich komme auch näher an 0V, aber mehr nicht. Einziger Unterschied: ich habe in meiner Schaltung keinen OP! Ich kann mir das Verhalten aber auch nicht erklären. Vielleicht zum Aufbau des Filters: vom Signal PWM in Reihe R=3,9k, dann C=2N nach Masse, dann weiter mit R=2k, wieder mit C=1N nach Masse. Für R1/R2 in Deinem Schaltplan habe ich mit diversen Widerständen zwischen 10k und 470k probiert.

Manf:
Der Phasenfehler richtet sich nach Programmierung: Wenn ich es in Assembler programmiere, könnte ich es innerhalb weniger Takte schaffen, den Ausgang umzuswitchen. Du hast wohl Recht, wenn Du darauf anspielst, diesen Fehler zu vernachlässigen. Ich denke, das wäre die beste Lösung. Verstehe nur noch nicht so ganz die Ansteuerung des Wandlers.

Frilu: auch Dir danke für die Hilfe. Auch wenn ich es vielleicht anders machen werde, habe ich bei Deiner Antwort wieder etwas dazugelernt!

Ruppi

magnetix48
04.10.2006, 19:03
Hallo Ruppi,

wenn du statt des 4016 den 4053 nimmst, hast du 3 Umschalter. An die Eingänge von zwei Umschaltern legst du jeweils Referenz und Gnd und am Ausgang hast du das Signal niederohmiger und in einer Phase wird direkt Gnd durchgeschaltet. Das dürfte eine bessere Null erzeugen und du kannst auf die Widerstände R1 und R2 in meiner Schaltung verzichten.
Hast du dir das Signal nach den FET-Schaltern mal mit einem Skop angesehen, möglich ist ja, dass durch Übersprechen bei 100 kHz Störungen in der Null-Phase dazu führen, dass das gefilterte Signal nicht Null erreicht.

Gruß
Detlef

FriLu
04.10.2006, 19:13
@ Manf:
Jo, gibt's: 0,33€ bei Reichelt :) :)
MfG Lutz

magnetix48
04.10.2006, 19:45
Hallo Ruppi,

zu deiner Idee mit dem DAC. Was du brauchst, wenn du beide Kanäle synchron schalten willst, sind DACs mit zwei Buffern. Einer zum Speichern im IC und einer zum Analogausgang.
Einen Zweifachen 8-Bit DAC habe ich nicht gefunden aber einen günstigen Einfachen DAC, den DAC0832, gibst's auch bei Reichelt.

Gruß
Detlef