Brushless Motoren und Regler
Brushless Motor und Regler |
Vor einigen Wochen stellte ich fest, dass der Regler nicht immer den Motor so steuert, wie ich es erwarte. Das liegt wohl daran, dass ich mich an die Fahrtenregler für normalere Motoren gerichtet habe. Dass nun die Regler für Brushless Motoren ein paar Merkmale haben, wie sie richtig funktionieren, war mir bis vor kurzem unbekannt. Zum einen sollte das PWM Signal nicht gerade auf 2ms Impuls stehen, da sonst das Menü vom Fahrtenregler angesprochen wird. Die Mittelstellung ist für den Start besser geeignet, also 1,5ms.
Brushless Motor. Die drei Anschlüsse sind notwendig um ein Drehstromkreis zu erzeugen. |
Beim Arduino kann einfach ein PWM Signal erzeugt werden, das genau für einen Servo oder hier für einen Regler geeignet ist. Anders ist es bei dem Netduino, womit sich PWM Signale erzeugen lassen, die nicht mehr für das Regeln geeignet sind. Zwar kann ein Digital Servo mit einer höheren Frequenz durchgesteuert werden, jedoch muss immer das Verhältnis von Periodendauer und Pulslänge übereinstimmen. Werden diese Werte überschritten, so kann sich, wie in meinem Fall, der Motor im wahrsten Sinne des Wortes abrauchen.
#include <Servo.h> Servo pwm; void setup() { pwm.attach(9); } void loop() { // Periodenlänge ist aus der // Bibliothek bei 20ms // Startbereich // Pulslänge von 1ms pwm.write(0); delay(1000); // Mittelstellung // Pulslänge von 1,5ms pwm.write(90); delay(1000); // Endbereich // Pulslänge von 2ms pwm.write(180); delay(1000); } |
Beispiel Ansteuerung eines Servos oder Reglers mit Hilfe der Bibliothek für Arduino |
In einigen Foren habe ich Werte gefunden, die außerhalb des gedachten Bereiches liegen. Obwohl mir das bekannt war, habe ich die Werte probiert, da ich zu diesem Zeitpunkt noch keine ausreichenden Erfahrungen hatte, was Brushless Motoren und deren Regler angeht. Bei normalen Servos ist es weniger problematisch, da diese einiges aushalten. Bei kleinen Servos kann das Getriebe oder der Potentiometer mit dem Servohebel brechen.
using System; using Microsoft.SPOT; using SecretLabs.NETMF.Hardware; using SecretLabs.NETMF.Hardware.NetduinoPlus; using System.Threading; namespace ServoControlExample { public class Program { public static void Main() { PWM pwm = new PWM(Pins.GPIO_PIN_D5); while (true) { // Für jedes setzen, wird immer // eine Periodendauer von 20ms // verwendet. In der Sekunden // wird diese Periode 50 mal // wiederholt, das entsprechend // 50Hz darstellt. // Startbereich // Pulsdauer bei 1ms pwm.SetPulse(20000, 1000); Thread.Sleep(1000); // Mittelstellung // Pulsdauer bei 1,5ms pwm.SetPulse(20000, 1500); Thread.Sleep(1000); // Endbereich // Pulsdauer bei 2ms pwm.SetPulse(20000, 2000); Thread.Sleep(1000); } } } } |
Beispiel Ansteuerung eines Servos oder Reglers mit Hilfe der PWM Klasse aus dem .NET Micro Framework |
Im Zeitalter von .Net Framework und Bibliotheken wird einem einiges abgenommen. Ich erinnere mich noch, wie ich lange nach den Einstellwerten für den ATMega16 gesucht habe, und so wirklich zufrieden war ich damit nie. Bei nachfragen in bekannten Foren konnte mir keiner weiter helfen. Und ja, ich habe gegoogled!
Kommentare