Hallo, da dies mein erster Post in diesem Forum ist will ich mich kurz Vorstellen: Ich Studiere E-Technik im 5. Semester und beschäftige mich seit ca. 6 Monaten mit µCs um meinen Erfahrungshorizont um die praktische Elektrotechnik zu erweitern. In dieser Zeit hab ich diese Seite sehr häufig zu Rate gezogen. Vielen Dank dafür! So hier zu meinem Projekt/Problem: Ich will einen Motor-Schiebepoti ansteuern. Dieser soll in einem "Schwung" möglichst genau einen Zielwert treffen. Es handelt sich um ein Alps-10cm-10kOhm-DC-Motor-Riemenantrieb Poti, wie es in digitalen Mischpulten zu finden ist. Bei einer AD-Wandler genauigkeit von 10Bit kann ich Theoretisch auf 0.1mm(10 Ohm, oder bei 5V Referenz, 48mV) genau feststellen wo das Teil steht. Derzeit schaffe ich aber höchstens 8 Bit, bei Verwendung eines Mittelwerts von 100 Messungen. Problem 1: Wie kann ich eine höhere Genauigkeit erreichen? Ich bekomme meine Referenzspannung einfach nicht glatt. Habe schon Z-Diode+Drossel+RC Glied versucht. Ohne Erfolg. Vor allem bei 4MHz habe ich 100mV Amplitude drauf!!! Andererseits habe ich mir überlegt dass 1. bei 125KHz Wandlerfrequenz das eigentlich egal sein müsste. Und 2. mein Aufbau mit der Referenzspannung über einem Schiebepotie die Welligkeit eigentlich egal sein müsste !? Misst ja "relativ". Es sei denn es liegt an irgendwelchen Kapazitäten auf Kabeln oder Poti. Sleep während der Wandlung bringt leider auch nichts. Die Ansteuerung sieht folgendermaßen aus: PWM->RC-Glied->Bipolar-als-Spannungfolger->H-Brücke. Das heißt ich kann Richtung und Geschwindigkeit(Spannung) steuern. Derzeit benötige ich dafür 5 Bipolar-Transistoren. Problem 2: Diese Lösung gefällt mir nicht ganz so gut. Ich habe auf meiner Suche nach einer Integrierten H-Brücke (am besten MosFet) leider noch keine gefunden, die auch eine andere Spannung für den Motor erlaubt. Kennt hier vielleicht jemand eine solche? Ich benötige 2,5V (da steht das Poti) bis 5V bei 250mA. Ich kann die Spannung gerne von außen per PWM und meinem RC-Glied bereitstellen. Das letzte Problem betrifft die Regelung. Derzeit werte ich Ist-Wert zu Soll-Wert aus. Daraus entscheide ich dann wohin ich mich mit welcher Geschwindigkeit bewegen will. Je näher ich dem Ziel komme, desto langsamer werde ich. Nur leider erreiche ich je nach Parametern entweder das Ziel nicht. Oder ich schieße darüber hinnaus und muss gegenregeln, was dann zu einer Oszillation des Systems führt. Gibt es da einen Regelungstechnischen Trick? Da ich die letzten 100 Werte sowiso schon hab, dachte ich mir ich könnte möglicherweise auch die aktuelle Geschwindigkeit mit einbeziehen? Grade in dieser Richtung fehlt mir aber leider noch die Theorie. (Wie gesagt, erst 5. Semester) Vielen Dank schonmal, Nikias Achso, ich verwende einen Atmega8 bei 16MHz, aber das dürfte ja egal sein.
Also ich brauche in einem Hobby-Projekt gerade auch einen Regler, deswegen habe ich mich da mal ein bissele eingelesen. Du hast warscheinlich bisher einen P-Regler??? Wenn du noch einen I-Anteil hinzurechnest, dann erreichst du das Ziel auf jedenfall. Außerdem dürfte dann auch das Schwingen beherschbarerer werden (P-Anteil abbauen...) Also suche mal nach PI-Regler. Zum Glück (oder doch Unglück) habe ich bisher noch nicht studiert. Auf den Non-Sense den man da lernt bin ich nicht scharf. Vieles interesiert einen nicht und vieles weiß ich schon und das was mich interessieren würde bringe ich mir selber daheim bei....und nebenher kann man arbeitetn gehen und ich finde das ist guter ompromiss ;-)
Hallo, nimm eine externe referenz als IC, das ist meist am einfachsten und wenn der wert absolut genau sein soll auch. Aber man kann die U Ref auch selbst erzeugen. Konstantstromquelle -> widerstand. Oder Diode zum entkoppeln von der VCC und dann Z Diode + RC +Spule. Die Z Dioode ist aber temperaturabhängig, das sollte man nicht vernachlässigen. Zum Regeln: Ich habe die besten ergebnisse mit einem PID Regler + Dynamischer nachführung der Reglerparameter erziehlt. Abhängig von der Regeldifferenz definiert man Kurven für Kp, Ti und D. somit hat man für jeden fall immer optimale reglereinstellungen. Das erfordert aber eine auffwendige einstellung der Kurven. Sebastian
Deine Strecke hat I-Verhalten. D.h. du gibst z.B. ein Volt auf den Motor und der Motor integriert bis ins unendliche oder bis zum Anschlag. Deine Ansteuerung mit dem Transistor hat ein PT verhalten. D.h. eingestellter Stellwert kommt mit einer Verzögerung durch das RC erst beim Motor an. Mein Vorschag: PD - Regler in uC (damit wird die Regler ausreichent schnell und ereicht mit hoch genugen P-Anteil den Entwert. Formel sieht ungefähr so aus: Fehler = Sollwert - Istwert Stellwert = KP * Fehler + KD * (Fehler - Fehler_alt) Fehler_alt = Fehler KP stellst du so hoch ein das es schwingt (mit KD = 0) dann KD soweit erhöhen das Schwingung wieder aufhört. Auserdem: Auf RC Glied verzichten und den Motor direckt mit PWM ansteuern, da Regelungstechnisch einfacher. Störungen in AD Wandler umbedingt beseitigen, kann dir helfen wenn du Layout + Schaltplan zeigst. PS: Kann man natürlich alles exakt berechnen, kommt dann in Regelungstechnik 1 ;-) Michael
Vielen dank schonmal für die Regler Tips... Das funktioniert schon ganz gut. Allerdings glaube ich das ichs nicht mehr genauer bekomme weil meine Referenzspannung eben nicht glatt ist! Anbei ein Screenshot vom OSZI. Rot ist AREF, Blau ist VCC, VORSICHT unterschiedliche Y-Achsen! AREF ist jetzt von VCC folgendermaßen entkoppelt: VCC | 220R | (L) | +--+--+-AREF | | | c1 c2 Z | | | +--+--+-GND Z= Zehner 4.3V c1=100nF c2=4.7µF L war bei diesem Screenshot nicht drinn. Probiert hatte ich auch schon L=10mH - keine Änderung. Ich muss zugeben ich stocher hier grad im Dunkeln rum...bin auch schon etwas müde mitlerweile. Das ganze ist auf einem Experimentierboard aufgebaut. Gruß, Nikias
Hab noch ein bischen weiter gemacht. Hier ein Bild von Messwert zu Referenzspannung bei zufälligen Poti-Bewegungen. Blau ist Poti-Messwert, Rot ist Referenzspannung. Interessant ist, das die Poti-Spannung, wie auch die Referenzspannung gleichzeitig immer gegen Ende eines Stellvorgangs schwingen. Ich kann mir das eigentlich nur damit erklären, dass da ja die PWM nicht mehr auf dauer AN ist, und ich dadurch eine Schwingung auf VCC bekomme? Natürlich ist es ziemlich blöd das diese Schwingung immer genau zu dem Zeitpunkt stattfindet, wo ich die höchste genauigkeit benötige. Also muss ich irgendwie die Schwingung durch die PWM verringern...hmmm... bin für jeden Tip dankbar! Gruß, Nikias
Du glaubst das deine maximal erzielbare Genauigkeit von deinem AD-Wandler abhaengt. Ich glaube aber das dein Poti ungenauer ist. Ueberpruef das mal. :-) Olaf
Seperate Masse Vcc Leitungen verwendet? da Leitung eine Induktivität enthält und bei der hohen frequenz von der PWM nicht mehr zu vernachlässigen ist, und sich durch gemeinsam genutzte Leitungen einkoppelt. Galvanische Kopplung
achja nicht nur die treiber vom Motor der µC versaut natürlich auch noch die Masse
Wie ist denn die Genauigkeit eines solchen Potis definiert. Ich hab mal kurz das Multimeter rangehoben, wenn ich das Poti irgendwo hinbewege stellt sich für den Wiederstand erst relativ gemächlich ein stabiler Wert ein! Der schwankt dann so um die 10 Ohm, was bei meiner Genauigkeit von derzeit 8 Bit OK wäre...ich kann 39 Ohm auflösen. Aber bis er mal so fest ist schwankt er durchaus +- 100 Ohm ... für ca. 2 Sekunden wobei ich natürlich nicht weiß ob das auch an meinem trägem Multimeter liegt. Gibt es eine vernünftige Definition/Messmethode für sowas? Gruß, Nikias
Aufbau auf einem Experimentierboard - naja, mach dir nicht zu viel Hoffnungen, solche Probleme darauf in den Griff zu bekommen. Ab einem gewissen Punkt braucht es dann doch ein ordentliches Layout auf einer Platine.
Wenn Du 10 Bit AD-wandeln willst, brauchst Du schon ordentliche Masse und saubere Entkopplugen usw. Aus einem Steckboard holst Du kaum mehr als 8 Bit heraus. Das andere Probleme ist die 4,3 Volt Zenerdiode. Zenerdioden sind Rauschweltmeister... Aber Du brauchst doch gar keine exakte Referenzspannung. Mit dem Poti machst Du ja einen Spannungsteiler, und der AD-Wandler misst bezüglich des AREF-Signals. Also enstörst Du das AREF-Signal ordentlich mit kleiner Spule und kleinem Elko und 100nF Keramik. Dann hängst Du das eine Ende des Potis an den AREF und das andere an GND. Der Mittelabgriff des Potis geht an den AD-Wandler Pin. AGND und Poti-GND und AREF und Poti-AREF am Pin des Controllers zusammenführen, so daß da keine Ströme drüberfließen und Spannungsabfälle keine Rolle spielen. Mit dieser Konfiguration spielt die tatsächliche Höhe der AREF-Spannung keine Rolle mehr, sondern nur noch die Stellung des Potis (Spannungsteiler). Dann noch ein Punkt: Keine Ahnung welchen Controller Du verwendest, aber je schneller Du AD-wandelst, desto ungenauer wird das. Schaue mal im Datenblatt nach, ob der Controller bei 125 kHz überhaupt noch mit 10 Bit wandeln kann. Notfalls musst Du eben langsamer wandeln. Das bringt auch nochmals Genauigkeit.
Hallo, ja das mit dem Spannungsteiler war mir ja eigentlich auch schon bewusst. Hatte ich in meinem ersten Post schon angedeutet. Nur kann es eben sein das durch Kapazitäten auf dem Poti und den Leitungen der Spannungsteiler nicht Frequenzunabhängig linear ist! Wie geschrieben verwende ich einen Atmega8 @ 16MHz. In der Doku steht, das der AD-Wandler zwischen 50 und 200KHz Wandlerrate liegen sollte. Ich habe einen Teiler von 128 gewählt was 125KHz enspricht -> müsste also gehen. Die Zehnerdiode werde ich dann mal wieder weglassen.
Na, dass die Zeitkonstante aus Poti und Leitungskapazitäten größer ist als die mechanische Zeitkonstante deines Motors mit Getriebe und Poti, bezweifle ich doch sehr... Und wenn ich mich recht erinnere, steht in der Atmega8-Dokumentation auch irgendwo, bei welcher Taktfrequenz der AD-Wandler noch 10 Bit Auflösung bringt. Und wenn mich nicht alles täuscht, war das deutlich niedriger als 125 kHz. Und ansonsten, zur Regelung: Ab in die Bibliothek und mit den Suchwörtern "Regelungstechnik Grundlagen" und "Regelungstechnik Einführung" im Katalog suchen. Du interessierst Dich für alles, was mit "PID" zu tun hat. Selbst mit der Wikipedia kommst Du schon weit: http://de.wikipedia.org/wiki/Regelungstechnik Aber als Student im 5. Semester solltest Du inzwischen doch gelernt haben, wie man ein Problem löst, oder? Und ein Ingenieur (auch ein angehender) vermutet, glaubt und probiert nicht sinnlos in der Gegend rum, sondern berechnet und misst nach. Wenn Du also wirklich denkst, Du hättest ein Leitungskapazitäts-Problem, dann rechne Dir doch mal die Leitungskapazität aus, oder miss sie aus, oder miss doch gleich mal den kompletten Frequenzgang inkl. Phasenverschiebung Deiner AREF-Stabilisierung mit Poti und Leitungskapazität. So planlos im Nebel stochern ist doch armateurhaft!
Hallo, Michael P. hat eigentlich schon alles gesagt: -Deine Strecke hat I-Verhalten, ist also in der Lage Fehler völlig zu beseitigen. Ein weiterer I-Anteil im Regler beeinträchtigt nur die Stabilität deines Systems, darauf solltest du also verzichten, es sei denn, die Strecke soll auch stetigen Führungsgrößenänderungen folgen können. -Schmeiß das RC-Glied raus, dein Motor bildet schon einen Tiefpass, der die Grundschwingung der PWM filtert. Das RC-Glied erhöht nur die Ordnung deines Systems, verbrät unnötig Leistung und vor allem ist es ja auch gerade der Sinn einer PWM, die Mosfets als Schalter zu betreiben! Hinzufügen wollte ich noch, da du es bereits erwähnt hast, dass es durchaus Sinn macht, die Geschwindigkeit mit einzubeziehen. Das Stichwort heißt: "Velocity-Feedback". Wenn du die Position differenzierst, erhälst du ja die Geschwindigkeit. Kann man diese aber direkt messen, macht es Sinn, sie über ein Gain (Kv) auf den Regleroutput zurückzuführen und von diesem abzuziehen. Dadurch ergibt sich die selbe Characteristische Gleichung wie bei einem PD Regler. Der Unterschied ist, dass hier dem System keine Nullstelle zugefügt wird, dadurch ist es weniger empfindlich gegen Rauschen, und Nachteile wie der "Set-Point-Peak" fallen meißt völlig weg. Meine Empfehlung lautet also: P-Regler + Velocity-Feedback. Zu deinem Rauschen, wie ist denn der Messaufbau? Bei der eingestellten Empfindlichkeit musst du auf jeden Fall mit geschirmten Leitungen messen und das GND (für den Schirm) direkt von der Schaltung holen, also da wo du misst. Sonst kann das alles Mögliche sein was da eingestreut wird, da bin ich auch schon mal drüber gestolpert. Gruß, Thomas
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.