PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 1-Qadrantensteller mit Dynamischer PWM-Erzeugung



akanzl
03.07.2013, 13:39
Hallo zusammen,

ich bin neu in diesem forum und möchte euch schon mal vorab warnen, dass es sich hierbei um mein erstes Projekt in dieser Richtung handelt und ich auf diesem Gebiet noch viel Lernbedarf habe. Deshalb möchte ich euch um etwas nachsicht bzw konstruktive kritik bitten für den fall, dass angaben fehlen oder die problemstellung nicht richtig dargestellt sein sollte...

wie gesagt möchte ich einen 1-quadranten steller für einen gleichstrommoter bauen. Motor: http://www.motenergy.com/me0909.html .
Dieser wird mit einem akku von 48V betrieben (typ noch nicht sicher, aber tendenz zu LiIo). Der motor wird dynamisch betrieben werden, d.h. die last wird sich schnell ändern, was zu spannungs -und dem entsprechend leistungsschwankungen führen wird. Dennoch möchte ich die Drehzahl konstant halten. dazu benötige ich eine Regelung des PWM-Signals über die Spannung.

Das ganze stelle ich mir in etwas so vor:

Die betriebsspannung müsste gemessen werden (mit einer Referenzspannung verglichen) über die differenz müsste sich ein faktor ermitteln lassen, mit dem das PWM-Signal so angepasst werden kann, dass sich die drehzahl nicht verändert.

Auf Grund mangelnder Erfahrung stellen sich mir nun folgende fragen:

1. Ist der Ansatz überhaupt richtig, bzw umsetzbar? oder gibts einen denkfehler?

2. gibt es evtl eine einfachere lösung?

3. wenn mein ansatz in ordnung ist, kann aus der resultierenden differenzspannung mit hilfe einer schaltung der genannte faktor gebildet werden und an meinen µC (ATMega32) übergeben werden? oder kann der µC selber die Spannung messen, sodass ich den Faktor per software ermitteln kann?

4. hat eine entsprechende softwarelösung mit dem atmega32 negative auswirkung auf die "Sauberkeit" des pwm-signals, da ja während der signalerzeugung eingänge abgefragt werden müssten und das signal u.U. zur laufzeit verändert werden müsste, höherer rechenaufwand ect....


Über jeden tipp währe ich euch sehr dankbar, sei es auch ein literaturhinweis, verweis auf einen anderen thread/forum oder ein ähnliches projekt.
Vielen Dank im voraus!

MfG, akanzl

Michael
03.07.2013, 15:28
Die betriebsspannung müsste gemessen werden (mit einer Referenzspannung verglichen) über die differenz müsste sich ein faktor ermitteln lassen, mit dem das PWM-Signal so angepasst werden kann, dass sich die drehzahl nicht verändert.
ich glaube nicht, dass du über die Messung der Betriebsspannung die Drehzahl konstant halten kannst.
Warum willst du nicht gleich die Drehzahl messen?

Gruß, Michael

akanzl
03.07.2013, 17:25
Danke für deinen Vorschlag Michael.

Leider ist dein Vorschlag meiner Meinung nach zu aufwendig, da ich für die Umsetzung bauliche Änderungen vornehmen müsste (der Motor betreibt eine Turbiene) um mit Lichtsensoren zu arbeiten. Des Weiteren stelle ich mir solch eine Lösung auch recht kostspielig vor, da die Genauigkeit bei ca. 3000min^-1 recht hoch sein muss...
Ausserdem ist der ATMega32 noch nicht ausgelastet und sollte eigentlich diese Aufgabe bewältigen können. Mir ist bis jetzt nur noch nicht die entsprechende Mess -und Regelschaltung eingefallen.

Gruß

Michael
03.07.2013, 19:19
wie du meinst, probier es einfach aus. Du wärst der erste, der das hinkriegt. Und auch nicht der letzte, der daran scheitert ;)

Gruß, Michael

akanzl
03.07.2013, 19:50
Danke für diesen Beitrag! Auch wenn nicht sehr hilfreich, ist er denn noch ermutigend. Ich werds weiter versuchen ;)
Falls ich eine Lösung finden sollte werde ich sie hier gerne vorstellen.

Aber bis dahin, jemand eine andere Idee? :)

Gruß

RoboHolIC
03.07.2013, 22:59
Eine Leistungsregelung an einem einfachen ohmschen Widerstand kann man sicherlich auf diese Weise realisieren. Per PWM-duty cycle kann man die effektive Spannung an der Last beeinflussen und damit die veränderliche Eingangsspannung kompensieren.

