Проблема с подключением бесколлекторного мотора 2200KV-A2212 6T

lennen
Offline
Зарегистрирован: 10.11.2015
Контроллер двигателя: RC BEC ESC T-REX 450 V2 
Двигатель: 2200KV-A2212 6T
Управляю с Ардуино Уно.
 
Все легко ищется на ebay в поиске.
 
На этом видео мой контроллер, но не совсем мой двигатель (1000 kV написано на видео) https://www.youtube.com/watch?v=9q2GB9cLCrk 
 
В общем раньше я подключал более мощный двигатель к более мощному контроллеру. Я знаю, что 1500 устанавливает 0, и если в программе записать на контроллер 1600, то мотор поедет вперед. Однако, я не знаю, в какой последовательности подключать 3 фазы контроллера к 3 фазам мотора. И плохо понял,какие минимальные ток и напряжение необходимы мотору, чтобы двигаться. С этими непониманиями я наблюдаю вообще мистику. Может Вы сообразите...
 
[code]#include <Servo.h> 
 
Servo motor_left;
Servo motor_right;
 
int mot_pin_left = 8;    //Подключаем левый мотор к пину 7
int mot_pin_right = 9;   //Подключаем правый мотор к пину 8
 
int js_position = 1500;  //Начальная позиция, всегда 1.5 мс для регуляторов бесколлекторных двигателей
int max_position = 2300; //Максимальное значение ШИМ 2.3 мс
int min_position = 800;  //Минимальное значени ШИМ 0.8 мс
 
int start = 1;  //Флаг задержки запуска
 
