Проблема с подключением бесколлекторного мотора 2200KV-A2212 6T
- Войдите на сайт для отправки комментариев
Сб, 04/02/2017 - 10:46
Контроллер двигателя: 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, все работает также, как и описал сначала. Питает, дрыгается и ничего более. Помогите, пожалуйста, разобраться? Я уже боюсь, что что-то нарушено и контроллер работает неправильно. Потому что пару раз спонтанно случайно двигатель крутился, а не бился в конвульсиях. Это было во время загрузки скетча, вроде. Вот поэтому страшновато, что я не могу его запустить. Может ли быть проблема с током и напряжением? Какие у вас предположения?
Чтобы контроллер запустился надо задать 0 градусов. Затем выждать секунд 5 пока не пройдет инициализация . И можно регулировать обороты. У меня так
В смысле не середину а именно крайнее левое положение
01
#include <Servo.h>
02
03
Servo motor_left;
04
Servo motor_right;
05
06
int
mot_pin_left = 8;
//Подключаем левый мотор к пину 7
07
int
mot_pin_right = 9;
//Подключаем правый мотор к пину 8
08
09
int
js_position = 2300;
//Начальная позиция, всегда 1.5 мс для регуляторов бесколлекторных двигателей
10
int
max_position = 2300;
//Максимальное значение ШИМ 2.3 мс
11
int
min_position = 800;
//Минимальное значени ШИМ 0.8 мс
12
13
int
start = 1;
//Флаг задержки запуска
14
15
void
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
21
void
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 мс
Так сначала работало, а потом перестало. То есть я пробовал разобраться, как двигаться назад, в итоге не понял... Но заново запустил этот пример и уже не работает.
Что не так может быть в коде и чего добавить?
а разве этот контроллер умеет вращаться назад? он же от вертолета. там надо только в одну сторону вращаться.
еще и контронтоллер скорее всего настраивать надо.
для этого надо поставить 2300 затем включить контроллер с мотором, должно раздвться 2 коротких сигнала, затем(в течении 2 секунд) выставить на 800 после чего раздастся 3 кототких и 1 длинный, все котроллер готов к работе.
если ненадо настраивать контроллер, то включаем 800 и включаем контроллер раздаются 3 коротких и 1 длинный, все можно регулировать мотором,
если короткие сигналы без остановки, значить сигнал не в левом положении, надо уменьшать значение пока сигналы не прекратятся,после этого можно регулировать мотором
еще и контронтоллер скорее всего настраивать надо.
для этого надо поставить 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-...
там же ссылка на файл инструкцию.