ESC + Мотор: срыв синхры. Причины и алгоритм тестирования

Arseni

Кода под рукой не осталось, но Ваш вариант даже лучше - перебирает всевозможные пары. У меня было начало, как у Owen, а после его кода просто добавил резкие скачки псевдослучайной величины и длительности.

GrafSher

Мне видится, что правильным будет алгоритм, имитирующий условия реального полета.

dROb

В общем было немного времени - сформировалась такая программка. Чуток потестил - всё работает, как ожидалось. Из странностей - почему то с помощью программки ESC32 не входит в рассинхру без пропеллера. Буду тестить дальше.

/*************************************************************************************
  Sergey dROb, Oct 2014, 

  This program will test ESC+motor (or servo), sending range of valid PPM signals to the output pin at "servoPin"
  Primarily, this is used to detect sync issues, happening when Motor is quickly accelerating from low to high speed.

  If LCD display is connected - it displays number of test and Start-End microseconds of PPM signal (you can then record, which scenario is problem for your motor)

  Connection: Plug the LCD Keypad to the Arduino. Output PPM will be on servoPin. Conect GND and servoPin to ESC.
  Discussion: 
**************************************************************************************/

#include <LiquidCrystal.h>
#include <Servo.h>

Servo myservo;  // create servo object to control a servo

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);           // select the pins used on the LCD panel

int servoPin = 22;

int lcd_key     = 0;
int adc_key_in  = 0;

#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5


void setup(){
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.print("Starting motor");

  lcd.setCursor(0,1);
  lcd.print("In 3 seconds..");
  myservo.attach(servoPin);

  myservo.writeMicroseconds(950);  // Init ESC

  delay(3000); // Waiting 3 seconds to avoid chopping of user hands

  myservo.writeMicroseconds(1250); // Start motor on low speed
}


void loop(){

  int test_no=1;
  int start_uS;
  int end_uS;
  int tact_delay=1000;

  lcd.clear();
  lcd.print("No: Start: End:");


  // Main cycle - start series of cycles, when motor jumps from set of speeds to higher set of speeds.
  for (start_uS=1100; start_uS<=1900; start_uS+=100){  // Start PPM from which motor will jump to End PPM
    servoOutput(start_uS);
    delay(tact_delay);
      for (end_uS=start_uS+100; end_uS<=1900; end_uS+=100){ // End PPM of the current cycle
        displayData(test_no, start_uS, end_uS);

        servoOutput(end_uS);
        tact_delay=end_uS - start_uS; if (tact_delay<400) tact_delay=400;// Intellectual delay. Pause will be bigger if motor have to change the speed a lot. But not less 0.4 sec
        delay(tact_delay);
        servoOutput(start_uS);
        delay(tact_delay);
        test_no++;
     }
  }

  lcd.setCursor(0,1);

  lcd_key = read_LCD_buttons();
  dispatch_keys(lcd_key);
}


void servoOutput(int uS){
  myservo.writeMicroseconds(uS);
}

void displayData(int test_no, int s_uS, int e_uS){
  lcd.setCursor(1,1);
  lcd.print(test_no);
  lcd.setCursor(5,1);
  lcd.print(s_uS);
  lcd.setCursor(11,1);
  lcd.print(e_uS);
  lcd.print("     ");
}

//////////////////////////////////////////////////////////////////////////////
// This is actually not really used. Added to be able to get Keypad presses //
//////////////////////////////////////////////////////////////////////////////

int read_LCD_buttons(){               // read the buttons
    adc_key_in = analogRead(0);       // read the value from the sensor

    if (adc_key_in > 1000) return btnNONE;

    if (adc_key_in < 50)   return btnRIGHT;
    if (adc_key_in < 250)  return btnUP;
    if (adc_key_in < 450)  return btnDOWN;
    if (adc_key_in < 650)  return btnLEFT;
    if (adc_key_in < 850)  return btnSELECT;

    return btnNONE;                // when all others fail, return this.
}




void dispatch_keys(int key){
     switch (key){

       case btnRIGHT:{
            break;
       }
       case btnLEFT:{
            break;
       }
       case btnUP:{
             lcd.print("UP    ");
             break;
       }
       case btnDOWN:{
             lcd.print("DOWN  ");
             break;
       }
       case btnSELECT:{
             lcd.print("SELECT");
             break;
             setup();
       }
       case btnNONE:{
             ("NONE  ");
             break;
       }
   }

}
GrafSher
dROb:

почему то с помощью программки ESC32 не входит в рассинхру

а что это значит? Что за программка?

ssilk
dROb:

не входит в рассинхру без пропеллера

Так на холостом ходу и не должно… Вы токи то посмотрите, там колебания 0.2 ампера…

dROb
GrafSher:

а что это значит? Что за программка?

Неверно выразился, сори. Я имел в виду что при тестировании регулей ESC32, моя программка на Ардуино почему то не вызывает срывов синхры, которые в то же время вызывает встроенный алгоритм тестирования/калибровки ESC32 (выполняется на этих регулях с помощью QGroundControl)

ssilk:

Так на холостом ходу и не должно… Вы токи то посмотрите, там колебания 0.2 ампера…

Хотел сослать Вас на сообщение ssilk выше, а потом смотрю - а это Вы !! 😃
Вы же как раз сами всё объяснили ранее - слишком облегченный мотор делает слишком быстрые ускорения, и контроллер не в силах за ним уследить 😃
Ну и повторюсь - на практике, мотор без пропеллера, подсоединенный к ESC32 - теряет синхру при определенных условиях, при процедуре самодиагностики ESC32 (алгоритм аналогичный моей программе)

ssilk
dROb:

Вы же как раз сами всё объяснили ранее - слишком облегченный мотор делает слишком быстрые ускорения

Это относится к слишком маленьким пропам, на ХХ работают совсем другие принципы из за сверхмалых токов, ЭДС наводимая в неактивной фазе может быть ниже порога чувствительности, пренебрежительно малые магнитные силы и так далее…

dROb:

при процедуре самодиагностики ESC32

Так может проблема в самой процедуре? Я как то слабо понимаю, в чем практический смысл этих упражнений, ну, цель какая?))

kreef
dROb:

Собран коптер на базе MT3506-25 и регулей Rctimer SimonK 30A . Батарея 4S, пропы 10x4.5.

Те же моторы, регули Afro SimonK 30A, и батарея 4S (но пропы 12х4.5) Стабильный срыв синхры с неизбежным падением квадрика, несколько раз подряд.
Замена регулей на ZTW Spider Series 20A OPTO (остальная конфигурация без изменений) - проблема полностью ушла, сорвать синхронизацию и уронить квадрик не получается ни при каких условиях. Почему хваленные Afro не заработали в данной конфигурации разбираться не стал.

GrafSher
dROb:

Я имел в виду что при тестировании регулей ESC32, моя программка на Ардуино почему то не вызывает срывов синхры, которые в то же время вызывает встроенный алгоритм тестирования/калибровки ESC32 (выполняется на этих регулях с помощью QGroundControl)

Можно попробовать записать алгоритм изменения сигнала, который в этом случае применяется. Или… он зашит в самом регуляторе? Тогда хрен его выцарапаешь оттуда. 8(

dROb
kreef:

Те же моторы, регули Afro SimonK 30A, и батарея 4S (но пропы 12х4.5) Стабильный срыв синхры с неизбежным падением квадрика, несколько раз подряд.
Замена регулей на ZTW Spider Series 20A OPTO (остальная конфигурация без изменений) - проблема полностью ушла, сорвать синхронизацию и уронить квадрик не получается ни при каких условиях. Почему хваленные Afro не заработали в данной конфигурации разбираться не стал.

Вообще эти моторы считаются проблемными… Но проблемы, в общем решаемые. Ваш успех с ZTW относительно Afro, боюсь, мог обеспечиться за счёт того, что ZTW - не SimonK. СимонК прошивка крутая, быстрая, но, увы, за счёт этого и потенциально опасная для наших моторов. Подтвердите, ZTW ваши - не SimonK ?

ssilk:

Это относится к слишком маленьким пропам, на ХХ работают совсем другие принципы из за сверхмалых токов, ЭДС наводимая в неактивной фазе может быть ниже порога чувствительности, пренебрежительно малые магнитные силы и так далее…

Так может проблема в самой процедуре? Я как то слабо понимаю, в чем практический смысл этих упражнений, ну, цель какая?))

Да, собсно мы уже далековато ушли от цели 😃 А цель была собсно простая - у меня, как и у kreef, было пару падений из -за того что в небе моторы теряли синхронизацию, и останавливались. Я хотел придумать способ как можно протестировать комбинации Мотор+Регуль+Проп, чтобы видеть проблемы на столе, а не в воздухе.
Мои последние тесты без винтов, конечно, вызывают недоумение)))) Увы, по причине нехватки времени последнее время, - приходилось тестировать программу ночью, и чтобы не будить семью приходилось не одевать пропеллер.
Сегодня завтра наконец проведу Live тесты, на разных регулях, моторах, батареях.

GrafSher:

Можно попробовать записать алгоритм изменения сигнала, который в этом случае применяется. Или… он зашит в самом регуляторе? Тогда хрен его выцарапаешь оттуда. 8(

Мне показалось, я его правильно подслушал и перенял…

В общем пока немного странно, что на единственном тесте который я смог сделать, (мотор без пропеллера), моя программка, и режим калибровки/тестирования ESC32, при похожести своей, привели к разным результатам (Моя программа не вызывает проблем синхронизации, а режим калибровки - ESC32 - вызывает.). У меня только одно объяснение - возможно что регулятор находится в разных режимах. Когда тестирую его я с помощью Ардуины+Программы, он находится в обычном, рабочем режиме. А когда самокалибровка - специальный, Жёсткий режим, который приводит к срыву синхры.

Тем не менее - гораздо интереснее будет, когда я наконец смогу погонять реальный Мотор+Проп+3s-4s батарейку! Надеюсь, будет это сегодня! Stay tuned =)

ssilk
dROb:

Подтвердите, ZTW ваши - не SimonK ?

По моим данным, таки Саймон… Может дело в версии прошивки? Почитайте там описание, может что натолкнет на идею…

dROb
ssilk:

По моим данным, таки Саймон… Может дело в версии прошивки? Почитайте там описание, может что натолкнет на идею…

Да, действительно, относительно свежий СимонК ! Возможно, в других Ваших регулях стоял СимонК до 2012года (в интернете много упоминаний, что эти версии крайне плохо работали с блинчиковыми моторами. В то же время, у прошивки, насколько я знаю, есть еще и настройки, которые кто-то редко когда трогает. Быть может они тоже разные в регулях.

Наконец, первые тесты и первые результаты. Из-за ограниченности времени удалось провести тесты только на двух регулях (RCTIMER 20A SIMONK, и ESC32), а ещё в наличии был T-MOTOR T40A, но его мы потестил сегодня.
Тесты проводились с помощью Ардуино Мега+Программка Моя + Мотор T-Motor MT3506-25 + батарея 3S +винт 12x4.5
Результаты тестов:

    • ESC32 ненастроенный (не выполнена калибровка тока, и максимум тока выставлен в 20А) ловит срыв синхры уже на 7тесте (прыжок оборотов с 1100 до 1700мкС), при измеренном максимуме тока всего в 6-7 Ампер (измеритель, правда, довольно инертен, и, думаю, не фиксирует резкие пики тока, которые скорее всего в разы сильнее)
    • RCTimer 20A SimonK в комбинации с этим мотором, вообще не подвержен срыву синхронизации, все тесты проходит на ура

Вывод: использованная программа вполне может применяться для тестирования ВинтоРегулеМоторной группы на склонность к потере синхронизации.

ssilk
dROb:

Возможно, в других Ваших регулях стоял СимонК до 2012года (в интернете много упоминаний, что эти версии крайне плохо работали с блинчиковыми моторами.

Во первых, не в моих…) У меня за пару лет ни одного срыва не было, а если и были, то я их не заметил…) А во вторых, 3506 вовсе не блинчик…) Блинчиками называют многополюсные моторы, 20 и более полюсов…)

dROb
ssilk:

Во первых, не в моих…) У меня за пару лет ни одного срыва не было, а если и были, то я их не заметил…) А во вторых, 3506 вовсе не блинчик…) Блинчиками называют многополюсные моторы, 20 и более полюсов…)

Опять попутал Вас 😃
Касательно блинчиков - почему то в некоторых источниках MT3506 называют блинчиком, хотя да, кроме внешней слегка похожести, - другими признаками блинчика он не обладает. (спасибо что заставили меня погуглить теорию блинчиков 😃 )

Но интересно тогда вот что - почему, не являясь блинчиком, MT3506 обладает всеми их проблемами? (это не только мой опыт)

ssilk
dROb:

почему, не являясь блинчиком, MT3506 обладает всеми их проблемами?

Скорее всего, производитель выжимает из формфактора максимум возможностей, не оставляя резервов, вот мотор и работает “на грани” и очень требователен к точности регуля… Не просто так же они считаются очень эффективными… Скорее всего, мотор аналогичного типа, но покондовее, с характеристиками похуже, будет совершенно спокойно работать в более широком диапазоне условий… Я не слишком витиевато выразился? )))

Был бы интересен, в этом плане, сравнительный тест другого МТ3506-650кВ…)

dROb
ssilk:

Скорее всего, производитель выжимает из формфактора максимум возможностей, не оставляя резервов, вот мотор и работает “на грани” и очень требователен к точности регуля… Не просто так же они считаются очень эффективными… Скорее всего, мотор аналогичного типа, но покондовее, с характеристиками похуже, будет совершенно спокойно работать в более широком диапазоне условий… Я не слишком витиевато выразился? )))