void setup() 
{
  motor_left.attach(mot_pin_left, js_position, max_position);    //Инициальзация левого мотора (порт, начальная позиция, максимальная позиция)       !!!
  motor_right.attach(mot_pin_right, js_position, max_position);  //Инициальзация правого мотора (порт, начальная позиция, максимальная позиция)      !!!
 
void loop() 
{
  //Начальная установка регуляторов в нулевое положение
  if(start == 1) {
    motor_left.write(js_position);
    motor_right.write(js_position);
    
    delay(700);
    start = 0;
  }
  
  //js_position = analogRead(A0);  //Считывание положения потенциометра
  
  //js_position = map(js_position, 0, 1023, 75, 140);  //Преобразование положения потенциометра в угол поворота
  js_position = 2000;
  motor_left.write(js_position);     //Записываем положение и отправляем на регулятор левого мотора
  motor_right.write(js_position);    //Записываем положение и отправляем на регулятор правого мотора
  
  delay(20000);  //Задержка цикла 20 мс
}[/code]
 
Это один из вариантов кода. Думаю, с ним точно мотор запуститься должен. Питание подаю с 2 аккумуляторов 18650, 3,7 В х 2 = 7,2 В. 
 
Мотор пикает. Как будто запускается. А потом не вертится, а пикает просто и поворачивается как будто только на треть фазы, а потом возвращается обратно. Все резко. Бъется в конвульсиях.
 
Как я не перебирал фазы, я же не знаю, как контроллер соединяется с мотором, везде были только конвульсии. Хотя я мог что-то пропустить и не учесть.
 
Теперь про мистику. Я испугался, что может ток или напряжение маленькие. Напряжение действительно может быть маленькое - у меня 7.2, а для мотора где-то написано, что надо 10 В, но я точно не понял. Подумал, что а вдруг и тока не хватает. 
 
Тогда подключил вместо аккумуляторов 18650 батарею мощную на 7.2 В 6800 мАh. Суть в том, что с ней вся схема вырубается. Я думал, даже сгорела. Ардуино лампочка медленно гаснет.... Ну ок. Мистика.
 
Но я поставил назад аккумуляторы 18650, все работает также, как и описал сначала. Питает, дрыгается и ничего более. Помогите, пожалуйста, разобраться? Я уже боюсь, что что-то нарушено и контроллер работает неправильно. Потому что пару раз спонтанно случайно двигатель крутился, а не бился в конвульсиях. Это было во время загрузки скетча, вроде. Вот поэтому страшновато, что я не могу его запустить. Может ли быть проблема с током и напряжением? Какие у вас предположения?
 
evgta
Offline
Зарегистрирован: 02.09.2016

Чтобы контроллер запустился надо задать 0 градусов. Затем выждать секунд 5 пока не пройдет инициализация . И можно регулировать обороты. У меня так

В смысле не середину а именно крайнее левое положение

lennen
Offline
Зарегистрирован: 10.11.2015
01#include <Servo.h>
02 
03Servo motor_left;
04Servo motor_right;
05 
06int mot_pin_left = 8;    //Подключаем левый мотор к пину 7
07int mot_pin_right = 9;   //Подключаем правый мотор к пину 8
08 
09int js_position = 2300;  //Начальная позиция, всегда 1.5 мс для регуляторов бесколлекторных двигателей
10int max_position = 2300; //Максимальное значение ШИМ 2.3 мс
11int min_position = 800;  //Минимальное значени ШИМ 0.8 мс
12 
13int start = 1;  //Флаг задержки запуска
14 
15void setup()
16{
17  motor_left.attach(mot_pin_left, js_position, max_position);    //Инициальзация левого мотора (порт, начальная позиция, максимальная позиция)       !!!
18  motor_right.attach(mot_pin_right, js_position, max_position);  //Инициальзация правого мотора (порт, начальная позиция, максимальная позиция)      !!!
19}
20 
21void loop()
22{
23  //Начальная установка регуляторов в нулевое положение
24  if(start == 1) {
25 
26     
27    motor_left.write(1200);
28    motor_right.write(1200);
29     
30    delay(7000);
31 
32    //motor_left.write(800);
33    //motor_right.write(800);
34 
35    //delay(6000);
36     
37    start = 0;
38  }
39   
40  //js_position = analogRead(A0);  //Считывание положения потенциометра
41   
42  //js_position = map(js_position, 0, 1023, 75, 140);  //Преобразование положения потенциометра в угол поворота
43  js_position = 1600;
44  motor_left.write(js_position);     //Записываем положение и отправляем на регулятор левого мотора
45  motor_right.write(js_position);    //Записываем положение и отправляем на регулятор правого мотора
46   
47  delay(2000);  //Задержка цикла 20 мс

Так сначала работало, а потом перестало. То есть я пробовал разобраться, как двигаться назад, в итоге не понял... Но заново запустил этот пример и уже не работает. 

 

Что не так может быть в коде и чего добавить?

evgta
Offline
Зарегистрирован: 02.09.2016

а разве этот контроллер умеет вращаться назад? он же от вертолета. там надо только в одну сторону вращаться.

еще и контронтоллер скорее всего настраивать надо.

для этого надо поставить 2300 затем включить контроллер с мотором, должно раздвться 2 коротких сигнала, затем(в течении 2 секунд) выставить на 800 после чего раздастся 3 кототких и 1 длинный, все котроллер готов к работе.

если ненадо настраивать контроллер, то включаем 800 и включаем контроллер раздаются 3 коротких и 1 длинный, все можно регулировать мотором,

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

olegtur77
Offline
Зарегистрирован: 09.04.2015

evgta пишет:

еще и контронтоллер скорее всего настраивать надо.

для этого надо поставить 2300 затем включить контроллер с мотором, должно раздвться 2 коротких сигнала, затем(в течении 2 секунд) выставить на 800 после чего раздастся 3 кототких и 1 длинный, все котроллер готов к работе.

Это называется  калибровка газа, делается при включении  , на всех(практически) авиамодельных регуляторах.

Т.С.-у . В этих регуляторах нету реверса, это АВИА модельный., смена направления вращения осуществляется путем перекидки любых двух фаз местами до включения. То ХХ таких мотор 2-3А, при нагрузке до 25А (серии 2212). Контакты регулятор-мотор должны быть через "бананы" или напрямую спаяны(и изолированы), плохой контакт на любой фазе - это потеря тока , броски и срыв синхронизации, следовательно мотор будет дергаться.

 

Ваш скетч с харбара для АВТОмодельного регятора, который с реверсом и "ноль" у него посредине (1500мкс).

Чуствуете разницу?

Если при подаче питания газ будет 2мс(максимум) более 5 секунд, регулятор переходит в режим программирования, состоящий из 7ми пунктов, которые отмечаются "морзянкой", выбор пунктов последовательно  по кругу.

вот примерное видео настройки https://www.youtube.com/watch?v=AofufwHRiJA

вот в читательном варианте

http://www.customelectronics.ru/chast-8-nastroyka-regulyatorov-oborotov-...

 там же ссылка на файл инструкцию.