Самодельный конвертер сингала PWM в PPM для регуляторов БК двигателей
Тогда жду и под 202-е, потому что 200-х нету.
Ром, скомпиль, плиз, для 202-го, мне как раз приехали пропеллеры на хвост, буду тестить.
Babay опередил меня
Выложил и для 202.
files.shelek.su/…/pwm-to-ppm-RXL-2.0.2-hex/
Попробовал. Регуль TGY 5A. С 4мс не завелось. С 6мс заводится через раз и на среднем газе. Хвост с 6мс вроде держит, но из-за большой мощности движка проворачивает вокруг. Лопнул флайбар. Сейчас наколхожу и продолжу.
Попробую тоже добраться до железа. У меня регуль HK 3A и движок AP-03. На прошивку 1.5.1-7 реагировал нормально.
На 7мс у меня тоже нормально реагирует. А с 6мс как то странно, то заведется, то нет.
Полетал еще. Хвост на 6мс не дрожит. Но не все прекрасно. Из за нестабильного хавания сигнала на 6мс регулятор иногда дурит и останавливает двигатель на некоторое время. Из за этого хвост прокручивает против часовой стрелки почти полный оборот. Периодичность примерно раз в секунду. Если по этому новому алгоритму еще на 7мс попробовать сделать, то думаю получится хвост сделать. Разломал очередной хвостовой ротор в труху. Ничего, у меня еще 5 есть:)
Попробовал еще и с TGY 3A с 6мс. То же заводится через раз. При увеличении газа просто переинициализируется.
Ага. Спасибо. Значит наш предел - 7 мс. Расширю - это легко. Вечером будут прошивки для 202.
Можно и на 10мс попробовать сделать. Потому что видимо в предыдущей прошивке узким местом было не частота работы с регулятором, а обработка входного PWM. А в этой новой прошивке с этим вроде получше.
Да, там была задержка в среднем на пол длины цикла, а тут обработка идет в начале импульса. Что характерно, качество определения скважности ШИМ от этого не пострадало - так же точность порядка 2-4%.
У меня там несколько экспериментальных нововведений - надо разобраться, какие не нужны, а какие полезны.
Дописал фильтр, который ускоряет реакцию на изменение входного сигнала.
Формула примерно такая: Y(n) = X(n) + f(X(n) - X(n-1))
Смысл фильтра: я считаю, что регуль тоже вносит задержку, т.к. ему нужно сперва замерить PPM, наверняка у него и фильтр сигнала есть, а потом инерция движка - (думаю, что у коллекторника она меньше, т.к. диаметр ротора меньше).
а потом инерция движка - (думаю, что у коллекторника она меньше, т.к. диаметр ротора меньше).
Но у бесколлекторника приемистость на много выше, тоесть он резче будет проворачивать свой тяжелый ротор.
У коллекторника приемистость на порядок выше. Не зря же такого рода движки стали делать coreless, чтобы ротор сделать максимально легким, чтобы инерция ротора была как можно меньше. Так что тут спорный момент, кто резче ротор провернет. Ну да эксперименты покажут, будет толк от фильтра или нет.
ЕПТЬ!!! Не заглядывал я сюда О_о А тут во всю тестится прошивка!
Вечером присоединюсь!
Вот поставили БК на МСПИкс
Хвостовой пропеллер от Блейд120sr
Вот как он летает:
www.nanoheli.net/…/mcpx-full-brushless-19-05-11/
www.nanoheli.net/…/mcpx-full-brushless-06-06-11/
nanoheli.net/…/mcpx-full-brushless-tdr-14000-bl-11…
nanoheli.net/…/mcpx-full-brushless-tdr-14000-bl-10…
Автор пишет что хвост мега стабильный. А моменты от ОР у “Чертенка” намного выше чем у прохи, при резком перекладывании шага.
Я ему написал письмо с парой вопросов, жду ответа.
Во всяком случае нужно пробовать на хвост лопасти от 120ки.
Новая прошивка на 7 мс.
files.shelek.su/…/pwm_to_ppm-RXL-2.0.3-hex/
Исходник.
files.shelek.su/…/pwm_to_ppm-RXL-2.0.3.zip
Процентов на 95 готово. Если есть желающие экспериментировать - попробуйте включать там фильтры (на каждый канал индивидуально).
Есть еще одна возможность для оптимизации - варьировать положение импульсов каналов относительно друг друга. В выложенных прошивках и исходнике - вариант 1.
Вариант 1.
Вариант 2.
Вариант 3.
Что-то не могу собрать. Вот ошибка:
ppm_loop.asm:32:Error [115] Duplicate label or redefining symbol that cannot be redefined. (ppm_loop)
Собираю с помощью gputils. И еще пара варнингов вышла:
chip_select.inc:11:Warning [215] Processor superseded by command line.
chip_select.inc:13:Warning [231] found lower case match for include filename
Первый-то варнинг понятно, а второй - непонятно откуда, ну да ладно.
Попробую пока скомпиленную прошивку…
У меня MPLAB 8.63 и инструментарий:
Language tool versions: MPASMWIN.exe v5.39, mplink.exe v4.38, mplib.exe v4.38
Какие версии MPLAB и MPASM?
Собираю с помощью gputils. И еще пара варнингов вышла:
Тогда понятно. Я использовал возможности именно MPASM.
ppm_loop, в первом случае - имя секции, во втором - метка. Видимо у тебя очень старый компилятор или вообще другой системы. Имя секции можно безболезненно задать другое или вообще убрать.
; ********************** Code **********************
ppm_loop code
ppm_loop
Сделай так:
; ********************** Code **********************
code
ppm_loop
Второе предупреждение говорит, что у тебя имя заголовочного файла не совпадает с запрошенным при учете регистра.
Интересно, будет ли у тебя компилироваться scan_pwm.asm… Там макросы и, опять же, заточка под MPASM.
Да, система другая… Под нее есть только gputils от 2009 года с поддержкой MPLAB до версии 8.20. Попробую сейчас MPLABX поставить, мож в нем соберу.
Настройки прошивки я перенес в файл “user_settings.inc”.
Разделив программу на модули мне стало намного удобнее писать. А вот собираться на иных системах будет непонятно как.
Гы, скомпилилось, сейчас испытаю. Спасибо за подсказку.
Гы, скомпилилось, сейчас испытаю. Спасибо за подсказку.
Очень ждем результатов 😃 Полез за паяльником, буду тоже пробовать
Ну вот, не успел испытать - оборвалась одна жила у движка когда все собирал. Надо перематывать. Перехватывайте инициативу. А я пока другой двигатель поставлю, который многострадальный hexTronik, надо под него крепеж новый выпилить по быстрому.
Испытал. Прошивка pwm_to_ppm-2.0.3-202.hex. Поведение регулятора не изменилось. Стартует примерно с пятого раза, если хорошо пошевелить газом. Если завелся, то циклически встает примерно каждые секунду-полторы. Держу верт в руках, так прямо чувствуется момент остановки движка. Вряд ли это регуль, потому что пробовал вчера два разных. Но в любом случае нужно, чтобы кто-то еще испытал для статистики.