-
-
Erfahrener Benutzer
Roboter-Spezialist
PWM-Spannungen skalieren
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
-
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.
-
Erfahrener Benutzer
Roboter-Spezialist
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 )
-
Erfahrener Benutzer
Roboter Experte
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
-
Erfahrener Benutzer
Roboter-Spezialist
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
-
Erfahrener Benutzer
Roboter Experte
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
-
Erfahrener Benutzer
Roboter-Spezialist
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
-
Erfahrener Benutzer
Roboter Experte
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
-
Super-Moderator
Lebende Robotik Legende
Einige Möglichkeiten zum Multiplizieren allgemein.
http://homepages.fh-regensburg.de/~c...e/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/...near/ad633.pdf
http://web.mit.edu/6.301/www/AD532_c.pdf
http://www.enformatika.org/ijsp/v2/v2-4-31.pdf
-
Erfahrener Benutzer
Roboter-Spezialist
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
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen