arduino + 550Dc12v мотор

ragaban
Offline
Зарегистрирован: 21.07.2018

Привет всем, имеется arduino nano + 550 Dc12v колекторный мотор и китайский ESC регулятор Fire Phoenix 320 A. При включении питания регулятор подаёт 3 сигнала и всё... Стик в верх\низ подавал при включении, результата ноль. Иногда моторчик крутится произвольно то вперёд то назад, независимо от стика газа. Раньше стоял бесколекторный мотор + регулятор, всё работало отлично. Помогите новичку разобаться, пожалуйста!!! Может скетч нужно изменить?



// ЭТО СКЕТЧ ПРИЁМНИКА!!!

//--------------------- НАСТРОЙКИ ----------------------
#define CH_NUM 0x63   // номер канала (должен совпадать с передатчиком)
//--------------------- НАСТРОЙКИ ----------------------

//--------------------- ДЛЯ РАЗРАБОТЧИКОВ -----------------------
// УРОВЕНЬ МОЩНОСТИ ПЕРЕДАТЧИКА
// На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
#define SIG_POWER RF24_PA_MIN

// СКОРОСТЬ ОБМЕНА
// На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
// должна быть одинакова на приёмнике и передатчике!
// при самой низкой скорости имеем самую высокую чувствительность и дальность!!
// ВНИМАНИЕ!!! enableAckPayload НЕ РАБОТАЕТ НА СКОРОСТИ 250 kbps!
#define SIG_SPEED RF24_1MBPS
//--------------------- ДЛЯ РАЗРАБОТЧИКОВ -----------------------

//--------------------- БИБЛИОТЕКИ ----------------------
int rainSensePin= 0; // аналоговый вход 0 для сигнала датчика воды
int curCounter= 0; // счётчик - инкрементируется на 1 каждую секунду после срабатывания датчика
#include <Servo.h>
Servo motor;
int motor_kv;
int servo_kv;
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(9, 10);   // "создать" модуль на пинах 9 и 10 для НАНО/УНО
//RF24 radio(9, 53); // для МЕГИ
//--------------------- БИБЛИОТЕКИ ----------------------

//--------------------- ПЕРЕМЕННЫЕ ----------------------
byte pipeNo;
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; // возможные номера труб

int recieved_data[3];         // массив принятых данных
int telemetry[2];             // массив данных телеметрии (то что шлём на передатчик)

int joy_x = 0;
Servo myservo;
//--------------------- ПЕРЕМЕННЫЕ ----------------------

void setup() {
  motor.attach(7);
  pinMode(rainSensePin, INPUT);
  myservo.attach(5);
  Serial.begin(9600);
  radioSetup();
}

void loop() {
  while (radio.available(&pipeNo)) {                                 // слушаем эфир
    radio.read( &recieved_data, sizeof(recieved_data));              // чиатем входящий сигнал

    // формируем пакет данных телеметрии (напряжение АКБ, скорость, температура...)
   int rainSenseReading = analogRead(rainSensePin);
    servo_kv = map(recieved_data[2], 1023, 0, 40, 120);
    myservo.write(servo_kv);
    motor_kv = map(recieved_data[0], 513, 0, 800, 2200);
    //motor_kv = map(recieved_data[0], 513, 0, 0, 2200);
    //motor.write(motor_kv);
    motor.writeMicroseconds(motor_kv);
    
    telemetry[0] = rainSenseReading; // Записываем значение датчика воды
    radio.writeAckPayload(pipeNo, &telemetry, sizeof(telemetry));    // отправляем пакет телеметрии
  }
}

void radioSetup() {         // настройка радио
  radio.begin();               // активировать модуль
  radio.setAutoAck(1);         // режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(0, 15);     // (время между попыткой достучаться, число попыток)
  radio.enableAckPayload();    // разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);    // размер пакета, байт
  radio.openReadingPipe(1, address[0]);   // хотим слушать трубу 0
  radio.setChannel(CH_NUM);               // выбираем канал (в котором нет шумов!)
  radio.setPALevel(SIG_POWER);            // уровень мощности передатчика
  radio.setDataRate(SIG_SPEED);           // скорость обмена
  // должна быть одинакова на приёмнике и передатчике!
  // при самой низкой скорости имеем самую высокую чувствительность и дальность!!

  radio.powerUp();         // начать работу
  radio.startListening();  // начинаем слушать эфир, мы приёмный модуль
}

 

vvadim
Offline
Зарегистрирован: 23.05.2012

вы бы ещё бензиновый мотор прилепили....

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

вам нужно для вашего движка ставить драйвер с соответствующим током и  программу переделать .

ragaban
Offline
Зарегистрирован: 21.07.2018

vvadim, в том то и дело, что регулятор, который я описал выше(Fire Phoenix 320a), предназначен для колекторных моторов такого типа как у меня. Может вы дадите элементарный скетч для использования такого регулятора? Или обьясните какая разница в коде между такими регуляторами? Заранее благодарен.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А если стик вверх-вниз подать от пульта регулятор начинает работать?

ragaban
Offline
Зарегистрирован: 21.07.2018

Нет, на стик он не реагирует. Бывает раза с 10-20 при включении+стик вверх он определяет мотор звуковым сигналом и начинает крутить произвольно независимо от стика газа. Я подозреваю что скетч от бесколекторного регулятора не подходит ему... Гугл результатов не дал. Регулятор рабочий, стоял на другом устройстве под управлением обычной покупной аппаратуры.

vvadim
Offline
Зарегистрирован: 23.05.2012

ragaban пишет:

vvadim, в том то и дело, что регулятор, который я описал выше(Fire Phoenix 320a), предназначен для колекторных моторов такого типа как у меня. Может вы дадите элементарный скетч для использования такого регулятора? Или обьясните какая разница в коде между такими регуляторами? Заранее благодарен.

 

а чего же вы управляете им как бесколлекторным мотором с помощью библиотеки серво.

ragaban
Offline
Зарегистрирован: 21.07.2018

Посоветуйте какой библиотекой нужно управлять? Я новичёк в этом деле, направьте пожалуйста в нужное русло.

vvadim
Offline
Зарегистрирован: 23.05.2012

тк никакой инфы по этому регулю нет (наверное жуткий китайский левак) только методом тыка.

подключите мотор, подайте питание, подключите чёрный провод к GND дуни и подайте с неё 5 вольт поочереди на белый и красный.

отпишитесь о результате.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

vvadim пишет:

ragaban пишет:

vvadim, в том то и дело, что регулятор, который я описал выше(Fire Phoenix 320a), предназначен для колекторных моторов такого типа как у меня. Может вы дадите элементарный скетч для использования такого регулятора? Или обьясните какая разница в коде между такими регуляторами? Заранее благодарен.

 

а чего же вы управляете им как бесколлекторным мотором с помощью библиотеки серво.


Мотор может быть любой.
А управление у всех как сервой.
Так традиционно в моделизме.
А проблема в том что для исключения самопроизвольного несанкционированного старта мотора
при подаче питания
нужно произвести какие-то осмысленные и заранее известные действия.
Обычно газ вверх потом газ вниз .
И только тогда он начинает "понимать" сигналы управления.
С любого пульта должно сработать

Есть такая платка, называется servo tester.
У него ширина импульсов шире обычных : от меньше минимальных до больше максимальных.
Подключить и покрутить его от упора и до упора?

ragaban
Offline
Зарегистрирован: 21.07.2018

Спасибо большое, проблема решена... Видимо китайские джойстики на моём пульте не давали максимальных положений. Подключил серво тестер, покрутил, заработало! Подключил через пульт, включаю питание стик в нейтрале, потом вверх на 3 сек и вниз, пиииииик) вот только при каждом включении необходимо это проделывать, он что не запоминает?

vvadim
Offline
Зарегистрирован: 23.05.2012

trembo пишет:
Мотор может быть любой. А управление у всех как сервой. Так традиционно в моделизме. А проблема в том что для исключения самопроизвольного несанкционированного старта мотора при подаче питания нужно произвести какие-то осмысленные и заранее известные действия. Обычно газ вверх потом газ вниз . И только тогда он начинает "понимать" сигналы управления. С любого пульта должно сработать Есть такая платка, называется servo tester. У него ширина импульсов шире обычных : от меньше минимальных до больше максимальных. Подключить и покрутить его от упора и до упора?

беру свои слова обратно.

сорри.

век живи - век учись...

ragaban
Offline
Зарегистрирован: 21.07.2018

Может кому будет полезно - на таких регуляторах неитраль и газ нужно выставлять диапазон 1500-2300, в отличии от бесколекторных регуляторов 800-2300. Реверс еще не настраивал.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

ragaban пишет:

Спасибо большое, проблема решена... Видимо китайские джойстики на моём пульте не давали максимальных положений. Подключил серво тестер, покрутил, заработало! Подключил через пульт, включаю питание стик в нейтрале, потом вверх на 3 сек и вниз, пиииииик) вот только при каждом включении необходимо это проделывать, он что не запоминает?


Я вам про безопасность зря что-ли рассказывал?
А если у вас мотор ватт на 250 на 20,000 оборотов,
вы подключаете аккумулятор и пропеллером по пальцам?
Там "содрало кожу" не ограничится, мясо до кости разрубит.
Проверено.....
Сам виноват.... ;)