Требуется откалибровать ESC без потенциометра и вообще других внешних устройств, нужно это сделать чисто через код, потому что в будущем управление двигателем должен быть автоматическим (по показаниям датчиков).
Понятно. Сделаем. Приходите 29-го.
Да, я действительно забыла написать сам вопрос)
Как калибровать с помощью потенциометра ясно, но как это сделать без внешних устройств? Или можно откалибровать с помощью потенциометра, а потом его просто отключить?
Насколько я помню - через библиотеку servo.h изгалялись люди. Сначала на ноль, потом на макс и затем на рабочую.
Типа такого: https://github.com/maxpowel/ESC/blob/master/examples/ESC_Basic/ESC_Basic.ino
Зачем что-то калибровать, если по датчикам управление?
Только там подключается библиотека Esc.h которой нет в стандартных библиотеках, не подскажите где можно ее скачать?
Ну потому что я не знаю какой будет min Pwm и max Pwm чтобы преобразовывать диапазон значений с датчиков в нужный диапазон Шим сигнала который будет подаваться на регулятор
Можно ли вообще сделать так, что подключить потенциометр, откалибровать esc, а потом просто отключить этот потенциометр?
А при чем здесь диапазон значений датчиков? Регулировка по датчику подразумевает поддержание заданного показателя.
Я может не совсем понимаю вас, но ведь если у меня значения акселерометра (0, 1023), а значения шим сигнала находятся в диапазоне (800, 2300), то как я буду передавать значения с датчика сразу в шим сигнал?) Просто идея такая: получаем значения с датчика, например, 500, и ПК должен подать то же самое значение, но только уже в диапазоне шим сигнала, на esc
И каким будет результат этой операции, тем более с акселерометром?
Бесколлекторный мотор должен начать вращаться с нужной угловой скоростью ( в зависимости от показания датчика)
Я вообще не особо понимаю, что сейчас надо, но ESC-контроллер разок тыркал.
Перед его использованием как раз и нужно были манипуляции определённого плана производить. В них библиотека Servo замешана. Исходников под рукой нет, было это давно. Посему - могу только направление поиска указать.
Если тупо, то map(…)
И нужна угловая скорость просто по совпадению оказывается пропорциональной показанию одной из осей акселерометра?
Это делается для настройки джойстиков пульта
Тебе одному виднее, что у неизвестного человека на столе лежит - пульты или просто кучка деталей.
Да, про map знаю… просто когда отправляю на регулятор шим сигнал со значение 1550 мотор начинает вращаться со довольно маленькой скоростью (10% от возможной мощности), когда выставляю 1700 начинается вращаться гораздо быстрее (60-70% от возможной мощности) и вот хотелось бы понять как можно это все откалибровать
А, ну вот, в почте нашёл от того товарища его код, с которым он ESC пускал.
Большего на данный момент не имею. Вроде как сразу работал этот скетч.
// подключение библиотеки
#include <Servo.h>
// создание объекта
Servo motor;
//Пин подключения мотора
int mot_pin = 9;
//Максимальное значение ШИМ 2.3 мс
int max_pwm = 2300;
//Минимальное значени ШИМ 0.8 мс
int min_pwm = 800;
void setup()
{
// запуск последовательного порта
Serial.begin(9600);
// инициализация мотора
motor.attach(mot_pin);
// калибровка
delay(1000);
motor.writeMicroseconds(max_pwm);
delay(2000);
motor.writeMicroseconds(min_pwm);
delay(4000);
}
лучше от 1000 до 2025, тогда добавлением 1000 к значению с АЦП получим нужный ШИМ, но, это совершенно не гарантирует пропорциональность с оборотами
Поправил значения, далее пишем скетч с приращением значения на 25 единиц и измерением оборотов и выводом в сериал, далее загоняем в Эксел, строим функцию и потом взять обратную от этой функции…в скетче получаем значение ацп, прибавляем 1000, обрабатываем по рассчитанному алгоритму и отправляем на ESC