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 оборотов,
вы подключаете аккумулятор и пропеллером по пальцам?
Там "содрало кожу" не ограничится, мясо до кости разрубит.
Проверено.....
Сам виноват.... ;)