Activity
Александр, здесь документ о которо я писал в личном сообщении.
Возникли вопросы. Сколько каналов должно быть? (по моим расчетам 8 - выше крыши) Какие типы моделей? (думаю самолет, планер с одной, двумя и четырьмямашинками на крыло и наверное верт, делется по типу автомата перекоса) Сколько режимов полета? И какие они для каждого типа моделей? Что в них должно настраиваться?
Решил ответить, хоть и с задержкой.
Может, стоит потратить время и довести то, что есть до логического завершения?
Оформить подробное описание и инструкцию по программированию. Чтобы самоделкин сразу понял что сможет, а что не сможет запрограммировать в этом передатчике.
Дать самоделкиным, у которых нет готовых джойстиков и нет внутрисхемного отладчика, рекомендации по настройке джойстиков. Т.е. рекомендации для тех, кто не может увидеть результаты АЦП на экране ПК. А если твоих знаний хватает – создай ПК интерфейс, позволяющий увидить. Это будут ОГРОМНЫЙ шаг вперед.
Смотрим на формулы
read_adc(3);
adc[1]=(ADCW-814); //читаем канал АЦП, вычитаем ненужный промежуток
read_adc(2);
adc[2]=(ADCW-832); //читаем канал АЦП, вычитаем ненужный промежуток
read_adc(1);
adc[3]=(ADCW-810); //читаем канал АЦП, вычитаем ненужный промежуток
read_adc(0);
adc[4]=(ADCW-818); //читаем канал АЦП, вычитаем ненужный промежуток
read_adc(4);
adc[6]=(ADCW-810);
и видим разные цифры: 814,832,810,818.
Может, стоит подробно описать процедуру выбора этих чисел? А заодно сказать, что делать тому, кто не обладает достаточными знаниями для переделки программы под себя?
В описании стоит уделить достойное внимание терминам и определениям. Например, что такое реверс. Все понимают, что это изменение направления вращения серво, но программно это м.б. выполнено по разному. Например, я для себя принял, что реверес осуществляется за счет реверса сигнала, полученного с канального потенциометра или тумблера. Или – что такое EPA. Я всегда считал, что ЕРА – это назначение конечных точек серво для канала. Т.е. это ИТОГОВОЕ масштабирование после всех смесителей.
Прибавление триммера – это тоже смеситель!
Хотя иногда ЕРА применяется для перецентрирования и реверса серво.
Смотрим на формулы
if (adc[1]>=0) adc[1]= adc[1]*epa1[1]/19*rev[1];
else adc[1]= adc[1]*epa2[1]/21*rev[1];
if (adc[2]>=0) adc[2]= adc[2]*epa1[2]/19*rev[2];
else adc[2]= adc[2]*epa2[2]/21*rev[2];
if (mix[2]==-1) {
ch[2]=2250+(adc[1]+adc[2])/2+trim[2]*10;
ch[1]=2250+(adc[1]-adc[2])/2+trim[1]*10;}
и видим, что триммеры прибавляются после ЕРА.
Число 2250 в этих формулах – желательно в описании указать: перемещение ручки канала NN от упора до упора при ЕРА=100% соответствует изменению длительности канального импульса от и до. То же для триммера.
Максимальная и минимальная длительности канального импульса не ограничиваются программно. Это опасно. Можно дойти до упора. (Футаба открытым текстом рекомендует настройку "от упора’, но это не образец для повторения. )
Обязательно нужна блок-схема последовательности вычислений.
Триммер масштабируется вместе с ручкой. Последствия и возможные решения проблемы стоит отметить в описании.
Смесители.
Для канала с триммером диапазон исходных чисел – это сумма диапазонов для ручки, триммера и нуля триммера (если нули триммера сохраняются). Для канала без триммера все проще. Если эти два канала смешиваются, возникает проблема несовпадения диапазонов исходных чисел. Пока нет сложных смесителей с пересчетными таблицами, эта проблема малозаметна, но она никуда не исчезнет. Тут есть над чем подумать.
Переписка по индикатору только упрочила мое мнение: для самодельного передатчика нужен вариант схемы и программы для стандартного индикатора, например 128х64 с контроллером ks0108. Да, это дороже. Но всем будет понятно и не нужно ходить по барыгам.
Зачем все это нужно? Чтобы пилот был пользователем передатчика, а не исследователем черного ящика. А если не сделать того, что написано выше? Тогда возможно дежа вю. И, через некоторое время, на вопрос “ Почему пищит?” последует ответ: “Нажмите две кнопки, не помню какие”. Увы, память не совершенна. Удачи!
Хотя топовый ПИК 30Ф6014 с его 80 выводами и 12 бит АЦП и 144 Кб ПЗУ и 8 Кб ОЗУ привлекает своей мощностью/ресурсами.
80 ножек с шагом 0,5 мм - самому плату не сделать и процессор не впаять. Придется заказывать…
Кроме того, для линейной интерполяции делить можно только один раз - при настройке/изменении точек на кривой - а при ежепосылочных вычислениях умножать полученный при делении коэфф на расстояние до ближайшей точки - ну и прибавлять/вычитать координаты точки соответственно - ежепосылочного деления согласен с Вад64 вполне можно избегать.
Коэффициент, он же тангенс угла, постоянен только для соседних точек. А расчет максимально возможного времени вычислений надо делать на самый худший случай. Время, которое я указал, относится не непосредственно к интерполяции, а ко всему расчету с использованием таблицы
(включая предварительное ограничение исходного числа допустимым пределом). Для свободнопрограммируемого смесителя вычисления производятся по формуле AXreg=AXreg*{A+(B-A)*REMEMB(AXreg/128)/128}/100.( А,В - точки таблицы. AXreg - исходное 16-ти разрядное число)
Для справки - у меня вычисление одного канала занимает не более 70 мксек. Правда, у меня достаточно простой микшер у каждого канала - нормализация АЦП, наложение триммера, интерполяция по 7-миточечной таблице и укладка в расходы.
Нормализованное значение промежуточных переменных лучше выбрать повыше (у меня 32768), чтобы не накапливать ошибки вычислений.
7 точек - это 6 отрезков. 32768 на 6 не делится. Не понимаю, чем обоснован выбор числа точек.
… я не очень представляю, откуда у Вас такие объемы. У меня вся модель с 4мя полетными режимами - 540 байт.
В прилагаемом архиве моя структура переменных. Её можно условно разделить на 3 части.
1 часть. Заголовок, параметры каналов, нули триммеров, таблицы CURVE.
2 часть. Настройки органов управления передатчика (тумблеры, кнопки, потенциометры).
3 часть. Настройки смесителей.
120 из 512 байт – резерв.
Некоторые комментарии. Очень популярно назначать раздельные масштабы D/R и EXPO для разных направлений отклонения ручек. У меня этого нет. Таблицы предназначены и для CURVE и для смесителей.
Видно, что таблицы и смесители занимают почти половину памяти.
Смесители я взял от Микростар и добавил возможность подстройки внешними триммерами. Настоящие смесители Микростар не являются в полном смысле свободнопрограммируемыми. Резервные переменные позволят устранить этот недостаток.
Мое обоснование размера таблицы CURVE. Минимальное число точек – 3. Дальнейшее увеличение числа точек логично производить делением каждого отрезка таблицы пополам. Получим таблицы из 5-ти и 9-ти точек. Увеличение числа точек свыше 9 представляется не целесообразным. В качестве нормализованного значения канальных переменных удобно использовать число 1024. Число отрезков в предлагаемых таблицах является делителем 1024, что позволяет сократить длительность операции деления при интерполяции внутри таблицы.
Для информации. У меня продолжительность одной интерполяции 500 – 600 машинных циклов ( зависит от знака исходных данных). Время вычисления одного свободнопрограммируемого смесителя с трансляционной таблицей и косвенными масштабами в обоих направлениях – 1500 машинных циклов. А максимально возможная длительность всех вычислений – 33200 машинных цикла или16,6 мсек. Многовато! Буду что-то делать.
Вот выкладываю окончательный вариант кода с библиотекой и фотки:
Еще схему выкладываю.
Женя, есть несколько вопросов.
- Как обеспечивается высший приоритет прерываний таймера, формирующего модулирующий сигнал?
- Аналоговые триммеры суммируются на входе АЦП. Недостаток очевиден – ручка и триммер масштабируются одновременно. Так будет всегда, или только до перехода на другой процессор?
- В смесителях нет масштабных коэффициентов. Почему?
Как одно из возможных направлений предлагаю разработать унифицированую модель данных. Идея (совместно с Pavel_Su) такая: есть некая структура данных, описывающая модель (тип модели, каналы, реверсы, расходы, микширование и т.д.). Этот блок данных можно скидывать из передатчика в РС, наладонник или другой передатчик по доступным каналам связи (Rs232, IrDA и т.п). Поскольку структура унифицирована, то на любой платформе можно будет редактировать настройки и/или “натравливать” на эту структуру микшер, к-рый будет в реальном времени по этим данным формировать РРМ или РСМ или еще что-то. Если это направление кого-то интересует и есть желающие принять участие в обсуждении и разработке, я выложу свой текущий вариант структуры.
Структуру изучил. Предлагаю сначала обсудить концепцию.
Унифицированная структура переменных должна обеспечить пользователям свободный обмен “МОДЕЛЯМИ“.
За унификацию придется платить отказом от каких-то своих взглядов на то, что в черном ящике, называемом передатчик. Унифицированная структура переменных не означает унифицированной конструкции передатчика и унифицированного ПО.
Мне известны две концепции того, что такое “МОДЕЛЬ“.
Вариант Микростар.
Каждый полетный режим оформляется как отдельная “МОДЕЛЬ“.
Это позволяет экономить внешнюю память и оперативную память процессора. При этом переключение режимов сопровождается считыванием новых данных из внешней в оперативную память ВО ВРЕМЯ ПОЛЕТА. (Хотя, если позволяет объем оперативной памяти, можно изменить логику и все прочитать при загрузке “МОДЕЛИ“.) При такой концепции количество полетных режимов может равняться количеству “МОДЕЛЕЙ“ в микросхеме памяти. На данном этапе неизвестна структура переменных, но мой скромный опыт показывает, что 256 байт для одного полетного режима мало. Опыт Микростар показал – резервы должны быть значительными. Приимем за основу для одного полетного режима 512 байт.
Вариант “Классический“.
“МОДЕЛЬ“ включает данные для всех полетных режимов. Возьмем (для примера) за основу FC28 и предположим, что максимальное число полетных режимов – 5. (Я и в двух постоянно путаюсь!) Тогда “МОДЕЛЬ“ будет занимать 5*512=2560 байт.
Эти 2560 байт будут копироваться из внешней в оперативную память при выборе “МОДЕЛИ“ и не могут использоваться для текущих вычислений. Сколько еще надо оперативной памяти? Минимум 256 байт. С запасом, минимальную величину которого еще надо обосновать, - 512 байт. Получаем минимальный объем оперативной памяти процессора 2560+512=3072 байта. Не всякий PIC это обеспечивает, но и не каждому самоделкину нужны 5 полетных режимов. Но, если соглашение будет достигнуто, уже есть три ограничения, о которых необходимо будет четко заявить:
- объем памяти для одного полетного режима – 256 байт
- максимальное число полетных режимов – 5
- объем памяти для одной модели - 2560 байт.
Каждый самоделкин сам решает, сколько “МОДЕЛЕЙ“ ему надо в одной микросхеме памяти, и какую микросхему применить. Это не влияет на взаимозаменяемость моделей.
Думаю, что лучше в милисекундах. Это настройка общая для всех моделей и настраивается 1 раз. Если ставить в %, то не понятно от какого значения брать %.
Я ответ понял. Но, чтобы всем участнткам дискуссии было ясно о чем идет речь, повторю вопрос более развернуто и предложу еще несколько.
В описании FUTABA1024PCM я прочел, что числа 0…1023 соответствуют диапазону длительностей канальных импульсов 1520+/-600 мксек. Но фактически мой передатчик FC15 ограничивает диапазон канальных импульсов примерно 1520+/-500 мксек. В том числе ручка джойстика примерно +/-400 мксек, триммер джойстика примерно +/-100 мксек.(Даже если канальный потенциометр заменить на тумблер!)
ПРЕДПОЛАГАЮ, что числа +/-400 мксек и +/-100 мксек соответствуют 100% расходов ручки и триммера. Поскольку компьютерные передатчики Футаба допускают назначение расходов ручек, триммеров и нулей триммеров >100%, ПРЕДПОЛАГАЮ, что запас 100 мксек предназначен именно для этого.
Из известных мне передатчиков только в Микростар пользователь явно указывает длительность канальных импульсов. В остальных передатчиках пользователь вводит проценты. Пишу так подробно, т.к. считаю, что программист компьютерного передатчика обязательно должен указать в программе (если она доступна пользователю) и/или в инструкции по эксплуатации какому диапазону длительности канальных импульсов соответствует 100%. Крайне желательно хоть как-то обосновать принятые при программировании назначения и ограничения. В этом случае пользователь будет знать, а не угадывать логику программиста и понимать последствия сделанных им (пользователем) назначений тех или иных чисел.
Предлагаю участникам дискуссии высказаться по поводу того стоит ли вводить в интерфейс пользователя назначение длительности канального импульса в микросекундах.
Предлагаю еще несколько тем для дискуссии.
-
В свободнопрограммируемых смесителях передатчика FUTABA 8U предусмотрена возможность выбора - влияет или не влияет триммер ведущего канала на ведомый канал. Какие мнения есть о необходимости такой возможности?
Может кто-нибудь привести пример модели, где без вышеуказанной возможности не обойтись? -
FUTABA применяет внешнюю память (СamРАС).
Какие мнения есть о необходимости такой возможности?
И если есть только одна микросхема памяти - стоит ли делать ее быстросъемной? -
Традиционно в передатчиках предусматривают ф-ии D/R и EXPO для каналов AIL, ELE, RUD. Традиционно для включения этих ф-ий в полете могут программироваться выключатели.
А что если заменить эти ф-ии универсальной ф-ей CURVE (она же трансляционная таблица, она же многоточечная кривая)?
Стоит ли предусмотреть возможность назначения CURVE для всех восьми каналов?
Стоит ли предусмотреть возможность программирования выключателей CURVE для всех восьми каналов?
ПОДЧЕРКНУ, в п.3 речь едет о применении CURVE к нормализованным результатам АЦП канальных потенциометров до задействования каких-либо смесителей. -
Интерфейс пользователя-это вызов из памяти, изменение и запись в память каких-то чисел. Я так и не пришел к определенному выводу какие новые назначения должны вступать в силу немедленно а какие только после выхода из режима программирования. (Например, в Микростар до выхода из программирования в режиме CAL, изменения положений серво заблокированы.)
Какие есть мнения? -
Традиционно модели делят на САМОЛЕТ, ПЛАНЕР, ВЕРТОЛЕТ. При этом внутри каждого типа есть еще деление ( планер с таким то числом серво в крыле, вертолет с таким то автоматом перекоса и т.д). Каждый подвид модели имеет свой набор смесителей. Такой подход сильно увеличивает число переменных.
Может быть, стоит применять универсальные смесители как в Микростар? -
Какие мнения есть о необходимости наличия в передатчике таких ф-й как:
- тахометр
- контроль батареи приемника
- программное назначение полярности РРМ сигнала
- общее время работы передатчика после зарядки аккумулятора
- программное ограничение числа передаваемых каналов тренер-ученик с передачей информации по кабелю или просто включением/выключением передатчика ученика как было раньше
Доброго времени суток. Я переделал менюху. Написал библиотеку для дисплея. Кому интересно - гяньте.
Возник такой вопрос: какие готовые микшеры надо испоьзовать? (V-tail, Elevon, Flapperon. А какие еще нужны?)
Отличный задел, Женя!
Неплохо предварить тексты программ анонсом, позволяющим оживить сухой текст и оценить возможности передатчика. (Меню без передатчика- нонсенс.)
Число пропорциональных каналов
Число дискретных каналов
Есть или нет внешние триммеры
Доступные смесители
Список переменных с указанием диапазона изменений
Органы управления (фиксированные или свободнопрограммируемые)
P.S. Периодически возникает мысль: УНИВЕРСАЛЬНЫЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ. А почему нет? Для маленького экрана строка, за редким исключением, выглядит так:
<ТЕКСТ > <ЧИСЛО >
<ТЕКСТ > - это имя переменной или название следующего раздела меню
<ЧИСЛО > - всегда число, даже если на экране какой-то текст. Если <ЧИСЛО> - число, то допустимый диапазон чисел указывается при описании строки…
Если все строки не помещаются – автоматическая разбивка на страницы…
Как идея?
… Сделать ограниение хода после применения всех микшеров, т. е. уже после всех обработок. Величина ограничения должна настраиваться.
Александр, а какие ограничения лучше: в процентах от какой-то величины (какой?) или в миллисекундах как в Микростар?
Хочу вернуться к двум деталям.
- Цифровые триммеры. Если таковые применяются - обычно это триммеры джойстиков и на индикатор выводятся рисунки, позволяющие визуально определить положение триммера. Маленькие прямоугольные индикаторы для этого не подходят.
- Джойстики остаются проблемой. Судя по сообщению Vad64, SANVA применяет специальные потенциометры, у которых полное изменение сопротивления происходит при повороте на угол 90…120 градусов. Если кто-то знает марку и где можно купить такие потенциометры – просьба сообщить. Футаба применяет стандартные потенциометры. Сигнал 2,5 плюс/минус 0,5 Вольт усиливает в пять раз операционный усилитель C3508C после мультиплексора. Мне пока не удалось повторить такое решение с другим ОУ, а C3508C купить невозможною Даже не нашел его характеристик… Может кто-нибудь помочь?
…
А аналоговые триммеры/расширители портов - это действительно надо ? Разве цифровое триммирование - это не благо ? …
В отношении триммеров я - ретроград.
…
Кроме того - быть может за основу взять ПИК PIC18F4550-I/PT=$6,60 - доступен сейчас в Трт.Ру и содержит на борту USB2.0 среднескоростной контроллер на 32 ендпоинта?
…
Расцениваю это предложение как согласие представить текст программы на ассемблере. USB интерфейс для Микростар - большая проблема даже для американцев.
…
И - кто будет координатором проекта …
Я не предлагал разрабатывать проект.
Я предлагал на примере Микростар изучить:
- Проблемы, которые решали схемотехник, математик, программист.
- КАК и почему именно ТАК решены проблемы. Анализ полученных результатов.
- Предложить другие возможные варианты решения проблем.
Схема предложена для тех, кто любит паять и кому скучно просто читать про проблемы.
Кстати о проблемах. Вот одна из них.
Микростар - компьютерный передатчик. Большинство исходных чисел – результаты АЦП. Для проверки ‘что в черном ящике” Гордон Андерсон придумал п/п TestI0. Проверим, как работает? Транслируем файл MS18_12_05.asm. Программируем. Стартуем при нажатых кнопках OPTION и PRESET. Через 3 сек после появления на экране стартового сообщения отпускаем кнопки. Горит светодиод OVERRUN. Проверяем все кнопки и выключатели кроме OPTION. После нажатия и отпускания кнопки OPTION проверяем результаты АЦП. У меня при ПОСТОЯННОМ напряжении на входе результат АЦП не постоянный. Если это не цифровой шум, то что? А как в настоящем Микростар?
Предполагаю, что аналогично.
Предполагаю, что по этой причине Гордон придумал OverSample – четырехкратный последовательный опрос потенциометра с осреднением результатов. Транслируем файл MS19_12_05.asm. Программируем. Стало лучше, но результат АЦП по прежнему не постоянный. ВЫНУЖДЕН предпринять решительные меры. Ввел принудительное обнуление младшего бита результата OverSample. Файл MS20_12_05.asm. Результат воодушевляет. Но ПОЛНОСТЬЮ проблема не исчезла.
Может, обнулить два младших бита?
Кто знает, как решить проблему без внешнего АЦП?
Кто знает, как решают эту проблему Футаба или Хайтек?
Отзовитесь!
В моей MPLAB v6.50 какой-то шутник удалил из файла P18F452.INC часть текста, обеспечивавшего совместимость программ для PIC16 и PIC17 с системой команд PIC18. Если у кого-то есть эта проблема - воспользуйтесь прилагаемым файлом.
ВАЖНОЕ ЗАМЕЧАНИЕ. Мне не удается вывести информацию на вторую и четвертую строки дисплея АС-204. Если применяется АС-162 – константа LINE2 должна быть H’C0’!!!
А РРМ сигнал на выходе видели? Его ПОКА нельзя изменить, но…
Процесс пошел…
Может, остановимся? А то еще немного и …
……………
Акции Футабы падают…….
Хайтек на грани банкротства……
Graupner разводится с JR….
Санва затачивает нож для харакири…
Магазины, торгующие этим барахлом закрылись….
ИГВА воскресла….
……………………………………
Кошмар!!!
Еще одна важная проблема, которую стоит рассмотреть ДО того, как начать программировать – располагаемое время для вычислений.
Утверждаю: просматривается устойчивая ТЕНДЕНЦИЯ роста объема вычислений в компьютерных передатчиках.
Примерно через неделю попробую изложить как это решено в Микростар.
Два! Толькл два настоящих любителя Микростар осталось.Тэд Сандер и Александр Молчунов. Глохнет тема. Жаль.
“А в чем проблема? Делайте MicroStar2000 - просто и открыто”- написал Vad64.
А я до сих пор не сделал. Главная причина, по которой я отказался повторять конструкцию Гордона – ретропроцессор. Для изменения и отладки программы необходим эмулятор. Дорого. Где же выход?
Преподаватели по марксистско-ленинской философии учили: если у вас есть сомнения, обратитесь к классикам. Достал из книжного шкафа фолиант “Гордон Андерсон. Полное собрание сочинений. Издательство RCdesign. Москва, 2165г.” (Твердый переплет, золотое тиснение, суперобложка).
На первой странице эпиграф: Do as I say, and not as I do!!! Twinman
Открыл документ “The Encoder. A Technical Discussion And Fabrication Notes. Gordon Anderson. September 6, 2001“. На стр.10 прочел: “…Please remember this is not a commercial product, its intended for the guy who likes to tinker a bit with RC radio equipment…You are also welcome to change the software as you like to build your our custom radio, but please do not sell or claim this development as your own, I have lots of work invested in this project.”
Предлагаю для тех, кто любит паять, схему устройства для экспериментов с программным обеспечением Микростар на PIC18F452.
Достоинства:
- современный процессор в корпусе PDIP;
- есть описание процессора на русском языке;
- количество пропорциональных и дискретных органов управления м.б. увеличено;
- можно проверить схемные решения, применяемые Футаба
Недостатки:
- только некоторые программы с PIC17 м.б. автоматически перенесены на PIC18;
- это не законченная схема кодера, это устройство для проверки решений Гордона и своих;
- нелинейность результатов АЦП. Располагаемый диапазон результатов АЦП немного меньше 0…1023. А кто сказал, что будет легко? Я не случайно спрашивал у Vad64 про потенциометры. Это – отдельная проблема. Для изучения и изменения “под себя” п/п режима CAL и интерфейса пользователя вместо потенциометров AIL и ELE можно установить трехпозиционные тумблеры.
Резервы схемы:
- переход на четырехпроводную шину данных индикатора высвободит 4 вывода PIC (если этого окажется недостаточно – возможны и другие варианты);
- программная память PIC18F452 такая же, как у PIC17С766. MICROCHIP уже производит PIC18F4610 и PIC18F4680. Там в два раза больше памяти. Эти процессоры невозможно купить. Но это - временно, а до необходимости использования их ресурсов еще нужно ДОРАСТИ;
- Предлагаемая внешняя память обеспечит хранение данных 16 моделей (по 512 байт для одной модели).
В одном из ответов мне Тед Сандер написал: “…Given Gordon’s time commitments, I think the best chance of fully understanding how it works will come when he’s ready to release the source code. Perhaps late this year…”
Будем ждать или продолжим?
PS. По поводу эпиграфа. Если среди читателей есть пользователи передатчика FUTABA8U, имеющие ПРАКТИЧЕСКИЙ опыт использования трансляционных таблиц в смесителях PMIX-6 и PMIX-7 и согласные потратить некоторое время, чтобы ответить на мои вопросы – отзовитесь.
Тема называется ”Самодельный передатчик”. Дискуссия свелась к нескольким частным вопросам. Написавшие сюда самодельщики не хотят открытого анализа своих устройств.
Может быть, найдутся желающие потратить время и разобрать по косточкам кодер Микростар?
Это будет полезно всем интересующимся заявленной темой. Вся необходимая информация по версии 1.0 есть на этом сайте. Если согласятся участвовать те, кто сделал Микростар, будет очень хорошо.
Предлагаю условную последовательность для анализа решений Гордона Андерсона.
Принципиальная схема
Комплектующие
Математика
Программная реализация математики
Интерфейс пользователя
ПС интерфейс
Процедура внесения изменений
Инструкция по программированию
Один из возможных способов – каждый участник дискуссии составляет документ, в котором излагает свою оценку какой-то части проекта Микростар. В итоге можно создать отличное пособие для самодельщиков, а может быть, даже статью для RC design.
Для начала дискуссии и просто для всех, кому это интересно, прилагаю небольшой задел.
ПРИМЕЧАНИЯ.
- Попытка наладить диалог с заокеанскими пользователями Микростар на MP8K@yahoogroups.com дала некоторые положительные результаты. Тед Сандер согласился включить в свой документ часть из моих предложений. Гордон на мои сообщения не отреагировал, хотя наверняка все прочел и сделал выводы.
- Желаю всем самодельщикам успехов и поменьше наступать на чужие грабли.
… если у Вас есть возможность и желание, сделайте, пожалуйста.
Предлагаю архивчик для нетерпеливых.
… Когда Вы начнете свой софт, то уверен, поймете, что выбор грамотной структуры и состава настроек очень важен…
Помню о нежелании Vad64 отвечать на дурацкие вопросы, но все же задам несколько.
Проект компьютерного передатчика ВСЕГДА начинается с математики. Там, в математике, закладываются грабли, на которые периодически наступает программист. Грабли есть и в самодельном Микростар и в фирменном FC-28. И тот и другой программисты крайне неохотно признают наличие грабель и не предоставляют исчерпывающую информацию. Передатчик превращается в “черный ящик” или “ящик Пандоры” а пилот из Пользователя превращается в Исследователя (пример – Тед Сандер и его бестселлер Exploring the MicroStar 2000 ver 11c.pdf). Четыре или пять лет назад автор Микростар принял решения по принципиальной схеме, элементной базе, математике, структуре и составу настроек. Сегодня проект в тупике. Дальнейшие изменения программного обеспечения не возможны без замены процессора. Кошка поймала себя за хвост! Хвост – это те самые решения. У автора Микростар нет и никогда небыло оппонента! А ошибок было полно.
Вопрос №1. Vad64 готов предоставить на всеобщее изучение документ с описанием математики?
QUOTE(Vad64 @ Sep 22 2005, 17:08)
… Схема будет открыта, открывать прошивку и исходные тексты пока не планирую…
В дополнение к предыдущему. Математика передатчика начинается с выбора диапазона исходных чисел. Смотрю на схему и вижу: Vref = Vcc = 3,8V. Если джойстики ОБЫЧНОЙ конструкции и в джойстиках ОБЫЧНЫЕ потенциометры, то исходный аналоговый сигнал 1,9 плюс/минус 0,38V. Т.е. результат АЦП в цифрах 512 плюс/минус 102.
Вопрос №2. Я прав?
Была дискуссия о РСМ. Считаю необходимым, чтобы самодельный передатчик поддерживал “стандартные” режимы.
Вопрос №3. Можете ли сообщить источники информации о РСМ Футаба и Хайтек? (Известная статья “РСМ или РРМ” не в счет.)
Вопрос №4.(Связан с №3) Признаете ли наличие проблемы цифрового шума? Если да, как предполагаете решать?
Просьба к автору. Переведите документацию в PDF и выложите здесь. А еще лучше рядом с чертежами ручек Молчунова. Отпадут все проблемы с просмотром.
Я удаляю архив с блок-схемами. Там есть неточности. Взамен выставляю новый, подготовленный для диалога с джентльменами на яхогруп. Развернутая блок-схема п/п Mixer показывает, что в версиях 1.0 невозможно одновременно применить прямое и косвенное масштабирование. Ввод для какого-то направления номера косвенного канала отменяет ранее назначенный прямой масштаб для этого направления. При этом до выхода из меню смесителя (MIXER1A или любого другого) информация на индикаторе не изменится. Я нигде не встречал упоминания о таком нюансе.
Например, назначено:
(MIXER1A)
From Ail
Table None
To Rud
Replace Yes
ZP 0%
Pos Gain 50%
Pos Ind Ele
Neg Gain 50%
Neg Ind Ele
После выхода из меню MIXER1A в меню MIXERS и последующего возврата в MIXER1A на индикаторе напротив Pos Gain и Neg Gain должно появиться число, соответствующее номеру косвенного канала. Т.е. сообщения должны быть такими:
(MIXER1A)
From Ail
Table None
To Rud
Replace Yes
ZP 0%
Pos Gain 2%
Pos Ind Ele
Neg Gain 2%
Neg Ind Ele
Александр!
Можешь ли ты подтвердить или опровергнуть мои предположения?
Тед Сандер в разделе Indirection ссылается на какой-то документ Гордона. Может, ты знаешь, о каком документе идет речь? Судя по тексту Теда, в версии 1.1 прямое и косвенное масштабирование могут применяться одновременно. Итоговый масштаб является произведением прямого и косвенного масштабов. Просьба выбрать время и проверить на приведенном ниже примере.
Предварительно надо сбросить нули триммеров и поставить триммеры в среднее положение.
(MIXER1A)
From Ail
Table None
To Rud
Replace Yes
ZP 0%
Pos Gain 50%
Pos Ind Ele
Neg Gain 50%
Neg Ind Ele
Если итоговый масштаб такого смесителя является произведением прямого и косвенного масштабов, то при нейтральном положении ручки Ele серво Rud не будет реагировать на ручку Ail. Чем больше отклонение ручки Ele от нейтрального положения, тем больше д.б. реакция Rud на Ail. Изменение направления отклонения Ail должно привести к реверсу Rud.
Неясно также, существует ли ограничение максимальной величины косвенного масштаба. Если триммер Ele 20% то масштаб при односторонних крайних позициях ручки и триммера м.б -120…+120. Если триммер 50%, то -150…+150.
Просьба также проверить какое максимальное число м.б. назначено для Pos Gain и Neg Gain 100 или 127. Обосновывал ли Гордон эту величину?
И еще одна просьба - проверить какой протокол применил Гордон для передачи сообщения в FMS симулятор. Передается весь пакет во время синхропаузы или побайтно в промежутках между синхроимпульсами. Это д.б. хорошо видно если один щуп осциллографа подключить к выходу PPM (штырек 2 разъема J6), а второй к штырьку 2 разъема для COM порта.
Андрей.
Ведь есть еще возможность задания числа каналов от 4х до 9и. И на 9й вообще нет переключателя.
Не понял о чем речь. 9-й канал - это контрольная сумма. Абсолютно бесполезна для обычного приемника. Только уменьшает длительнлсть синхропаузы.
Получил собственный ID на яхогруп, но сообщение послать не смог и не понял почему.
Сообщение исправить не могу. Не знаю как.
mstar2k.com
Но исходников там нет и не ждите. 😈
Гордон еще в 2001 году обещал выпустить документ с описанием математики Микростар. Известно ли Вам о существовании такого документа?
Добавлено
Александр, просьба высказать свое мнение по нижеизложенному.
Подпрограмма вычисления трансляционной таблицы (Translation) составлена исходя из предположения, что исходные числа находятся в диапазоне от –1000 до +1000.
Эти и только эти числа упоминаются Гордоном и Тедом Сандером в инструкциях по программированию. Но дело обстоит иначе.
Если From - канал с триммером, то исходное число - это сумма канала и триммера.
Если триммер = 20% канала, то для AIL,RUD,ELE исходные числа находятся в диапазоне от –1200 до +1200, а для THT, в зависимости от статуса триммера, от –200 до +1200, или от –200 до +1000 от 0 до +1200 . И это ОБЫЧНО И НОРМАЛЬНО!
Аналогичная ситуация м.б. если исходное число это результат предыдущего смесителя.
Но при обработке исходного числа, модуль которого больше 1000, п/п Translation работает некорректно.
Например: исходное число 1050. Тогда в качестве точки А будет использована одиннадцатая (последняя!) точка таблицы, а качестве точки В – число из следующей ячейки памяти. Это м.б. первая точка следующей таблицы или (если используется последняя таблица) какая-то переменная (например SHIFT).
Я не знаю, как Гордон решил эту проблему и нисколько не удивлюсь, если он вообще ее игнорирует.
Конечно, пилот может обойти эту проблему применив смеситель для масштабирования перед трансляцией. Но, не зная диапазона исходных чисел, нельзя назначить правильный масштаб.
Я оценил юмор Теда Сандера, который рекомендует для изучения смесителей ежедневно упражняться в программировании. Может, это ответ сатирику, сказавшему “Ну какие же они тупые!”. А применительно к рекомендациям по “очень ПРОСТОМУ! реверсу серво” можно сказать “Без бутылки тут не разобраться!”
Я составил несколько блок-схем на основании исходных текстов версии 1.0с и описаний Гордона и Теда. Может, кому пригодятся.
Есть несколько вопросов как к ветерану использования Микростар.
Что такое группа пользователей Yahoo: MP8K@yahoogroups.com ?
Практикуют ли они свободный обмен параметрами смесителей, использованных ими на конкретных моделях?
Что мешает нормализовать каналы без центрирования от -1000 до +1000?
Обосновывал ли когда-нибудь Гордон принятые им схемотехнические решения по подключению канальных потенциометров и использованию для Vref нестабилизированного напряжения?
Кнопки PRESET и AUTOTRIM используются как служебные но одновременно являются свободно программируемыми. Зачем это свободное программирование, которое ничего кроме вероятной ошибки не дает?
Что Вы думаете по поводу использования тумблеров СH8 и CH5 для включения Idle Up и Throttle Hold? При этом CH5 и СH8 не могут использоваться для передачи информации. Или я не прав?
PIC766 поддерживает SPI и I2C. почему применена микросхема памяти с 3-х проводным интерфейсом и всего на 16К? Притом, что по мере развития программного обеспечения наблюдается устойчивая тенденция увеличения количества переменных для одной модели, а трансляционные таблицы вообще никак не привязаны к конкретной модели.
Означает ли устранение проблемы таймера для Alt самолета в версии 1.1а отказ от чтения внешней памяти во время полета модели?
При записи во внешнюю память теоретически возможны ошибки. Я не нашел в программе проверки результатов записи. Может, плохо искал?
Как работают Trigger Points? В описаниях Гордона и Теда я не нашел достаточных подробностей, но очень похоже на FC28 когда в окрестности нейтрального положения ручки программируется D/R а начиная с какой-то свободно программируемой величины начинает действовать EXPO. Так ли это?
_________
Часть из этих вопросов я послал на MP8K@yahoogroups.com. Ответа нет. Может, письмо не дошло или не поняли мой компьютерный английский перевод или обиделись или думают или не знают что ответить. Известно, один дурак может задать столько вопросов, что и 100 мудрецов не ответят.
Буду признателен, если найдете возможность для ответа.
АНДРЕЙ.
Добавлено
Александр, просьба высказать свое мнение по нижеизложенному.
Подпрограмма вычисления трансляционной таблицы (Translation) составлена исходя из предположения, что исходные числа находятся в диапазоне от –1000 до +1000.
Эти и только эти числа упоминаются Гордоном и Тедом Сандером в инструкциях по программированию. Но дело обстоит иначе.
Если From - канал с триммером, то исходное число - это сумма канала и триммера.
Если триммер = 20% канала, то для AIL,RUD,ELE исходные числа находятся в диапазоне от –1200 до +1200, а для THT, в зависимости от статуса триммера, от –200 до +1200, или от –200 до +1000 от 0 до +1200 . И это ОБЫЧНО И НОРМАЛЬНО!
Аналогичная ситуация м.б. если исходное число это результат предыдущего смесителя.
Но при обработке исходного числа, модуль которого больше 1000, п/п Translation работает некорректно.
Например: исходное число 1050. Тогда в качестве точки А будет использована одиннадцатая (последняя!) точка таблицы, а качестве точки В – число из следующей ячейки памяти. Это м.б. первая точка следующей таблицы или (если используется последняя таблица) какая-то переменная (например SHIFT).
Я не знаю, как Гордон решил эту проблему и нисколько не удивлюсь, если он вообще ее игнорирует.
Конечно, пилот может обойти эту проблему применив смеситель для масштабирования перед трансляцией. Но, не зная диапазона исходных чисел, нельзя назначить правильный масштаб.
Я оценил юмор Теда Сандера, который рекомендует для изучения смесителей ежедневно упражняться в программировании. Может, это ответ сатирику, сказавшему “Ну какие же они тупые!”. А применительно к рекомендациям по “очень ПРОСТОМУ! реверсу серво” можно сказать “Без бутылки тут не разобраться!”
Я составил несколько блок-схем на основании исходных текстов версии 1.0с и описаний Гордона и Теда. Может, кому пригодятся.
Есть несколько вопросов как к ветерану использования Микростар.
Что такое группа пользователей Yahoo: MP8K@yahoogroups.com ?
Практикуют ли они свободный обмен параметрами смесителей, использованных ими на конкретных моделях?
Что мешает нормализовать каналы без центрирования от -1000 до +1000?
Обосновывал ли когда-нибудь Гордон принятые им схемотехнические решения по подключению канальных потенциометров и использованию для Vref нестабилизированного напряжения?
Кнопки PRESET и AUTOTRIM используются как служебные но одновременно являются свободно программируемыми. Зачем это свободное программирование, которое ничего кроме вероятной ошибки не дает?
Что Вы думаете по поводу использования тумблеров СH8 и CH5 для включения Idle Up и Throttle Hold? При этом CH5 и СH8 не могут использоваться для передачи информации. Или я не прав?
PIC766 поддерживает SPI и I2C. почему применена микросхема памяти с 3-х проводным интерфейсом и всего на 16К? Притом, что по мере развития программного обеспечения наблюдается устойчивая тенденция увеличения количества переменных для одной модели, а трансляционные таблицы вообще никак не привязаны к конкретной модели.
Означает ли устранение проблемы таймера для Alt самолета в версии 1.1а отказ от чтения внешней памяти во время полета модели?
При записи во внешнюю память теоретически возможны ошибки. Я не нашел в программе проверки результатов записи. Может, плохо искал?
Как работают Trigger Points? В описаниях Гордона и Теда я не нашел достаточных подробностей, но очень похоже на FC28 когда в окрестности нейтрального положения ручки программируется D/R а начиная с какой-то свободно программируемой величины начинает действовать EXPO. Так ли это?
_________
Часть из этих вопросов я послал на MP8K@yahoogroups.com. Ответа нет. Может, письмо не дошло или не поняли мой компьютерный английский перевод или обиделись или думают или не знают что ответить. Известно, один дурак может задать столько вопросов, что и 100 мудрецов не ответят.
Буду признателен, если найдете возможность для ответа.
АНДРЕЙ.
На сайте есть старые версии программ для MICROSTAR2000 .
У кого есть новые версии файлов MSTAR.ASM,UI.ASM,DATA.ASM?
Поделитесь или подскажите где взять.