Альтернативная прошивка к FlySky/Turnigy/I-Max/Eurle от Thus

bobt

Порядок публикуемых переводов может показаться сумбурным, наверное так и есть, но хотелось бы опубликовать первым моменты в концепции, которые особенно понравились по сравнению с оригинальной прошивкой.

4.2 Последовательность тестов при включении питания

При включении питания передатчика выполняется целый ряд очень важных тестов…
Вначале загружаются и проверяются EEPROM данные. В случае ошибки выводится предупреждение на экран. EEPROM форматируется целиком.
Если первая проверка завершена, то проверяется достаточно ли свободной памяти для загрузки как минимум еще одной модели. Если тест не прошел, то выдается предупреждение.
Следующая проверка положения ручки газа, находится ли ручка в исходном положении. Если тест не прошел, то выдается предупреждение.
Затем проверяются положения всех переключателей. Если как минимум один из выключателей находится в позиции отличной от «выключен», то выводится специальный экран диагностики, где показаны положения всех переключателей.

Картинка 1

Любой из экранов предупреждений может быть покинут по нажатию кнопки Выход (Exit).

Информация для тех, кто все же решил спаять программатор самостоятельно, но пользуется к примеру лаптопом без параллельного порта и нужен только USB вариант прогрмматора.


Оригинальная ссылка:
www.mikrocontroller.net/articles/AVR-ISP-Stick

Полный файл описания в PDF формате:
mikrocontroller.net/…/Datei:AVR-ISP-Stick.pdf

bobt

4.2.2. Экспоненты

Экспоненциальные функции преобразуют линейные входные значения в выходные с нелинейной характеристикой. Для пилота это означает, что чувствительность ручек управления зависит от рабочей позиции ручки.
Для аппроксимации экспоненциальных функций используется следующий полином:

y = f(x) = x^3 *k + x * (k-1) при 0 < k < 1
y = f(x) = x^k при 1<=k<=3

Картинка 1

Приведенные диаграммы показывают обе кривые, полинома и оригинальную экспоненциальную функцию голубым цветом. Красным цветом показано отклонение от голубой линии. Таким образом вы можете оценить чувствительность ручек управления в различных рабочих позициях.
Полином был применен, потому что для его расчета нет необходимости использовать арифметику с плавающей запятой.

#define RESX 512ul
#define RESK 100ul
uint16_t expou(uint16_t x, uint16_t k)
{
// k*x*x*x + (1-k)*x
return ( (unsigned long)x * x * x / 0x10000 * k /
(RESX*RESX/0x10000)

  • (RESK-k) * x + RESK / 2 ) / RESK;
    }

При расчете экспоненты, в исходном коде на Си использовано только одна операции деления с натуральными 32 битыми числами, что позволяет существенно поднять быстродействие.

boroda_de
bobt:

Особенно это не должно составить труда Юрию, ака boroda_de

Где-бы ещё время взять.
Отлично получается, Владимир. 😃
Примечание: на некоторых ранних передатчиках калибровка не срабатывала. Поправлено начиная с версии r-76

bobt

4.5 Подсветка ЖКИ экрана

На rcline форуме есть предложения как сделать подсветку ЖКИ дисплея. Реализацию можно посмотреть к примеру здесь:
www.rclineforum.de/forum/thread.php?threadid=23904…
При помощи небольшого количества дополнительных конструктивных элементов можно этой подсветкой научится управлять программно, а именно включать и выключать. Как управляющий выход используется свободный порт PB7. В нашем случае, достаточно одного полярного транзистора для того чтобы порт PB7 соединить с инвертором EL-пленки.
Внимание! В зависимости от типа инвертора он должен запитываться от 5В или же другим напряжением. Тем не менее, схема подключения полярного транзистора остается такой же. На фото показано место соединения полярного транзистора с PB7 (желтый провод, синие стрелки).

Картинка 1 и 2

P.S. Хоть Томас и написал, что можно брать инверторы для электро люминисцентной пленки и не на 5В, но я встречал только еще инветоры на 12В, но думаю что 12В запитать в передатчике будет более проблематично.

UserM
bobt:

Реализацию можно посмотреть к примеру здесь:

Сложновато там без регистрации что либо посмотреть.

bobt
UserM:

Сложновато там без регистрации что либо посмотреть.

Выкладываю фото тут.

ipolo

интиресная прошивка, как правильно откалибровать стики ?
на моём TGY9 С1-С4 после дроби 0000 😦

bobt

3.4.7 Калибровка ручек управления

Картинка 1

При помощи этого экрана вы можете откалибровать все четыре аналоговых входных сигнала от ручек управления. Процедура калибровки занимает четыре шага и требует перемещения ручек управления, затем придерживания их в нужном положение и перемещения курсора вниз при неизменном положении ручки управления.

Картинка 2

bobt

3.4.6 Диагностика аналоговых входных сигналов и калибровка измерения напряжения батареи.

Картинка 1

Данный экран отображает значения всех аналоговых входных сигналов: от ручек управления и потенциометров с точностью 10 бит. Значения от рукояток управления показываются в процентах.
Число номер восемь (A8) показывает напряжение батареи и тут же вы можете его откалибровать.

Картинка 2

bobt

3.3.1 Выбор модели 1/7

Картинка 1

Информация о слотах состоит из 3 колонок, первая отображает номер слота, вторая название модели и последняя количество байт занимаемое моделью в памяти. Выбор одного из 16 слотов памяти осуществляется перемещением курсора вниз или вверх. Выбор может быть осуществлен циклически, то есть от слота номер 1 нажатием кнопки ВВЕРХ можно переместиться на слот номер 16 и наоборот. Текущий выбранный слот отмечается миганием номера слота. Выбор слота для редактирования осуществляется нажатием кнопки ВПРАВО. Если вы хотите скопировать или переместить любой из слотов, то нажмите кнопку МЕНЮ коротко, при этом название модели начнет мигать. Если вы нажмете кнопку МЕНЮ повторно в этом положении, то выбранная модель будет сдублирована в следующий свободный слот памяти. Если из данного положения вы нажмете кнопку ВНИЗ или ВВЕРХ, то вы переместите выбранный слот на одну позицию в соответственном направлении.
Заметим, что общая свободная память для сохранения параметров модели отображается в первой линии экрана. Если это значение будет ниже чем 200 байт, тогда вы должны удалить некоторые модели для освобождения памяти иначе не возможно гарантированное сохранение параметров модели.

Картинка 2

bobt

3.3.2 Базовые установки модели 2/7

Картинка 1

В поле ‘Name’ вы можете изменить название модели. Для этого переместите курсор вправо в позицию символа и затем изменяйте его значение.
В поле ‘Proto’ вы можете выбрать один из нескольких протоколов передатчика. В нормальном случае вы выбираете PPM.
В поле ‘Timer’ вы можете пред установить стартовое число и режим работы таймера. Это значение затем будет уменьшаться в зависимости от выбранного режима таймера: OFF/ABS/THR/THR%.
OFF: нет уменьшения, таймер отключен.
ABS: всегда идет отсчет назад.
THR: отсчет идет только в том случае если ручка управления газом находится не в нейтральной позиции.
THR%: подобно режиму THR, но скорость отсчета пропорциональна позиции ручки управления газом. Отсчет тем быстрее, чем больше отклонена ручка газа и наоборот.
Если курсор находится в позиции RM, то слот памяти выбранной модели может быть удален полностью нажатием кнопки МЕНЮ.

Картинка 2

P.S. У меня установлена 76 прошивка и режим работы ручек управления в данном экране не отображается и экран соотвествует показанному в сообщении 2 ! Последняя версия прошивки 105.

bobt

Решил проверить как работает функция задержки в микшере. Так как модель с ретраками отсутствует, то демонсрирую работу на руле направления.
Параметры микшера показаны на фото 1. Хочу отметить, что чем выше значения параметра SPEED (скорость), то тем медленее отрабатывает серво машинка.
С моей точки зрения наверное логичнее было бы назвать этот параметр DELAY. Напишу Томасу.
Работа в коротком ролике на ютубе.

Оператор я, с девайсом оперирует моя жена 😄

