Hallo zusammen, zum Einsatz in RC-Mikromodellen (Schiffe) habe ich auf Basis fertiger Hongkong-Flugregler (ATMEL ATMega8A) eine komplett neue Assembler-Software geschrieben. Hierbei floss u. a. viel Know How von B. Konze (Quax) mit ein, auch wenn der Code komplett neu gestaltet ist. Bislang läuft die SW einwandfrei (Start, Frequenz- und PWM-Regelung, Vor-/Zurück, Sicherheitsfunktionen). Gegenwärtig sitze ich an einer zusätzlichen Open-Loop Funktion für Niedrigstdrehzahlen. Hier funktioniert bereits der simple Ansatz mit fixer Vorgabe des Kommutierungs-Timings (errechnet aus der Zieldrehzahl) und des PWM-Duty-Zyklusses. Vergleichbar zu Schrittmotoren tackert der BLDC immer 120° weiter. Auf diese Weise kann ich nahezu beliebig langsame Drehzahlen realisieren. Der Nachteil dabei: Immense Verlustleistung => große Hitze. Also gilt es den PWM Duty Cycle zu regeln. Die Detektierung des Phasen Zero Crossing klappt bei den niedrigen Drehzahlen nicht zuverlässig. Habt Ihr noch Ideen, Tipps oder Links für denkbare Algorithmen? Ich bin allerdings in der HW auf die bekannten 3 MOSFET-Brücken angewiesen - also Sinussteller, Hall-Sensoren etc. scheiden aus. Besten Dank schon mal an Euch, Johannes
Die Schrittmotortreiber (die ja langsam sein können und auch stehenbleiben können) machen das alle mit PWM Chopper Stromregelung über einen shunt auf den durch die Bauart fest vorgegebenen maximalen Spulenstrom, damit die Spule bei langsamen Takt, wo der Spulenstrom durch die Induktivität immer weiter bis zur Sättigung steigen würde, nicht höher wird als an Verlustleistung für den Motor zulässig ist. Wenn du nun keinen Stromsensor-shunt hast, könntest du versuchen, die PWM experimentell zu ermitteln (oder aus der Induktivität des Motors zu berechnen) und den duty cycle fest gekoppelt nach Drehzahl festlegen. Dabei bietet es ich an, auch gleich den Sinus nachzubilden. Der Motor hat dann zwar nicht so viel Drehmoment, weil die Gegen-EMK durch Belastung nicht kompesiert werden kann wie es bei gemessenem Strom wäre, aber immer noch besser als ruckeln.
Wenn man den Motorstrom reduziert nimmt unter Belastung der Polradwinkel zu. Dh es wird einen Fehler zwischen soll- und ist-Position geben, der mit kleinerem Strom, sowie groesserem Drehmoment zunimmt.
Herzlichen Dank schonmal für das Feedback! Ziel ist später die aus Hongkong gekauften Flugregler (< 5 Euro) kurz zu strippen (Schrumpfschlauch runter) und mit der neuen Software per Clip-Adapter zu flashen. Der zusätzliche Aufwand mit Einbau eines Shunts würde den Rahmen sprengen. Also bleibt lediglich die Nutzung des virtuellen Sternpunktes (klassisch 3 Phasen über Widerstands-Spannungsteiler) und die Messung der Phasenspannungen per AD-Multiplexer. Im Augenblick probiere ich in diesem Open Loop Modus statt per PWM nur mit fixen Blöcken alle 60° zu kommutieren. Das 60°-Timing errechnet sich ja direkt aus der Zieldrehzahl. Die Kommutierungs-Blöcke möchte ich in ihrer Länge regeln, in Abhängigkeit der Rotor-Bewegung. Meine Hoffnung ist die, dass diese reine Block-Kommutierung sauberere BEMF-Signale liefert als im PWM-Closed-Loop-Modus. Aber vielleicht habt Ihr ja noch weitere geniale Ideen? Danke und Gruß, Johannes
Ergänzung: Im gegenwärtigen Stand mache ich es genau so, dass ich für einen spezifischen Motor für jede Zieldrehzahl experimentell den optimalen PWM Duty cycle ermittle und per Tabelle in der SW hinterlege. Ist aber nicht sinnvoll, da der richtige / optimale PWM Duty cycle eine Funktion sowohl von Drehzahl, als auch Last ist.
Hallo, ich gehe davon aus das du die Welle direkt betreiben willst. Also ohne Getriebe. Da ist es bei diesen Motoren extrem schwer die aktuelle Position zu ermitteln. BEMF ist bei diesen Drehzahlen so gut wie nicht erkennbar. Diese wird erst bei größeren Drehzahlen sauber erkannt. Um das ganze mit einen ATMega48 zu machen........ wirst du um Hallsensoren / Stromsensoren nicht drum herumkommen! Gruß Stumpf
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.