Forum: Analoge Elektronik und Schaltungstechnik unipolar zu bipolar converter


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Moritz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Für einen HiWi-Job an der Uni habe ich folgende Problemstellung.
Ich benötige für einen Servo-Regler eine Spannung im Bereich von -1V bis 
1V. Je nach Spannung und Polarität dreht der Motor dann durch den Regler 
in verschiedene Richtungen mit verschiedenen Drehzahlen. Die Genauigkeit 
ist hier erstmal nicht so wichtig es genügt wenn der Wert auf +-50mV 
eingestellt werden kann.
Das ganze soll durch einen Arduino ermöglicht werden.
Durch Internetrecherche bin ich auf die Möglichkeit die Spannung mittels 
PWM zu erzeugen gestoßen oder über R2R.
Da ich dann aus dem Unipolaren Signal ein Bipolares Signal machen muss, 
bin ich auf eine Lösung mittels Operationsverstärker gekommen.

http://masteringelectronicsdesign.com/design-a-unipolar-to-bipolar-converter-for-a-unipolar-voltage-output-dac/

Da ich mit meinem Arduino Spannungen zwischen 0 und 5V erzeugen kann 
muss ich abschwächen.
Nun habe ich zwei Lösungsmöglichkeiten in Betracht gezogen.
Entweder Abschwächung direkt beim Operationsverstärker.
(Ich habe diesen Rechner zur Hilfe gezogen)

http://masteringelectronicsdesign.com/differential-amplifier-calculator-2/

Oder die Abschwächung mit Hilfe eines Spannungsteilers.

Nun komme ich nicht weiter. Zu allererst weiß ich nicht, welchen 
Operationsverstärker ich nehmen soll. Ist es grundsätzlich so, dass alle 
Operationsverstärker auch abschwächen können bis runter zu 0V oder gibt 
es auch Operationsverstärker die nur Signale über einer bestimmten 
Spannung ausgeben können?
Außerdem weiß ich nicht ob es besser ist direkt durch den 
Operationsverstärker abzuschwächen oder den Operationsverstärker das 
Signal erstmal bipolar verstärken zu lassen z.B. von 0-5V auf -10V bis 
10V und dann mit Hilfe eines Spannungsteilers abzuschwächen.

Lohnt sich der Aufwand für R2R überhaupt oder ist es mit PWM auch getan 
(was ist genauer am Arduino und fällt das überhaupt ins Gewicht?)

Kann mir jemand weiter helfen, am besten mit einer Kaufempfehlung für 
einen OP?

Danke schonmal für die Hilfe und ich hoffe ich habe mein Problem 
verständlich geschildert.

Gruß Moritz

von cableer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ein paar wichtige fragen müssten wir noch klären:

ist der Regler digital, also im Arduino und der Ausgang bereits das 
signal für die leistungsendstufe oder, wovon ich ausgehe, wird das +-1v 
signal der sollwert für einen nachgeschalteten Regler?

das hat Einfluss drauf welche Bandbreite bzw. änderungsgeschwindigkeit 
diese Spannung haben muss. je höher diese sein muss, desto schwieriger 
wird es die pwm ausreichend zu filtern und gleichzeitig genug zeitliche 
Auflösung zu erhalten. machst du den filter mit niedriger eckfrequent 
dauert es lang bis dein sollwert eingeschwungen ist, machst du die 
eckfrequenz hoch wird die pwd nicht sauber gefiltert. also richtet sich 
die minimale eckfrequent erstmal nach deiner änderungsgeschwindigkeit 
für den sollwert. die pwd Frequenz muss deutlich darüber liegen, sodass 
der filter sie sauber unterdrücken kann. liegt sie jedoch zu hoch, wirst 
du Probleme haben die pwm fein genug aufzulösen durch den timer. es ist 
also in gewissen grenzen ein Kompromiss.

das ausgangssingal dann auf einen Opv invertierend beschaltet. mit dem 
Verhältnis aus rin zu rv kannst du von 0.5 auf 0.2 skalieren. am nicht 
inv. einging kannst du durch eine entsprechende Spannung auf -1+1 
verschieben.

von Moritz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Genau +-1V wird der Sollwert für einen nachgeschalteten Regler.