Bei einem Gleichspannungsmotor bewirkt ein positiver Last- ( =Drehmoment-)Sprung vor allem ein Absinken der Drehzahl und damit auch der Gegen-EMK. Die resultierende Differenz zwischen Speisespannung und reduzierter Gegen-EMK wird durch die Komponente ( zusätzlicher Motorstrom * Innenwiderstand ) ausgeglichen: Der Motor produziert (proportional zum Ankerstrom) ein höheres Drehmoment.

Man kann nun ein elektrisches Modell des Motors mit Innenwiderstand und Generatorkonstante (oder wie das Ding heißt) bilden und aus der Akkuspannung, dem duty cycle und der Messung des Motorstroms auf die Drehzahl rückschließen. Theoretisch. Praktisch machen es die Profis mit aufwendigen und teuren Drehzahlgebern (Tacho oder Strichscheiben), die man lieber einsparen würde, wenn es denn machbar wäre.

Naja, es gibt schon was ähnliches, nämlich die I*R-Kompensation, die (auch analog realisierbar) genau das macht, was ich oben beschrieben habe. Aber das ist keine Drehzahlregelung, weil sie die Temperaturveränderlichkeit des Wicklungswiderstandes und andere Störeinflüsse nicht berücksichtigt. Damit lässt sich das Einknicken der Drehzahl bei Lastwechseln wohl spürbar mindern, z.B. bei einer Handbohmaschine ...

akanzl
04.07.2013, 15:38
Vielen Dank RoboHolIC!

Werde mich in der vorgeschlagenen Richtung etwas einlesen! Klingt jedenfalls nach einer brauchbaren Lösung.

In der Zwischenzeit habe ich auch den Tipp bekommen für die Kompensation einen PI Regler zu entwerfen. Wie schon vermutet, die Motorspannung messen, proportional auf <=5V(für den µC) wandeln, gegen Überspannung und Spitzenströme Z-Diode und Tiefpass vor den µC schalten und im µC auf die Veränderung durch einen geeigneten Algorithmus reagieren. Dazu könnte ich die maximal zulässige Batteriespannung mit der entsprechenden Drehzahl messen und analog dazu die Minimale. So könnte ich theoretisch ermitteln, wie mein PWM-Signal verändert werden muss, um bei minimaler Spannung die gleiche Drehzahl zu erhalten. Ich vermute eine liniare Funktion zwischen Drehzahl, Tastverhältnis und Spannung. Damit sollte ein Algorithmus für jede dazwischen liegende Spannung umsetzbar sein.

Klingt das für euch machbar, oder habe ich irgendwo einen Denkfehler?

White_Fox
05.07.2013, 22:08
Ein THEORETISCHER Praxisansatz wäre, vor den Motor einen Vorwidestand zu schalten.
Über diesen kannst du den Strom messen, den dein Motor zieht. Wenn du dann noch die Spannung über dem Motor misst kannst du auf die Drehzahl schliessen.
Wie RoboHolIC schon geschrieben hat.

Wenn du das Ganze aufbaust wirst du dann über jede Menge Probleme stolpern.
Da wäre einmal das veränderte Widerstandsverhalten, wenn sich die Motorspulen (durch Betrieb und Umgebungstemperatur) erwärmen. Das genau auszukompensieren ist sehr aufwendig oder gar nicht erst machbar. Dazu bräuchtest du Temperatursensoren in den Ankerwicklungen.
Außerdem sind die Spannungen, die du messen musst, ziemlich dreckiger Wellensalat. Da sorgt allein schon dein PWM-Signal für ständigen Rippel, welcher ja noch verschmerzbar wäre. Dann hast du aber durch das Gebrutzel an den Bürsten und das ständige Ummagnetisieren der Spulen allgemein jede Menge Spannungsspitzen, sodass du wieder aufwendig filtern musst.

