Activity
Конвертер ШИМ 8 кГц в 2 кГц для подключения регуля от Валкеры.
Прошивки тут: files.shelek.su/limited/…/pwm8_to_pwm2/
Крутить там нечего и потому исходников не выкладываю.
Исключительно одноканальный. Ни два канала, ни совместить с конвертером ШИМ в PPM не получится. Если хочется что-то более качественное, нужно переходить с PIC10 на более серьезный микроконтроллер.
На вход можно подать не только 8 кГц, но и 4 кГц.
Точность определения скважности ШИМ порядка 4-5%.
Собирать дороже выйдет 😃 Только 6 ключей в лучшем случае по 1баксу + мега + другие детали + материаты для изготовления платы
И добавьте сюда труд программистов и тестировщиков…
Никак. Можно только изменить настройки.
И настройки хранятся не в пульте, а в плате вертолета.
Удивительно, но факт: цикл в 2 мс (но только один канал) работает!
Я так понял, что Саша использовал регуль с хвоста БК-Валкеры (модель D100 или D120 - не помню) .
Как он закончит эксперименты, выложу измененную прошивку.
Надеюсь. Но сомневаюсь.
Смотри, я вот чего сделал
PPM_IMPULSE 1 ; 1 ms
PPM_IMPULSE 2 ; 1 ms
;PPM_DELAY ; 1 ms
;PPM_DELAY ; 1 ms
goto ppm_loop
PPM_IMPULSE выполняется за 2 мс, а PPM_DELAY - за 1. Т.е. у тебя осталось в цикле только два PPM_IMPULSE? Значит цикл 4 мс.
После точки с запятой записан комментарий - он никак на программу не влияет.
С новой прошивкой должно быть стабильнее. Но частота ШИМ обязательно должна быть 4 или 8 кГц и быть достаточно точной (отклонение не более 1-2%).
Файл user_settings.inc - там CFG_PWM1_INVERSE и CFG_PWM1_INVERSE.
Инверсию PPM не предусмотрел. В прошлой прошивке была, но оказалась невостребованной.
Чтобы сделать ее в файле ppm_loop.asm найди вот это:
CLR_PPM macro p_ch
bcf IO_PORT, PPM#v(p_ch)_BIT
endm
SET_PPM macro p_ch
bsf IO_PORT, PPM#v(p_ch)_BIT
endm
Сделай так:
CLR_PPM macro p_ch
bsf IO_PORT, PPM#v(p_ch)_BIT
endm
SET_PPM macro p_ch
bcf IO_PORT, PPM#v(p_ch)_BIT
endm
Это повлияет на оба канала!
Или так, чтобы инверсия была индивидуальной:
Для ppm_loop.asm:
CLR_PPM macro p_ch
if CFG_PPM#v(p_ch)_INVERSE == 0
bcf IO_PORT, PPM#v(p_ch)_BIT
else
bsf IO_PORT, PPM#v(p_ch)_BIT
endif
endm
SET_PPM macro p_ch
if CFG_PPM#v(p_ch)_INVERSE == 0
bsf IO_PORT, PPM#v(p_ch)_BIT
else
bcf IO_PORT, PPM#v(p_ch)_BIT
endif
endm
Для user_settings.inc:
; Output PPM inversion.
; Инверсия PPM: 0 | 1
constant CFG_PPM1_INVERSE = 0
constant CFG_PPM2_INVERSE = 0
Последнее тут: rcopen.com/forum/f87/topic219994/299
С тех пор ничего не менялось.
Еще один китайский ответ? www.tehnosales.ru/product_info.php?products_id=432… , может было, просто копался в нете и рекламу увидел.
Гладкая парящих производительности.
Хороший арабский язык (с)
Проблема была в нехватке диапазона тяги ХР - ограничивался быстро. Попросту не тот винт на нем стоял - не обеспечивал должной тяги. Ведь штатные коллекторники существенно оборотистее.
Вот - 7 мс, прямая, под 202.
:020000040000FA
:1000000025000504810C0200090C060066000A0C9C
:100010002800060C2100010243070B0AE802090A26
:02002000530A81
:0400220000080008CA
:0A00260068000A0C29000606A80273
:100030000606A8020606A8020606A8020000060692
:10004000A8020606A80200000606A8020606A802E4
:100050000606A8020606A802E902160A08022A00F5
:1000600003046A03000868000A0C29006606A80257
:100070006606A8026606A8026606A80200006606D2
:10008000A8026606A80200006606A8026606A80284
:100090006606A8026606A802E902360A08022B00D4
:1000A00003046B0300084605060C21001309FF0C2E
:1000B00028003D0C2900040C8A0003076C0A3D0C43
:1000C0002800FF0C2900C20C8A0003066C0A4A02B1
:1000D0002800C90C8A002900010243076C0AEF0CB2
:1000E000210001024307710A0802210001024307AF
:1000F000760A460409022100010243077C0AE80C43
:10010000210001024307810A2605060C210033095C
:10011000FF0C28003D0C2900040C8B0003079D0AEE
:100120003D0C2800FF0C2900C20C8B0003069D0A21
:100130004B022800C90C8B002900010243079D0ACD
:10014000EF0C210001024307A20A0802210001026C
:100150004307A70A26040902210001024307AD0A4A
:10016000E80C210001024307B20A070C210001023A
:100170004307B70A070C210001024307BC0A070C1A
:0A018000210001024307C10A530ADF
:080400000000020000000400EE
:021FFE00EB0FE7
:00000001FF
Какой регуль? Могу собрать на 7 мс, а не на 6.
Мужики, из этого чипа чудес не выжмешь. Я тупо считываю состояние входной ноги и подсчитываю число единиц за период в 250 мс (соотв. одному периоду частоты 4 кГц). Для двухканальной схемы на этом чипе это единственный вариант. Другой вариант замера ШИМ - измерить время между фронтами сигнала. Т.к. сигнала может вообще не быть (0% скважности), то данный метод применить к двухканальной конфигурации затруднительно. Подумаю, конечно, но не обещаю.
А если отсоединить хвост от рамы? Чтобы не было связи с гироскопом. Как тогда себя ведет двигатель?
Спасибо, Юрий, проедали мы как следует 😉
Как видите, с ОР - все путем, а с ХР не все. НЕт тестовых данных, что последняя прошивка работает нормально.
У меня на столе работает ровно. У Сергея - плавает. Нужно еще несколько тестеров.
Что касается тестирования на mCPX - вопрос к Саше (Сушке).
За вес спасибо Саше. Я произвожу только невесомые байты.
В первом режиме кнопки T4 играют роль триммера, состояние которого будет сохранено в памяти вертолета. В том же режиме кнопки T3 задают чувствительность гироскопа (я это понимаю как степень обратной связи через гироскоп в цепи “управление->ХР” - насколько вертолет будет сопротивляться разворачивающему моменту вокруг оси ОР и как быстро он будет поворачивать). Вот и все настройки для ХР.
Поведение светодиодов вертолета зависит от прошивки и версии платы. У меня были две разные и в плане восстановления связи они сильно отличались. Т.ч. в инструкцию такое вносить не стоит. Потом, первый режим включается уже после установления связи.
Сергей, если вы нашли в описании неточность, напишите, пожалуйста, о них мне в личку - исправлю.
Кабель не нашел - пришлось корячиться.
В общем, прошил 200i.
ESC HK 3A. Движок AP-03. Снимаю сигнал с ключа (резистор 2 кОм).
Работает на обеих источниках - и ОР, и ХР. Тестировал только первый канал - программно они идентичны.
Понятно: ищу кабель и проверю на своем регуле.
У хвостового двигателя специфичные условия работы. Я там намерял скважность ШИМ от 0 до 100%, в то время, как на ОР - от 40 до 77%. Но видео показывает, что обороты нестабильные даже на столе без движения.
Вот если собирать из исходников и поставить CFG_PWM_FREQUENCY = 8, то на 4 кГц ШИМ точно будут проблемы. Возможно даже похожие.
Насчет девиации в 4% я ошибся - 1.6% 😃
Плата Прошки стартует всегда с нулевым газом. Сперва идет соединение с пультом, потом на пульте ручку надо перевести в ноль и только тогда можно дать газ. Все это время конвертер выдает 1.1 мс. Т.ч. такая проблема тут исключена. Я полагаю тут проблема с детекцией, но не уверен. Мне бы самому на железе потестить. В симуляторе микроконтроллера все путем, но это рафинированные условия.
Пробую в симуляторе задать не точную частоту, а чуть меньшую или чуть большую - ±60 Гц. Тестирую на скважности 50%. Есть девиация на уровне ±4%, но не более.
Существенной девиации (12%) удалось добиться при уходе частоты ШИМ аж на 400 Гц - 3600 вместо 4000 Гц. Сомневаюсь, что у нас такие некачественные чипы. В даташите указана точность встроенного генератора на уровне 1-2%.
Одно уже хорошо - регуль сигнал не теряет.
Какие были настройки? Моя сборка или своя?
А в инструкции к регулю ничего не сказано про калибровку? HK, например, калибруется входом в режим программирования.
Однако…
А ведь тогда надежда, что прошивка рабочая, увеличивается! 😃
Частота у Прохи 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
К данном куске кода строчки можно переставлять в любом порядке, добавлять и уменьшать задержки.
А какой у тебя вертолет? Хвост БК или коллекторный?
Исправленная прошивка.
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
Ненужные имена секций удалил.
А я себе такой стенд сделал: к сашиному конвертеру (чип на плате) припаял шлейф и разъем. К плате вертолета тоже разъем. И еще один такой же разъем есть у программатора. Понятное дело, что это настольный стенд, зато переключиться с программатора на плату вертолета можно за пару секунд.
Кабель бы только найти… Куда я его дел…
Ошибки нашел. Править буду завтра или послезавтра. Основная ошибка была в расчете длительности импульса и паузы. В итоге, импульс мог достигать ширины 2.2 мс. Новые прошивки удаляю - слишком значительна ошибка. Потом выложу исправленные.
А у меня как специально куда-то делся шнур от программатора…
Попробую в отладчике понять, в чем может быть проблема.
От предыдущей прошивки импульсы PPM немного отличаются: раньше они имели ширину в диапазоне 1.1…1.9 мс, сейчас - 1…2 мс. Может в этом дело?
Настройки прошивки я перенес в файл “user_settings.inc”.
Разделив программу на модули мне стало намного удобнее писать. А вот собираться на иных системах будет непонятно как.
У меня 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.
А делитель меньше сделать там нельзя?
HK не зря дешевле. Могут погореть. Китайцы компоненты на пределе используют.
Новая прошивка на 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.
Да, там была задержка в среднем на пол длины цикла, а тут обработка идет в начале импульса. Что характерно, качество определения скважности ШИМ от этого не пострадало - так же точность порядка 2-4%.
У меня там несколько экспериментальных нововведений - надо разобраться, какие не нужны, а какие полезны.
Дописал фильтр, который ускоряет реакцию на изменение входного сигнала.
Формула примерно такая: Y(n) = X(n) + f(X(n) - X(n-1))
Смысл фильтра: я считаю, что регуль тоже вносит задержку, т.к. ему нужно сперва замерить PPM, наверняка у него и фильтр сигнала есть, а потом инерция движка - (думаю, что у коллекторника она меньше, т.к. диаметр ротора меньше).
Ага. Спасибо. Значит наш предел - 7 мс. Расширю - это легко. Вечером будут прошивки для 202.
Попробую тоже добраться до железа. У меня регуль HK 3A и движок AP-03. На прошивку 1.5.1-7 реагировал нормально.
Выложил и для 202.
files.shelek.su/…/pwm-to-ppm-RXL-2.0.2-hex/
Исходники пока не выкладываю - сперва порядок там наведу 😃
Нового там, если с точки зрения программы, 90%, а если с утилитарной точки зрения, то меньший цикл PPM (6 мс и 4 мс), меньшая задержка между входным и выходным сигналами и по прежнему это для двух каналов. Сейчас работаю над фильтром для дальнейшего сокращения запаздывания. В перспективе еще - раздельная длительность цикла для каналов.
В тестах мне интересно:
- Заработает ли вообще на железе.
- Как отнесутся регули к 6 мс циклу, а тем более к 4 мс.
- Будет ли отличие от предыдущей версии (1.5.1).
Есть новые прошивки. Может кто-нибудь потестить их?
files.shelek.su/…/pwm-to-ppm-RXL-2.0.2-hex/
Пока собрал только для pic10f200. Если нужны другие - скажите. Прошивки пока в стадии доработки. В отладчике работает.
А шасси у них хорошее или такое же ломкое?