Das Problem ist, dass der Regler (der dann den Motor steuert) für mich 
quasi eine Blackbox ist. Aus alten Unterlagen habe ich nur 
herausgefunden, dass er eben ein analoges Signal zwischen -1V und 1V 
benötigt. (Eigentlich zwischen -10V und 10V, die Geschwindigkeit soll 
aber begrenzt werden)

Früher wurde das System über einen LPT Port, der zu einem DA Wandler 
geführt hat der wiederum ein analoges Signal an den Motor gegeben hat 
betrieben. Da der LPT Port immer Probleme macht und keiner mehr weiß was 
der DA Wandler macht und wie er es macht, soll nun eben auf einen 
Arduino umgestiegen werden, der den Regler des Motors bedient.

Somit weiß ich nicht genau wie schnell sich das Signal einstellen muss. 
Allerdings wird der Motor nur dafür benützt eine Linearachse 
anzutreiben. Der Verfahrweg wird dann nochmal über ein Poti gemessen. 
"Arbeitsauftrag" meines Betreuers war es die Geschichte zum Laufen zu 
bringen. Es ist für den Versuchsaufbau unerheblich wie genau die 
Drehzahl des Motors eingestellt werden kann. Wichtig ist dass man sie 
einstellen kann und dass man einen Unterschied "merkt". Die Umschaltzeit 
von z.B. 0V auf 1V ist nicht so wichtig. Außer der Motorregler hat damit 
ein Problem was ich leider nicht wissen kann.

von cableer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
das klingt also nicht nach einem besonders dynamischen system, zumindest 
nicht was den sollwert angeht. wenn du von einer linearachse sprichst 
und du einen Drehzahlregler verwendest wird die achse ja fast 
zwangsläufig in die Anschläge fahren? bist du sicher, dass die 
Geschwindigkeit gesteuert wird und es sich nicht um einen lagerealer 
handelt?

sei es drum, es klingt nach einer vergleichsweise langsamen Geschichte, 
was die sollwertänderungsrate angeht. d.h. ich würde definitiv auf pwm 
und tiefpass gehen.


bei 2v und geforderten 50mv Genauigkeit ergeben das 40 schritte. das 
schafft ein 8bit timer mit links. allerdings solltest du, wenn du 
analogwrite beim Arduino verwendest bedenken dass der nur mit 500hz 
arbeitet. man kann die Frequenz des timers auch hochstehen. dann wird 
das mit dem filtern einfacher und ein system kann dynamischer werden. 
nehmen wir mal an für dein system reichen 10Hz locker aus. dann hast du 
mit einem tiefpass 1. ordnung vermutlich noch keinen besonders 
befriedigenden erfolg. aber das kannst du auch super mit lt spice 
simulieren. ich rate zu 2. Ordnung. wenn du es geschickt machst kannst 
du ein rc Glied am Ausgang des Arduino und dann deutlich hochohriger in 
den Opv rein über dessen gegenkopplung dann den 2. tiefpass setzen.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
cableer schrieb:
> wenn du es geschickt machst kannst
> du ein rc Glied am Ausgang des Arduino und dann deutlich hochohriger in
> den Opv rein über dessen gegenkopplung dann den 2. tiefpass setzen.

Wenn man es ganz geschickt macht, baut man um den OPV einen aktiven 
Tiefpass mit komplexen Polstellen, z.B. einen Tschebyscheff Tiefpass 
2.ter Ordung. Das gibt einen deutlich steileren Übergang vom 
Durchlassbereich zum Sperrbereich. Eine Gegenüberstellung der 
verschiedenen TP-Typen findet man z.B. um Tietze-Schenk. 
Halbleiter-Schaltungstechnik, Kap. 12 Aktive Filter

von Moritz B. (dermoritz)


Bewertung
0 lesenswert
nicht lesenswert
So hab mich mal schnell hier angemeldet.
Ja Drehzahl wird geregelt. Der Motor treibt Zahnriemen an und das 
Bauteil wird somit auf der Linearachse verschoben. Ich muss dann 
natürlich das Poti auswerten welches am Aufbau mit dran hängt und bei 
erreichen der gewünschten Fahrposition das Signal auf 0V schalten. Dann 
weiß der Regler für den Motor er muss den Motor stoppen.

Vielen Dank auf jeden Fall für die Hilfe schonmal. Muss mich erstmal mit 
Elektrotechnik anfreunden. Habe damit in meinem Studium sonst nicht viel 
am Hut.

