Самодельный конвертер сингала PWM в PPM для регуляторов БК двигателей
Ага. Спасибо. Значит наш предел - 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. Поведение регулятора не изменилось. Стартует примерно с пятого раза, если хорошо пошевелить газом. Если завелся, то циклически встает примерно каждые секунду-полторы. Держу верт в руках, так прямо чувствуется момент остановки движка. Вряд ли это регуль, потому что пробовал вчера два разных. Но в любом случае нужно, чтобы кто-то еще испытал для статистики.
С самосборной прошивкой вообще не завелся. Попробую поставить MPLABX.
А у меня как специально куда-то делся шнур от программатора…
Попробую в отладчике понять, в чем может быть проблема.
От предыдущей прошивки импульсы PPM немного отличаются: раньше они имели ширину в диапазоне 1.1…1.9 мс, сейчас - 1…2 мс. Может в этом дело?
Возможно, потому что останока происходит после полного газа, как будто сигнал пропадает, то есть захлестывает за 1.9. Может и не стартует с малого газа, потому что 1, а не 1.1 мс. На середине газа поведение вроде стабильное.
Так что можно попробовать снова прошивку на 6мс, но с диапазоном 1.1…1.9 - может заработает, может в этом дело было.
Пришел ответ от NanoFreak, по поводу БК хвоста
Hi,
we use our Flea-ESC for MCPX Tail
it is the only one which is fast enough
we are making the ESC by our own - it was originally for the 4#3 brushless - we did a lot of brushless 4#3 conversions.
Now we do not produce the Flea-ESC any longer.We are playing aroud to find another solution with reflashing a standard ESC.
Вот все что ответил
То есть, на сколько я понял, они делали свой собственный регулятор, который понимает PWM?
Ошибки нашел. Править буду завтра или послезавтра. Основная ошибка была в расчете длительности импульса и паузы. В итоге, импульс мог достигать ширины 2.2 мс. Новые прошивки удаляю - слишком значительна ошибка. Потом выложу исправленные.
С нетерпением буду ждать. Пока выпилю адаптер, чтобы не перепаивать постоянно, а вставлять и ножки поджимать.
А я себе такой стенд сделал: к сашиному конвертеру (чип на плате) припаял шлейф и разъем. К плате вертолета тоже разъем. И еще один такой же разъем есть у программатора. Понятное дело, что это настольный стенд, зато переключиться с программатора на плату вертолета можно за пару секунд.
Кабель бы только найти… Куда я его дел…
Исправленная прошивка.
files.shelek.su/…/pwm_to_ppm-RXL-2.0.4-hex/
Тестил только в отладчике. За пределы сигнал не уходил.
Цикл - 6 мс. Импульс от 1.1 до 1.9 мс.
Исходники.
files.shelek.su/…/pwm_to_ppm-RXL-2.0.4.zip
Ненужные имена секций удалил.
Попробовал pwm_to_ppm-2.0.4-202.hex. Стартует иногда сразу, иногда с середины газа, причем нестабильно. Если потрясу хвостом, то стартует. В полете ведет себя аналогично прошлому разу. Короткий момент удержания хвоста, примерно секунда-полторы, потом короткий рывок градусов на 10 по часовой (увеличение газа), потом почти полный оборот против часовой. И так циклически. Сейчас еще параметры пошевелю, посмотрю что будет.
А какой у тебя вертолет? Хвост БК или коллекторный?