arduino + 550Dc12v мотор
- Войдите на сайт для отправки комментариев
Вс, 22/07/2018 - 00:19
Привет всем, имеется 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, в том то и дело, что регулятор, который я описал выше(Fire Phoenix 320a), предназначен для колекторных моторов такого типа как у меня. Может вы дадите элементарный скетч для использования такого регулятора? Или обьясните какая разница в коде между такими регуляторами? Заранее благодарен.
А если стик вверх-вниз подать от пульта регулятор начинает работать?
Нет, на стик он не реагирует. Бывает раза с 10-20 при включении+стик вверх он определяет мотор звуковым сигналом и начинает крутить произвольно независимо от стика газа. Я подозреваю что скетч от бесколекторного регулятора не подходит ему... Гугл результатов не дал. Регулятор рабочий, стоял на другом устройстве под управлением обычной покупной аппаратуры.
vvadim, в том то и дело, что регулятор, который я описал выше(Fire Phoenix 320a), предназначен для колекторных моторов такого типа как у меня. Может вы дадите элементарный скетч для использования такого регулятора? Или обьясните какая разница в коде между такими регуляторами? Заранее благодарен.
а чего же вы управляете им как бесколлекторным мотором с помощью библиотеки серво.
Посоветуйте какой библиотекой нужно управлять? Я новичёк в этом деле, направьте пожалуйста в нужное русло.
тк никакой инфы по этому регулю нет (наверное жуткий китайский левак) только методом тыка.
подключите мотор, подайте питание, подключите чёрный провод к GND дуни и подайте с неё 5 вольт поочереди на белый и красный.
отпишитесь о результате.
vvadim, в том то и дело, что регулятор, который я описал выше(Fire Phoenix 320a), предназначен для колекторных моторов такого типа как у меня. Может вы дадите элементарный скетч для использования такого регулятора? Или обьясните какая разница в коде между такими регуляторами? Заранее благодарен.
а чего же вы управляете им как бесколлекторным мотором с помощью библиотеки серво.
Мотор может быть любой.
А управление у всех как сервой.
Так традиционно в моделизме.
А проблема в том что для исключения самопроизвольного несанкционированного старта мотора
при подаче питания
нужно произвести какие-то осмысленные и заранее известные действия.
Обычно газ вверх потом газ вниз .
И только тогда он начинает "понимать" сигналы управления.
С любого пульта должно сработать
Есть такая платка, называется servo tester.
У него ширина импульсов шире обычных : от меньше минимальных до больше максимальных.
Подключить и покрутить его от упора и до упора?
Спасибо большое, проблема решена... Видимо китайские джойстики на моём пульте не давали максимальных положений. Подключил серво тестер, покрутил, заработало! Подключил через пульт, включаю питание стик в нейтрале, потом вверх на 3 сек и вниз, пиииииик) вот только при каждом включении необходимо это проделывать, он что не запоминает?
беру свои слова обратно.
сорри.
век живи - век учись...
Может кому будет полезно - на таких регуляторах неитраль и газ нужно выставлять диапазон 1500-2300, в отличии от бесколекторных регуляторов 800-2300. Реверс еще не настраивал.
Спасибо большое, проблема решена... Видимо китайские джойстики на моём пульте не давали максимальных положений. Подключил серво тестер, покрутил, заработало! Подключил через пульт, включаю питание стик в нейтрале, потом вверх на 3 сек и вниз, пиииииик) вот только при каждом включении необходимо это проделывать, он что не запоминает?
Я вам про безопасность зря что-ли рассказывал?
А если у вас мотор ватт на 250 на 20,000 оборотов,
вы подключаете аккумулятор и пропеллером по пальцам?
Там "содрало кожу" не ограничится, мясо до кости разрубит.
Проверено.....
Сам виноват.... ;)