Brushless Motoren und Regler

image
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.

image
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.

Leider war da kein Regler. Daher habe ich ersatzweise ein Bild von einem Servo verwendet.
#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! Smiley mit herausgestreckter Zunge

Kommentare

Beliebte Posts aus diesem Blog

Arduino Control (Teil 5) - PWM Signal einlesen

RC Fahrtenregler für Lego Kettenfahrzeug

Angular auf dem Raspberry Pi