Was ich verstanden habe, ist dass ich einen Tiefpass zweiter Ordnung an 
mein PWM Ausgang am Arduino hänge. Hier die Frage was für einen 
Widerstand, Kondensator und was für eine Induktivität muss meine Spule 
haben. In einem Beispiel aus einem Arduino Buch war nur ein Tiefpass 1. 
Ordnung  mit 1kOhm und 10nF.

Daran Schalte ich nun wie bei 
http://masteringelectronicsdesign.com/differential-amplifier-calculator-2/

beschrieben meinen Opv

und daran kommt nochmal ein Tiefpass 2. Ordnung.

Mein größtes Problem ist weiterhin was für einen Opv kann ich dafür 
benützen geht z.B. 
https://www.reichelt.de/LM-358-DIP/3/index.html?ACTION=3&LA=446&ARTICLE=10483&artnr=LM+358+DIP&SEARCH=LM358 
was mich hier verwirrt, ist die Beschreibung: Ausgangsspannung: 5 - 27 
VDC

von cableer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> cableer schrieb:
>> wenn du es geschickt machst kannst
>> du ein rc Glied am Ausgang des Arduino und dann deutlich hochohriger in
>> den Opv rein über dessen gegenkopplung dann den 2. tiefpass setzen.
>
> Wenn man es ganz geschickt macht, baut man um den OPV einen aktiven
> Tiefpass mit komplexen Polstellen, z.B. einen Tschebyscheff Tiefpass
> 2.ter Ordung. Das gibt einen deutlich steileren Übergang vom
> Durchlassbereich zum Sperrbereich. Eine Gegenüberstellung der
> verschiedenen TP-Typen findet man z.B. um Tietze-Schenk.
> Halbleiter-Schaltungstechnik, Kap. 12 Aktive Filter

der Gedanke war mit nur einem Opv auszukommen, weniger die qualitativ 
hochwertigste Lösung zu bieten. was die flanke angeht ist der 
tschebyscheff natürlich deutlich besser.

@to: nicht mit spulen arbeiten. lieber nur rc.

für mich klingt das so als wäre das "Poti auswerten" ein zweiter 
regelgreis der um den Drehzahlregler herum gestrickt wird als äußerer 
regelkreis. in dem fall ist die Bandbreite des sollwertes eben nicht 
total egal. wobei du mit einem langsameren äußeren kreis eher noch auf 
der sicheren Seite bist.

von Moritz B. (dermoritz)


Bewertung
0 lesenswert
nicht lesenswert
cableer schrieb:
> @to: nicht mit spulen arbeiten. lieber nur rc.

Wie gesagt für mich ist Elektrotechnik eher Neuland.
Laut Wikipedia ist für mich ein Tiefpass erster Ordnung das hier:
https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Tiefpass.svg/330px-Tiefpass.svg.png

Ein Tiefpass zweiter Ordnung das hier:
https://upload.wikimedia.org/wikipedia/commons/b/be/LCR-Tiefpass.png

Um vielleicht wieder auf die von mir benötigten Bauteile zurück zu 
kommen.

Was für einen Operationsverstärker kann ich für meine Zwecke z.B. bei 
reichelt bestellen. Und welche Widerstände und welche Kondensatoren kann 
ich nehmen.

