События‎ > ‎

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

Отправлено 22 июл. 2012 г., 9:29 пользователем Олег Евсегнеев   [ обновлено 22 июл. 2012 г., 9:51 ]
На днях наконец пришли четыре 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, выполняется следующая последовательность действий:
  1. -> сигнал газа на максимум;
  2. -> подключение батареи и ожидание 2 сек;
  3. <- ESC издает два бипа;
  4. -> сигнал газа на минимум;
  5. <- ESC издает несколько бипов, в зависимости от кол-ва ячеек батареи;
  6. <- ESC издает один длинный бип.
В режиме работы:
  1. -> сигнал газа на минимум;
  2. <- ESC издает три бипа;
  3. <- ESC издает несколько бипов, в зависимости от кол-ва ячеек батареи;
  4. <- ESC издает один длинный бип.
Суть работы программы сводится к приему некоторого уровня с джойстика через аналоговый вход, расчет ширины управляющего импульса для PPM и передача сигнала через PWM выход на ESC.

Comments