Quantcast
Channel: Arduino Forum - Latest topics
Viewing all articles
Browse latest Browse all 15287

Brushless betafpv motor with Arduino

$
0
0

This is my first time trying to control a brushless motor with Arduino, but I'm running into problems that I haven't been able to work through. I'm hoping it's just because I'm a noob with brushless stuff, and there's something easy I'm missing.

I'm using a tiny BetaFPV 11000KV 7.4v Whoop drone motor with a load current of 3.8A. (1103 Brushless Motors – BETAFPV Hobby)
The ESC is E-Power 10A
The battery is a 2S lipo
Arduino is Arduino Uno

A poor attempt at a circuit diagram:

When I connect the ESC to battery, the motor beeps to indicate that it is connected. I can do a calibration sequence where I output full throttle (PWM 2000us) for two seconds, then go to low throttle (1000us), and it gives me confirmation beeps for all of that.

But when I then try to start the motor by sending anything over min throttle (1100us, for example), the motor twitches a bit, then seems to power cycle as though it's browning out. Since my arduino is powered from the ESC, it also power cycles, so the whole process starts over.

I also tried powering the arduino from a separate power source:

But then the motor just continually twitches. I'm not sure what I did differently, but at one point, the motor actually started to spin, but then gave out some magic smoke. So I somehow toasted that motor. Luckily I have some more, but I want to figure out what I'm doing wrong so I don't burn up more of them.

I know these motors are intended for use with whoop flight controllers, but I thought they would work the same as any other brushless motor, and should be controllable with a normal ESC. But maybe they require some special type of ESC? That's probably a question for a different forum. But if anyone here knows what I might be doing wrong, any help is appreciated!

My test code:

#include <Servo.h>

#define ESC_PIN 9
Servo esc;

void setup()
{
    esc.attach(ESC_PIN, 1000, 2000);

    // Calibration sequence
    esc.writeMicroseconds(2000); //Set high throttle.  Get a confirmation beep
    delay(2000); 
    esc.writeMicroseconds(1000); //Set low throttle. Get a confirmation tune
    delay(2000);

    esc.writeMicroseconds(1300); //Try to start the motor. Motor twitches, and everything resets.
}

void loop()
{
}

3 posts - 3 participants

Read full topic


Viewing all articles
Browse latest Browse all 15287

Trending Articles