Hallo Forum, für ein Projekt an der Uni benötige ich eine Schaltung die mir aus einem Signal von 0-5V ein Signal von -10V bis 10V. Es soll über einen Arduino (deshalb die 5V) ein Hydraulikventil (benötigt jene -10V bis 10V) angesteuert werden. Im Voraus: Ich bin kein Elektrotechniker, habe mich nur hobbymäßig etwas damit befasst (vor dem Projekt). Ich hoffe das die folgende Beschreibung ausreichen Informationen leifert um mein Problem zu verstehen. Nachdem ich versucht habe mich über allerlei Quellen schlau zu machen, bin ich nun soweit: Dem Arduino entnehme ich nach Bedarf per PWM eine Spannung, diese lasse ich über ein RC-Filter glätten, um sie anschließend mit einem OPV (LM358, nach einem Forenbeitrag ausgewählt) um den Faktor 2 zu erhöhen. Das klappt soweit auch wunderbar. Bis auf die Tatsache dass das Filter doch sehr langsam ist. (Dieses Problem werde ich in den nächsten Tagen hoffentlich durch den Einsatz eines LTC2644 beheben. Der wandelt das PWM-Signal mit geringer Verzögerung in ein Analogsignal um,.. hoffentlich). Was mir noch fehlte war die Möglichkeit die Polarität umzuschalten um auch den "negativen" Spannungsbereich abdecken zu können. Auch hier bin ich über eine Schaltung gestolpert, direkt hier im Forum, welche einen OPV mittels eines Steuersignals zwischen invertierendem und nichtinvertierendem Verhalten umschaltet. Link: Beitrag "OPV umschaltbar zwischen Invertieren/Nichtinvertieren" Ich versuche jetzt seit einer geraumen Zeit das entsprechend dem Forenbeitrag nachzubauen (entsprechend der letzten Schaltung im Thread, auch nochmal angehangen), allerdings kommt dabei nichts sinnvolles raus. Den ersten Fehler habe ich noch entdeckt, ich hatte den OPV nur mit 0-12V (unsymmetrisch) versorgt. Dazu habe ich mir noch den TLE2426 (Virtual Ground) besorgt, um eine symmetrische Spannung, bzw. eine virtuelle Masse zu erzeugen. Jetzt kann ich mit meinem Steckernetzteil wenigstens schonmal den OPV mit -6V/6V versorgen um zu schauen ob die Schaltung so funktioniert. Der Grundlegende Aufbau sieht dann folgendermaßen aus: 1. Das Netzteil wir an den TLE2426 (Virtual Ground) angeschlossen. 2. Arduino bekommt Speisespannung über die +12V vom Netzteil, und den TLE2426 (hier liegen somit ~6V an) 3. OPV erhält vom Netzteil +12 Volt und Masse, somit bzgl der Virtuellen Masse +6V/-6V Ansonsten ist meine Schaltung äquivalent zu der angehangenen. Die Schaltung funktioniert soweit, auch das invertieren der Spannung mittels Transistor gelingt. Allerdings erhalte ich nicht den exakten Betrag beim invertieren, i.e. bei 50% PWM erhalte ich "nichtinvertiert" 2,43V, nach dem umschalten auf "invertierend" nur -1,92V. (Das gleiche erhalte ich wenn ich den Transistor durch einen "mechanischen Schalter" ersetze, daran liegts also nicht.) Ich habe mal ein bisschen mit den Widerständen gespielt, wenn ich den Widerstand am nichtinvertierenden Eingang erhöhe (37,5k statt 10k) erhalte ich bei 50% PWM immerhin 2,43V zu -2,08V. (Mit 100k --> 2,43V zu -2,13V) Ich habe in mehreren Quellen gelesen dass die Widerstände entsprechen R1 = R2 = 2*R3 dimensioniert werden sollen, deshalb gehe ich davon aus dass dies nicht der richtige Weg ist. An dem "Virtual Ground" Baurteil kann es meiner Meinung nach auch nicht liegen; das gibt konstant die gleiche Spannung an den Arduino (gemessen). Kann mir jemand helfen den Fehler zu entdecken? Mir fällt gerade nichts mehr ein woran das liegen könnte. Vielen Dank schonmal! Grüße, Roman
Nimm eine gescheiten i2c Adc mit dem erzeugst du eine Spannung. Mit einem Spannungsteiler erzeugst du 2.5 V diese Spannung und die ADC Spannung schickst du in deinen invertierenden Verstärker. 2.5V an + ADC an - ich würde ien versärkungsfaktor von 5 nehmen, dann kommst du gut über die +-10 V ohne an irgent welche Versorgunsspannungsgrenzen zu kommen.
Dein Schaltungsansatz ist ziemlich eigenartig. Wesentlich einfacher wäre es, aus 0-5V direkt -10V..+10V zu machen. Der Verstärkungsfaktor wäre dann 4, und du benötigst einen entsprechenden Offset. Um die PWM schneller in einen Analogwert zu wandeln empfiehlt sich ein Filter höherer Ordnung.
+/-16V ist übrigens grenzwertig für den LM358. +/-12V reichen auch aus. Welche Frequenz hat denn deine PWM? Und mit welcher max. Verzögerung soll der Ausgangswert dem Eingangswert entsprechen (90%)?
:
Bearbeitet durch User
@ Roman M. (aplocheilichthys) >für ein Projekt an der Uni benötige ich eine Schaltung die mir aus einem >Signal von 0-5V ein Signal von -10V bis 10V. Es soll über einen Arduino >(deshalb die 5V) ein Hydraulikventil (benötigt jene -10V bis 10V) >angesteuert werden. >Dem Arduino entnehme ich nach Bedarf per PWM eine Spannung, diese lasse >ich über ein RC-Filter glätten, OK. > um sie anschließend mit einem OPV >(LM358, nach einem Forenbeitrag ausgewählt) um den Faktor 2 zu erhöhen. Jain. >Das klappt soweit auch wunderbar. Bis auf die Tatsache dass das Filter >doch sehr langsam ist. (Dieses Problem werde ich in den nächsten Tagen >hoffentlich durch den Einsatz eines LTC2644 beheben. Der wandelt das >PWM-Signal mit geringer Verzögerung in ein Analogsignal um,.. >hoffentlich). Mach es wie Benedikt K. vorgeschlagen hat. Ein DA-Wandler per I2C (Arduino-Sprech Wire.h) und dahinter einen einfache OIPV mit Offset, dann kann man +/-10V in einem Rutsch erzeugen. Das Umschalten ist unsinnig. >virtuelle Masse zu erzeugen. Jetzt kann ich mit meinem Steckernetzteil >wenigstens schonmal den OPV mit -6V/6V versorgen um zu schauen ob die >Schaltung so funktioniert. Nein, denn du willst ja eine gescheite Masse haben. Wenn gleich der Trick mit der virtuellen Masse mit einem potentialfreien Netzteil funktioniert, so bleiben diverse Problemchen, u.a. die Strombelastbarkeit des Ausgangs. Besorg dir ein 12VAC Netzteil und mach daraus per Mittelpunktgleichrichtung +/-15V mit echter Masse. >2. Arduino bekommt Speisespannung über die +12V vom Netzteil, und den >TLE2426 (hier liegen somit ~6V an) Da knallt es. Die Ausgangsmasse ist dann nicht mehr gleich Eingangsmasse! MÖÖÖP! Siehe Anhang.
Hmm, vielleicht besser nur ein 9V AC Netzteil, das reicht.
@Christian L man sollte noch einmal lesen, bevor man auf senden drückt. Meine natürlich einen DAC. Joey F. hat sogar dankenswerter Weise alles für den TO berechnet.
Hallo zusammen, erstmal vielen Dank für die Antworten. Joe F. schrieb: > Um die PWM schneller in einen Analogwert zu wandeln empfiehlt sich ein > Filter höherer Ordnung. Zu dem gleichen Schluss bin ich auch gekommen. Da ich aber angenommen habe das es für mich als Laien eine etwas wackelige Angelegenheit werden könnte einen gut funktionierenden Filter n-ter Ordnung zu basteln (Bauteiltoleranzen... ), habe ich mich entschieden einen IC-Lösung zu verwenden. (Ok, zugegebenermaßen war ich auch etwas zu faul, als ich gesehen habe dass es eine vollintergrierte Lösung gibt... ) Als Anhaltspunkt nahm ich diesen Forumseintrag, Beitrag "DAU IC gesucht", insbesondere: Dergute W. schrieb: > Also sollte das ein Butterworth-Tiefpass mit einer Ordnung >=11 > hinbekommen. Meine Anforderungen sind ähnlich wie in dem Beitrag: PWM-Freq: 490 Hz; V_Ripple(8-Bit-PWM, U=5V) = 0,0195V Die Auslegung des Filters nach [https://www.mikrocontroller.net/articles/Pulsweitenmodulation#RC-Filter_dimensionieren] RC-Filter: C=100µF, R = 1,3k Joe F. schrieb: > Welche Frequenz hat denn deine PWM? Laut Datenblatt vom Arduino-µC bei Standardeinstellungen ~490Hz (bei Clock_freq: 16MHz, 8-Bit PWM-Auflösung, Multiplikator 128) . Hab ich auch nochmal nachgemessen. Ich nehm an dass die Frage auf die Filterdimensionierung abzielte? Joe F. schrieb: > Und mit welcher max. Verzögerung soll der Ausgangswert dem Eingangswert > entsprechen (90%)? Tut mir leid, ich verstehe die Frage nicht. Meinst du eine zeitliche Verzögerung? (Das Prozent verwirrt mich etwas, sorry /: ) Benedikt S. schrieb: > Joey F. hat sogar dankenswerter Weise alles für den TO berechnet. Jap, Danke auch für die Schaltung! Werde das mal so probieren. Eine Frage dazu noch, ich bin mir da nicht ganz sicher, unter welcher Bezeichnung kann ich die Art von OPV-Ansteuerung finden (ist das einfach ein Subtrahierverstärker?)? Damit ich das auch nochmal für mich durchrechnen und mir die Theorie zu Gemüte führen kann. Falk B. schrieb: > Das Umschalten ist > unsinnig. Das hatte ich befürchtet, insbesondere da ich das ganze für eine Regelung benötige (Ich sehe vor meinem geistigen Auge wie ihr euch an die Köpfe fasst... (; ) Ich hatte gehofft dadurch die Auflösung nicht weiter zu verringern. Also 256 Schritte (später sollen das 12-Bit sein) für 0-10V in beide Richtungen. Aber wie gesagt, ich dachte mir schon dass das für die Anwendung problematisch sein könnte. Falk B. schrieb: > Mach es wie Benedikt K. vorgeschlagen hat. Ein DA-Wandler per I2C > (Arduino-Sprech Wire.h) und dahinter einen einfache OIPV mit Offset, > dann kann man +/-10V in einem Rutsch erzeugen. Ich werde mir den Vorschlag auch mal anschauen. Mit I2C hatte ich mich noch nicht sehr weit auseinandergesetzt. Bevor ich mich da weiter vertiefe hätte ich auch dazu noch eine Frage: Ergibt dass denn Probleme wenn ich 2 Zylinder parallel ansteuern möchte? Weil I2C ja eigentlich seriell funktioniert.. Falk B. schrieb: > Besorg dir ein 12VAC Netzteil und mach > daraus per Mittelpunktgleichrichtung +/-15V mit echter Masse. Mir steht ein 30 V DC Netzteil zur Verfügung, ich hoffe die Anschaffung eines weiteren Netzteils vermeiden zu können. Ich glaube ich habe aber schon gesehen dass man damit auch eine symmetrische Spannung erzeugen kann, das werde ich auch nochmal recherchieren. Falls es interessiert, oder hilft, etwas genauer über das Projekt: Es sollen zwei Hydraulikzylinder angesteuert werden, das stellen der Zylinder erfolgt über Ventile mit eigenen Steuerkarten. Die Position der Ventile wird über eine Spannung gesteuert, jene -10V bis +10V, wobei die Eingangswiderstände sehr hoch sind, die Spannung hier also nur als Signal dient. Die Zylinder sind übereinander angeordnet, so dass der obere der Bewegung des unteren folgt. Der untere soll eine vorgegebene Kurve fahren (bspw. sinusförmig), der obere soll die Bewegung durch eine Regelung ausgleichen. Nochmal Danke für die Antworten, ich werde mich die nächsten Tage damit beschäftigen die Vorschläge auszuprobieren. Dann werde ich mich nochmal melden. Ich hoffe dass ich eure Geduld nicht zu sehr auf die Probe stelle (; Grüße, R.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.