Запуск бесколлекторного двигателя

Дата публикации: Jul 22, 2012 4:29:1 PM

На днях наконец пришли четыре ESC Hobbywing skywalker 20А блока для ранее добытых бесколлекторных двигателей RCTimer 750KV. Теперь имеется полный комплект для тестового запуска.

  

В качестве источника питания использовалась GePower LiPo батарея 3s1p (11.1В, 30С). Запуск производился с контроллера mbed LPC1768. Код программы представлен ниже.

ESC тест

#include "mbed.h"

#include "Servo.h"

DigitalOut led1(LED1);

DigitalOut led2(LED2);

DigitalOut led3(LED3);

AnalogIn stick(p20);

Servo ESC[4] = {p21,p22,p23,p24};

const bool ESC_E[4] = {1,0,0,0};

const bool mode = 0; // 0 - calibration; 1 - work;

float thr[4];

void initESC_0(){

    int i;

    for( i=0; i<4; i++ ){

        if( !ESC_E[i] )

            continue; // skip disabled ESCs

        ESC[i].calibrate(0.0005, 90.0, 0.0025);

        ESC[i] = 1.0; // set max throttle

    }

    for( i=0; i<50; i++ ){

        wait(0.1); // wait 5 seconds to connect battery

        led1 = !led1;

    }

    

    led1 = 1;

    wait(2); // wait 2 seconds to confirm max

    led1 = 0;

    for( i=0; i<4; i++ ){

        if( !ESC_E[i] )

            continue; // skip disabled ESCs

        ESC[i] = 0.0; // set min throttle

    }

    wait(2);

}

void initESC_1(){

    int i;

    for( i=0; i<4; i++ ){

        if( !ESC_E[i] )

            continue; // skip disabled ESCs

        ESC[i].calibrate(0.0005, 90.0, 0.020);

        ESC[i] = 0.0; // set min throttle

    }

    for( i=0; i<50; i++ ){

        wait(0.1); // wait 5 seconds to connect battery

        led1 = !led1;

    }

    led1 = 1;

    wait(2);

    led1 = 0;

}

int main() {

    int i;

    if( !mode )

        initESC_0();

    else    

        initESC_1();

        

    while(1){

        thr[0] = (stick - 0.5)*2;    

        //printf("%.3f\r\n", thr[0]);

        for( i=0; i<4; i++ ){

            if( !ESC_E[i] )

                continue; // skip disabled ESCs

            ESC[i] = thr[i];

        }

                

        wait_ms(1);

    }

}

В зависимости от флага "mode", можно включить режим калибровки (0) либо рабочий режим (1). В режиме калибровки, согласно инструкции для данного ESC, выполняется следующая последовательность действий:

В режиме работы:

Суть работы программы сводится к приему некоторого уровня с джойстика через аналоговый вход, расчет ширины управляющего импульса для PPM и передача сигнала через PWM выход на ESC.