von Codix (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moritz B. schrieb:
> Was für einen Operationsverstärker kann ich für meine Zwecke

LM358 könnte passen. Kann ab +-1.5V Versorgungsspannung betrieben 
werden.
Siehe App Note im Anhang.

von Harry D. (harry_d)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Es geht auch ohne Operationsverstärker, siehe Beispiel im Screenshot. 
Die Spannungsquelle V2 ist die 500Hz PWM des Arduino. Diese schaltet 
eine Konstantstromquelle aus Q1 und Q2. An R2 wird daraus eine Spannung, 
geglättet durch C1 und R1, C2. Die Nutzspannung wird zwischen out2 und 
virtGND abgegriffen. Mit 18% bis 65% PWM entstehen die gewünschten +1V 
bis -1V.
Die Schaltung kann von -2,5V bis +1,8V liefern. V1 stellt die 5V 
Spannungsversorgung dar.

von codix (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harry D. schrieb:
> Es geht auch ohne Operationsverstärker,

Klasse Idee!

von Zeno (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Moritz,

ich würde die Schaltung mit dem OPV nehmen, die Du schon selber raus 
gesucht hast.
Ich denke auch das Zeitgeschichten bei Dir eher eine untergeordnete 
Rolle spielen, da diese +/-1V nur eine Sollgröße für den Regler sind, 
die ihm sagt wie schnell das Ding und in welcher Richtung es fahren 
soll. Ich denke mal das jeder moderne OPV für Deine Sache ausreichend 
schnell.

Jetzt mal konkret:
Die Schaltung macht bei 0V -5V und bei +5V +5V. Demzufolge kommt bei 
2,5V 0V raus. Du mußt also dafür sorgen, das Dein Arduino als 
Ruhezustand 2,5V ausgibt. Das geht am besten mit einem DA-Wandler (z.B. 
CP4901-E/P PDIP-8, das Teil kostet 1,39€ bei C). Da die OPV-Schaltung 
eine Steilheit von 1V/0,5V hat, mußt Du also eine Spannung von 2V für 
-1V und 3V für +1V ausgeben. Wie fein Du das stufen kannst hängt von 
Deinem DA-Wandler ab - die gibt es von 8 - 12bit.

Du benötigst für Dein Projekt also einen OPV (LM358, TL081 oder auch 
einen klassischen Typ wie µA725/741), den DAC und den Arduino. Der Rest 
wird mit Software erledigt. Wenn Du ganz gut bist siehst Du noch was 
vor, das beim Einschalten 0V an Deine Blackbox gegeben werden und 
Verbindung zu Deiner Schaltung erst dann hergestellt wird wenn das 
System in einem stabilen Zustand ist.

Dies scheint mir die einfachste Lösung zu sein. Aufwandsmäßig gibt es 
nach oben keine Grenzen - kommt halt drauf an was Du willst.

Zeno

von Joe F. (easylife)


Bewertung
0 lesenswert
nicht lesenswert
So rischdisch geil wäre ja die 0 .. -1V über eine 2. PWM und eine 
chargepump zu erzeugen. dann fällt die negative versorgungsspannung 
weg...

von Zeno (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joe F. schrieb:
> So rischdisch geil wäre ja die 0 .. -1V über eine 2. PWM und eine
> chargepump zu erzeugen. dann fällt die negative versorgungsspannung
> weg...

Prinzipiell hast Du da nicht ganz unrecht, aber Du brauchst halt 2 PWM's 
und dann muß das Signal auch ordentlich geglättet werden, denn die 
Blackbox des TO's wirkt definitiv nicht integrierend.

Das Prinzip wie ich es beschrieben habe, wurde in unserer Firma über 
viele Jahre bei Schablonenbelichtern für die Steuerung des Kreuztisches 
(Masse so um die 50kg) benutzt. Die Positioniergenauigkeit war besser 
als 0,1µm. Also dieses Verfahren kann so schlecht nicht sein.

Zeno

von Joe F. (easylife)


Bewertung
0 lesenswert
nicht lesenswert
Zeno schrieb:
> und dann muß das Signal auch ordentlich geglättet werden

und genau da liegt auch das problem mit PWM. ich gebe dir vollkommen 
recht, dass eine lösung mit symmetrischem power supply und op-amp am 
besten ist. zusätzlich ein günstiger 8bit SPI DAC, und der lack glänzt.

: Bearbeitet durch User
von Moritz B. (dermoritz)


Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die vielen Antworten hatte über das Wochenende leider 
keine Zeit zu antworten. Ich werde mich jetzt mit Bauteilen eindecken 
und mal ein bisschen Praktisch herumprobieren. Falls ich noch Fragen 
habe bin ich hier ja gut aufgehoben!

Danke :)

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Joe F. schrieb:
> So rischdisch geil wäre ja die 0 .. -1V über eine 2. PWM und eine
> chargepump zu erzeugen. dann fällt die negative versorgungsspannung
> weg...

und wenn man die -U mit charge pump aus einer PWM erzeugt und von unten 
an einen Spannungsteiler führt und oben +VCC dann kann man am 
Mittelpunkt vonn -U bis +U steuern, so habe ich es mit einer 
Kontrastspannung eines LCD gemacht.

http://www.holger-klabunde.de/dcdc/picdcdc.htm

geht auch mit Atmel!

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.