Самодельный конвертер сингала PWM в PPM для регуляторов БК двигателей
Новая прошивка на 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 по часовой (увеличение газа), потом почти полный оборот против часовой. И так циклически. Сейчас еще параметры пошевелю, посмотрю что будет.
А какой у тебя вертолет? Хвост БК или коллекторный?
Увеличил в параметрах частоту ШИМ на 8 кГц, включил фильтры. Поведение такое же, но теперь хвост держит секунды две и проворачивает против часовой аж на два оборота.
У меня Solo Pro. Все эксперименты ставлю с БК хвостом, потому что это единственное что останавливает от полной переделки на БК.
Частота у Прохи 4 кГц. Параметр частоты, по сути, вообще не нужен - ставь всегда 4. Но частота ШИМ (не настройка - физический сигнал) должна быть кратная 4 кГц, иначе будут разнообразные спецэффекты.
Попробуй в ppm_loop.asm так:
ppm_loop
PPM_IMPULSE 1 ; 2 ms
PPM_DELAY ; 1 ms
PPM_IMPULSE 2 ; 2 ms
PPM_DELAY ; 1 ms
goto ppm_loop
и так
ppm_loop
PPM_IMPULSE 1 ; 2 ms
PPM_DELAY ; 1 ms
PPM_IMPULSE 2 ; 2 ms
PPM_DELAY ; 1 ms
PPM_DELAY ; 1 ms
goto ppm_loop
К данном куске кода строчки можно переставлять в любом порядке, добавлять и уменьшать задержки.