Desweiteren ist die Benutzung des ADC auch nicht ganz ohne Aufwand. Du musst zwar theoretisch nur ein (oder zwei) Register auslesen um einen Wert vom ADC zu kriegen. In der Praxis zappeln die letzten 3 Bits und deswegen nimmt man viele Messungen vor und errechnet dann den Mittelwert. Da nimmt man dann z.B. 256 Messungen vor, addiert alles ordentlich auf, und teilt danach wieder durch 256 und erhält den Mittelwert der ganzen Geschichte. Wenn du nur mit 8-Bit messen willst bedeutet das, dass du schonmal 16-Bit-Arithmetik in Software implementieren musst. Bei Addition ist das kein Problem, aber Division braucht schon einige Takte. Wenn du 10-Bit-Wandlung verwenden willst imemrhin schon 24-Bit-Arithmetik. Und dass dann jeweils zweimal-und dann hast du erst die Messwerte.
Nehmen wir mal an, du hast den Aufwand bisher wirklich betrieben, so mußt du die ganze Geschichte erstmal kalibrieren und das Verhalten des Motors ausmessen.
Und zu allem Überfluss wird das trotz aller Sorgfalt nicht allzu genau werden.
Und je nachdem, wie schnell du Lastwechsel erwartest (wird bei deiner Turbine vllt kein so großes Problem sein) wird deine Regelung durch den ganzen Rechenhype ziemlich träge werden.

Das Beste kommt aber erst noch. Das Schwierigste an einem Regler ist weniger die technische Umsetzung, sondern der Regelalgorythmus. Da musst du eine Differentialgleichung aufstellen, die gleich noch von zwei Eingangsvariablen (Strom und Spannung) abhängig ist. Das ist umständlich. Wenn du nur die Drehzahl haben willst und das Moment dir gestohlen bleiben kann, ist weitaus besser, die Drehzahl selber in seine Gleichung einzubinden, und da ist es wesentlich präziser und einfacher, du liest die Drehzahl direkt aus.

Was den PI-Regler angeht: Nur die Motorspannung ausmessen ist da nicht. Das Wort "PI-Regler" beschreibt übrigens lediglich den mathematischen Zusammenhang des Reglers. Es ist dabei keine Rede davon, ob du das analog realisierst oder deinem Microcontroller PI-Verhalten beibringst.

Klebwax
05.07.2013, 22:55
Auch, wenn es häufig gesagt wird, eignet sich die Motorspannung eines DC-Motors nicht wirklich zur Regelung der Motordrehzahl, es sei denn, die Last ist (relativ) konstant. Ein Beispiel findet sich hier: https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=579809&viewfull=1#post579809.

Da wird bei 6V der Motor festgehalten, die Drehzahl ist also 0. Würde er nicht festgehalten wäre sie bei 6V sicher viel höher. Bei 4V würde der Motor wahrscheinlich sogar dauerhaft überleben. Die Motorspannung gibt also keinen Hinweis auf die Drehzahl.

Ohne Zusätzliche Informationen ist eine brauchbare Reglung nicht möglich. Am einfachsten ist natürlich die Drehzahl, die soll ja geregelt werden.

MfG Klebwax

Thomas$
06.07.2013, 03:41
https://www.roboternetz.de/community/threads/51885-Drehzahlmessung-mit-B%C3%BCrstenimpulsen-an-kleinem-DC-Motor

White_Fox
06.07.2013, 14:08
Das, was Searcher da entwickelt hat ist eigt ein Patent wert.
Jedoch, wenn ich mal den Entwickler selber zitieren darf:

@oberallgeier: Gut daß Du nach PWM fragst. In der ersten Euphorie habe ich die Einschränkungen der Methode nicht aufgeschrieben. Würde der Motor mit PWM angetrieben, wüßte ich nicht, wie ich die Bürstenimpulse aus den PWM Impulsen rausfiltern sollte. Hatte PWM also von vorneherein schon ausgeschlossen und den Motor nur mit Gleichstrom betrieben. -Bin schon wieder am Grübeln, ob es nicht doch gehen würde; ich laß es aber besser -

akanzl
09.07.2013, 12:34
Hallo zusammen!

Vielen Dank für eure Antworten!

@White_Fox: Danke, dass du mir die Problematik so genau erklärt hast, habe mir das tatsächlich einfacher vorgestellt...
Habe mich in den letzten Tagen auch mit dem Lestungsteil beschäftigt, da ich in der Richtung der Drehzahlregelung (wie ihr alle vermutet habt), noch nicht weiter gekommen bin.

Das was der Searcher da etworfen hat ist in der Tat sehr beeindruckend, aber wie du schon sagtest eignet sich seine Schaltung leider nicht für einen PWM gesteuerten Betrieb :/

Ich befürchte ich muss das mit der Drehzahlregelung erst mal ruhen lassen... Bei dem Projekt gibts noch genug andere Baustellen(auf die ich bestimmt auch noch zu sprechen komme, zB Stromregelung ;) ). Sollte ich das mit der Drehzahlregelung nochmal in Angriff nehmen, werde ich hier wieder posten.

DAnke an alle, Gruß