Был бы интересен, в этом плане, сравнительный тест другого МТ3506-650кВ…)

Со всем, в общем, согласен)))

Действительно, протестировать этот другой было бы крайне интересно! Ибо тест реально очень простой и быстровыполнимый!

8 days later
dROb

Собсно из последних новостей - Cамый Хреновый ESC “из коробки” - это Самый Хвалёный ESC32!!
Не хочет ни с чем работать нормально, зараза… Пробовал на простейшем ntm 28-26 1200 - хрен там, синхру срывает.
Теперь разбирать коптер - все регули настраивать, и менять настройки… (по умолчанию там ток в 20А, что многовато для большинства моторов)

SimonK, современный, как показалось, весьма неплохо держит проблемы с синхронизацией. Даже в сложных режимах, причём срыв синхры не приводит к стопудовому падению (ESC32 же при диагностировании срыва синхры переходит в режим “ступор”, и коптер падает)

Постараюсь таки выложить что-то в подтверждении своих слов на днях.

3 months later
twister

Ув. знающие люди, очень нуждаюсь в вашей помощи.
Надеюсь что этот форум, гугл и ютюб привели меня в тему по адресу.
На заказывал на АЛИ компонентов чтоб собрать квадрик на базе Ф450 .
А конкретней /опирался на калькулятор/


Параметры :
Моторы - SunnySky X3108 900kv
Регули - HobbyWing Skywalker 40A
Контроллер - Naza m lite + GPS…
FlySky th9x + приёмник
Пропы - 11 х 5.5 карбон
Аккум - 3с 5а/час - 50с

Кратко изложу
Долго он не хотел равномерно работать моторы заводились не равномерно, откалибровал регули, всё стало ок, заводится ровно /выше 5 сантиметра от земли не поднимался, страшно было так как нестабильно работал/
откалибровал ГПС, калибровка гироскопов не требовалась /показатель град/с около 0.3-0.5/

Набрался смелости, поднялся ввоздух на метр, висел ровно вначале унитазил, по кругу, сел, повернул ГПС на 7 градусов - унитаз пропал весел очень ровно. Я от радости поддал газку чтоб поднять его до метров 5, после чего он поднялся до метров 3-4 и резко ломанулся влево, рубанулся об машину и грохнулся.
итог - 2 сломанных руки /у квадрика/

Будьте любезны, дайте решение проблемы, а то каждый вечер засыпаю с чувством что выкинул деньги в мусорник, а бредил мечтой очень долго …

Вот видео с пробным запуском дома после того как убрал отсечку /думал в этом причина/ при помощи прог.карты

Огромное спасибо всем заранее за любой ответ

Hyperion

по видео ничего не понятно. Может дергаете стики, Может он пытается оторваться но газа не хватает и он опускается обратно и так циклично.
По кальку коптер у вас недогружен. Плохо это или нет для назы не знаю, пусть отцы поправят, но у АПМ надо настраивать газ висения, особенно если он так отличается от 50%

1 month later
DmitryKl

Друзья, помогите разгадать загадку, намучались, не понимаем((

Есть отличный Коптер окта с мозгами dji А2, хорошими моторами и регулями Hobbywing Flyfun opto, прошитые Simon K.

Вдруг, примерно после 10 полетов по 10 минут на холостых оборотах начались такие глюки

Выглядит, как будто “ударом”, те быстрое, на милисекунду резкое отключение мотора. Не знаю, срыв это синхронизации или нет, но это не важно)) главное - глючит(
Такой глюк был однажды на одном коптере на одном регуле, списали на поломку регуля, поменяли регуль и усе.
Но тут… Тут все сразу!! Но как могут все регули сразу испортится?
Первые 100 минут этого же не было…
Мозги - тоже не похоже - в этом видео был режим мануал, те отключены все примудрости А2.
Далее подключили каждый мотор отдельно с приемнику, погазовали, нет такой проблемы.
Получается - мозги? НЕ ВЕРЮ))))

Если всё же регули, то почему отдельно не глючат, и почему все сразу и после 100 минут?
Единственное что нашел, у нас регули стоят под моторами, соответственно к ним тянутся длинные провода питания. И типа надо ставить дополнительные кондеры.
foxtechfpv.com/foxtech-power-caps-module-p-1485.ht…
Иначе написано “регули медленно умирают”. Как это медленно? Как именно?))

Понимаете, насколько я запутался?)) просто взрыв мозга!
Спаситеееее!

GAV
DmitryKl:

Спаситеееее!

А рама у Вас, случайно не из карбона?
Есть вероятность, что один из моторов пробивает на массу.