wimalopaan
User
Hallo zusammen,
ich wollte zwar nie mehr einen Bürstensteller entwickeln, aber jetzt habe ich es doch getan
Weil es einfach keine kommerziellen gibt, die auch die Drehzahl des Bürstenmotors messen.
Anders als bei BLDC-Motorstellern ist das hier nicht ein Abfallprodukt des Kommutierungsverfahrens, sondern man muss das extra realisieren. Ist keine Raketentechnik, aber auch nicht ganz trivial.
Im Anhang sieht man die kleine und die große Variante. Sie unterscheiden sich nur in der Belastbarkeit:
- kleine Variante: 5A(8A)@24V
- große Variante 50A(70A)@36V
Die restlichen Features sind identisch:
- Steuerung über SBus(2), IBus, SumD(V3), CRSF oder ppm
- Telemetrie über SBus2, IBus, Hott, CRSF
Als Telemetriewerte werden Motordrehzahl, Motorstrom, Akku-Spannung und ggf. Motortemperatur (dazu ist natürlich ein extra 2-draht-Sensor erforderlich, oder auch nicht: siehe Update 1) transportiert.
Die Firmware funktioniert im Test, bis zur Freigabe wird es aber noch etwas dauern. Wie alle meine Projekte wird die Firmware als OSS zur Verfügung gestellt und die Hardware kann man bei JLCPCB bestellen. Über den weiteren Fortschritt (oder Rückschritt) werde ich hier informieren.
Das Messprinzip ist die Auswertung des momentane Stromverlaufes, da ein Bürstenmotor notwendigerweise beim Kommutierungswechsel Wicklungen parallel schaltet, was zu einem Strompeak führt. Mit etwas Vorverarbeitung, DFT und Auswertung des Amplitudenspektrums hat man dann die elektrische Drehzahl (s.a Update 2).
Update 1:
Ein Temperaturschätzung ohne einen externen Temperatursensor scheint auch möglich: der Innenwiderstand des Motors ist abh. von der Temperatur. In Stillstandsphasen kann die Motoridentifikation wiederholt werden, und dabei kann eine Veränderung des Innenwiderstands gemessen werden (s.a. Update 2).
Update 2:
Es hat sich gezeigt, dass bei manchen Motoren die Messung "nur" bis ca. 80% der Maximaldrehzahl funktionierte. Der Grund scheint mir darin zu liegen, dass die Bürsten irgendwann anfangen zu springen. Dadurch schleichen sich leider niederfrequente Anteile ein: sprich das Maximum im Amplitudenspektrum entspricht nicht mehr der elektrischen Drehzahl.
Deswegen musste ich weiter in die Trickkiste greifen: wie auch bei guten Brushless-Stellern, die mit echter FOC arbeiten, muss erst eine Motoridentifikation gemacht werden, indem Innenwiderstand Rm und Induktivität Lm des Motors geschätzt werden, und daraus wird dann auch die Motorkonstante Kv ermittelt. Wohlgemerkt, ohne das der Motor auf einen Prüfstand muss oder dass man irgendwelche anderen Hilfsmittel benötigt. Damit ist jetzt eine absolut zuverlässige Drehzahlmessung möglich. Die Versuche, über die Uemf des Motors zu gehen, waren wenig erfolgreich, weil gerade bei großen PWM-Duties (>80%), das Zeitfenster zur Messung der Uemf sehr klein wird. Man muss berücksichtigen, dass erst die Induktionsspannung des Schaltvorgangs abgeklungen sein muss, bevor man Uemf messen kann (bei >= 20KHz PWM-Frequenz (50µs) und d>=90% ist man bei einem Fenster von <=2,5µs). Bei d=100% ist die Messung eh nicht möglich.
Man kann die Motorwerte Rm, Lm, Kv im Steller speichern, oder man lässt bei jedem Einschalten die Indentifikation einmal laufen (ca. 3s). Letzteres hat den Vorteil, dass auch die Temperaturschätzung genauer wird, denn die ist ja relativ zur Umgebungstemperatur (also: Ankerwicklung ist 40°K über Umgebungstemperatur).
Ein "etwas" ungeklärtes Phänomen ist, dass der Innenwiderstand Rm bei links bzw. rechts-Lauf um ca. 10-12% bei manchen Motoren unterschiedlich ist. Wohlgemerkt dreht sich der Motor bei der Messung nicht ... Das ist in der Praxis nicht schlimm, weil man ja mit beiden Werten getrennt arbeiten kann.
ich wollte zwar nie mehr einen Bürstensteller entwickeln, aber jetzt habe ich es doch getan
Anders als bei BLDC-Motorstellern ist das hier nicht ein Abfallprodukt des Kommutierungsverfahrens, sondern man muss das extra realisieren. Ist keine Raketentechnik, aber auch nicht ganz trivial.
Im Anhang sieht man die kleine und die große Variante. Sie unterscheiden sich nur in der Belastbarkeit:
- kleine Variante: 5A(8A)@24V
- große Variante 50A(70A)@36V
Die restlichen Features sind identisch:
- Steuerung über SBus(2), IBus, SumD(V3), CRSF oder ppm
- Telemetrie über SBus2, IBus, Hott, CRSF
Als Telemetriewerte werden Motordrehzahl, Motorstrom, Akku-Spannung und ggf. Motortemperatur (dazu ist natürlich ein extra 2-draht-Sensor erforderlich, oder auch nicht: siehe Update 1) transportiert.
Die Firmware funktioniert im Test, bis zur Freigabe wird es aber noch etwas dauern. Wie alle meine Projekte wird die Firmware als OSS zur Verfügung gestellt und die Hardware kann man bei JLCPCB bestellen. Über den weiteren Fortschritt (oder Rückschritt) werde ich hier informieren.
Das Messprinzip ist die Auswertung des momentane Stromverlaufes, da ein Bürstenmotor notwendigerweise beim Kommutierungswechsel Wicklungen parallel schaltet, was zu einem Strompeak führt. Mit etwas Vorverarbeitung, DFT und Auswertung des Amplitudenspektrums hat man dann die elektrische Drehzahl (s.a Update 2).
Update 1:
Ein Temperaturschätzung ohne einen externen Temperatursensor scheint auch möglich: der Innenwiderstand des Motors ist abh. von der Temperatur. In Stillstandsphasen kann die Motoridentifikation wiederholt werden, und dabei kann eine Veränderung des Innenwiderstands gemessen werden (s.a. Update 2).
Update 2:
Es hat sich gezeigt, dass bei manchen Motoren die Messung "nur" bis ca. 80% der Maximaldrehzahl funktionierte. Der Grund scheint mir darin zu liegen, dass die Bürsten irgendwann anfangen zu springen. Dadurch schleichen sich leider niederfrequente Anteile ein: sprich das Maximum im Amplitudenspektrum entspricht nicht mehr der elektrischen Drehzahl.
Deswegen musste ich weiter in die Trickkiste greifen: wie auch bei guten Brushless-Stellern, die mit echter FOC arbeiten, muss erst eine Motoridentifikation gemacht werden, indem Innenwiderstand Rm und Induktivität Lm des Motors geschätzt werden, und daraus wird dann auch die Motorkonstante Kv ermittelt. Wohlgemerkt, ohne das der Motor auf einen Prüfstand muss oder dass man irgendwelche anderen Hilfsmittel benötigt. Damit ist jetzt eine absolut zuverlässige Drehzahlmessung möglich. Die Versuche, über die Uemf des Motors zu gehen, waren wenig erfolgreich, weil gerade bei großen PWM-Duties (>80%), das Zeitfenster zur Messung der Uemf sehr klein wird. Man muss berücksichtigen, dass erst die Induktionsspannung des Schaltvorgangs abgeklungen sein muss, bevor man Uemf messen kann (bei >= 20KHz PWM-Frequenz (50µs) und d>=90% ist man bei einem Fenster von <=2,5µs). Bei d=100% ist die Messung eh nicht möglich.
Man kann die Motorwerte Rm, Lm, Kv im Steller speichern, oder man lässt bei jedem Einschalten die Indentifikation einmal laufen (ca. 3s). Letzteres hat den Vorteil, dass auch die Temperaturschätzung genauer wird, denn die ist ja relativ zur Umgebungstemperatur (also: Ankerwicklung ist 40°K über Umgebungstemperatur).
Ein "etwas" ungeklärtes Phänomen ist, dass der Innenwiderstand Rm bei links bzw. rechts-Lauf um ca. 10-12% bei manchen Motoren unterschiedlich ist. Wohlgemerkt dreht sich der Motor bei der Messung nicht ... Das ist in der Praxis nicht schlimm, weil man ja mit beiden Werten getrennt arbeiten kann.