sslobodyan
bobt:

4.2.2. Экспоненты
y = f(x) = x^3 *k + x * (k-1) при 0 < k < 1

А в программе y = f(x) = x^3 *k + x * (1-к)

bobt
sslobodyan:

А в программе y = f(x) = x^3 *k + x * (1-к)

В menus.cpp я вижу такой код ( с симмолов // начинаются коменты ):

uint16_t expou(uint16_t x, uint16_t k)
{
// k*x*x*x + (1-k)*x
return ((unsigned long)x*x*x/0x10000*k/(RESXul*RESXul/0x10000) + (RESKul-k)*x+RESKul/2)/RESKul;
}
// expo-funktion:
// ---------------
// kmplot
// f(x,k)=exp(ln(x)*k/10) ;P[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
// f(x,k)=x*x*x*k/10 + x*(1-k/10) ;P[0,1,2,3,4,5,6,7,8,9,10]
// f(x,k)=x*x*k/10 + x*(1-k/10) ;P[0,1,2,3,4,5,6,7,8,9,10]
// f(x,k)=1+(x-1)*(x-1)*(x-1)*k/10 + (x-1)*(1-k/10) ;P[0,1,2,3,4,5,6,7,8,9,10]

bobt

Хочу отметить, что чем выше значения параметра SPEED (скорость), то тем медленее отрабатывает серво машинка. С моей точки зрения наверное логичнее было бы назвать этот параметр DELAY. Напишу Томасу.

Томас быстро ответил В новой версии термин SPEED для задержки заменен на FADE, что наверное более логично, чем DELAY.

bobt
boroda_de:

Кстати, новая версия уже вышла 😋

В новой версии (116):

* Исправлены проблемы : 7,13,19,21,22,24 ( номера согласно раздела ISSUES code.google.com/p/th9x/issues/list )
* fsck with repair ( встроена функция проверки разметки EEPROM с возможностью исправления ошибок. )
* convert eeprom-format for some older revisions r46<= oldrev <r84 Изменился формат сохранения параметров моделей и все записи между 46 и 84 версиями будут сконвертированны, но я бы на всякий случай записал все микшеры на бумажку 😃
* DR with expo and weight Двойные расходы с экспонентами и весами. Что поменялось я не понял, потому что это было и в 76 версии. Только что веса для двойных расходов стали по умолчанию 100%
* Limits with offset -63% to +63% Пределы со смещениями от -63% до +63%
* increased mixers from 20 to 25 Увеличено количество микшеров до 25

  • в версии 118 заменен параметр SPEED на FADE и изменен расчет замедления.
boroda_de
bobt:

я бы на всякий случай записал все микшеры на бумажку

просто сливаю eeprom вместе с флэшем, чтоб потом всегда можно было перезалить 😃

bobt

Параметр FADE ( колонка один ). Начиная с версии 118.

increased speed from 5/10ms to 18/10ms=1800/sec = 0.6s full sweep

Логарифмическая шкала:
1: rate=1800 i/s full= 0.6s 0.0
2: rate=1300 i/s full= 0.8s 1.4
3: rate= 900 i/s full= 1.1s 1.4
4: rate= 600 i/s full= 1.7s 1.5
5: rate= 400 i/s full= 2.6s 1.5
6: rate= 300 i/s full= 3.4s 1.3
7: rate= 200 i/s full= 5.1s 1.5
8: rate= 150 i/s full= 6.8s 1.3
9: rate= 100 i/s full= 10.2s 1.5
10: rate= 66 i/s full= 15.4s 1.5
11: rate= 50 i/s full= 20.5s 1.3
12: rate= 33 i/s full= 30.7s 1.5
13: rate= 25 i/s full= 41.0s 1.3
14: rate= 16 i/s full= 61.4s 1.5
15: rate= 11 i/s full= 92.2s 1.5

Stepan_M

Залил прошивку на пробу - версия r116, калибровка нормально прошла, миксеры пока не крутил.

Сразу пожелание если можете написать разработчику - звук аларма таймера сделать громче - он так тихо тикает что если рядом в поле будет работать двс - слышно вообще не будет.