Fail-Safe - Автопилот для полетов по камере

Unav

Сам приёмник точно не бюджетный и преднозначен для другого сектора.
Поэтому и дал название фирмы.

Антенну поставил “ширпотребовскую” GlobalSat 4см. в диаметре
одночастотную с магнитиком.

Позиция считается без всяких WAAS дифференциальных систем.
Т.е. с точки зрения позиции всё по-честному.

Просто мне удобно с ним обращаться.
Хотел прежде всего поделиться моей реализацией.
В процессоре MPC565/566 есть модуль Modular Input/Output Subsystem
На нём и запрограммировал PWM сигнал
Позицию пишу во внутреннюю память.
Используется только “голая” плата весом 150грамм.

Данный приёмник используется чисто в хоббийных целях без всех его возможностей.
Математика простейшая, нацеленная на микроконтроллер.
Просто у меня нет отдельного микроконтроллера (хотя в дальнейшем перейду на дешёвый GPS и отдельный контроллер), а есть дорогой приёмник.
Мне сейчас удобней использовать такой вариант (всё в одном флаконе).

Наверняка в других приёмниках можно сделать похожее.

Испытывался не сам GPS приёмник, а его реализация и, собственно, алгоритм автонавигации с простой математикой.
Коммерческие варианты не интересууют. Хочу сделать весь комплекс сам и с “подручными”
материалами с нуля, с чисто хоббийными целями.
GPS приёмник дорогой, но он у меня есть, и ипользую его как маленький компьютер с позицией.
вес - 150г.
Возможности GPS приёмника для расчёта сверхточной позиции не используются.
Т.е. он у меня как дорогой макет для будущей дешёвой реализации.

А вот на любые вопросы связанные непосредственно с автоуправлением отвечу с радостью.

Реализация мультиплексора:
Поставил нашу отечественную микросхемку К555КП12, стоимостью 10р.
Она умеет в зависимости от уровня управляющего сигнала подключать выход к одному из 4х входных цифровых сикналов.
Таким образом на входе мультиплексора
с радиоприёмника
1й канал - курс
2й канал - управление
с GPS приёмника - курс

Ко 2му каналу RC прёмника подключил регулятор оборотов. Выдаёт либо высокий либо низкий уровень для мультиплексора
На выходе мультиплексора сигнал либо с RC приёмника, либо с GPS. Управление вторым каналом с RC передатчика.
Также и тяга и т.п.
Таким образом в любой момент с RC пульта можно управлять курсом самому, либо брать с GPS.

vovic

Давно ищу себе соучастника вот в таком деле. Есть готовый проект:
rcpilot.sourceforge.net/modules/rcap/index.php
С открытым софтом - исходники выложены на сайте.
Он хорош простотой и доступностью любому желающему. Мною испытан и отлажен. Но плох тем, что работает только с навигатором, задающим курс на цель. С обычными GPS- приемниками работать не может.
Цель замышляемого дела - модифицировать софт так, чтобы он смог работать с любой GPS-головкой.
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?

Unav
vovic:

Давно ищу себе соучастника вот в таком деле. Есть готовый проект:
rcpilot.sourceforge.net/modules/rcap/index.php
С открытым софтом - исходники выложены на сайте.
Он хорош простотой и доступностью любому желающему. Мною испытан и отлажен. Но плох тем, что работает только с навигатором, задающим курс на цель. С обычными GPS- приемниками работать не может.
Цель замышляемого дела - модифицировать софт так, чтобы он смог работать с любой GPS-головкой.
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?

Синусы/косинусы и обратные функции в Пикбейсике есть?

Vad64
vovic:

Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?

Если это поможет, могу проконсультировать по численным алгоритмам. С Пикбейсиком я не работал и нет желания с ним разбираться.

Psw
Vad64:

Если исходная задача - приведение устойчивого аппарата в заданную точку

Мною имелась ввиду сложность/дороговизна реализации задачи принятия управляющих решений 10-100 раз в секунду.
А по численным алгоритмам - енто конечно круто, не вопрос.
Но мне кажется всё-таки, раз уж в (пик) бэйсике нету обратной тригонометрии, всё-таки (хотя бы)математику писать на Сях, поскольку в стд либ есть потребные арк функции, ну а Си есть условно бесплатный.
Ну а всякие обработчики входного текста NMEA - можно и на асме.
Ну а о платформе как обычно два лагеря - АВР супротив ПИК (пора уже хоть 18).
И там и там приверженцы/сторонники/противники.
P.S.
А в BU353 асинхронный NMEA выход нашёлся под антенной, естественно. Лень фотать, но выход нашёл.
Но ещё даже к своей макетке 18пик+20*4 лсд не подключал, обработчик NMEA текста не писал - как-то не с руки было.
Кстати, про сирф-3 вроде до 10 Гц пишут обновление позиции, или я чего-то путаю ?

Dfyj

Нет, не путаешь, так и пишут 😃

Как на нем антенну снять ? нужно пипку по центру в антенне распаять ?

vovic
Psw:

А по численным алгоритмам - енто конечно круто, не вопрос.
Но мне кажется всё-таки, раз уж в (пик) бэйсике нету обратной тригонометрии, всё-таки (хотя бы)математику писать на Сях, поскольку в стд либ есть потребные арк функции, ну а Си есть условно бесплатный.

Да в том то и дело, что девайс готов и работает. Его только подправить надо.
А если Вас послушать - то нужно переписывать все заново, соответственно - все отлаживать заново. Именно на это, как правило, энтузиазма не хватает.
Отлаживать там есть что, потому что даже в готовой и работающей программе я нашел ошибки, приводящие к дрожанию сервомашинок.
Как всегда - недостатка в советах нет, но вот помоч - это всегда дифицит.

PigTail

А никто кстати путных ссылочек на материалы по подобным рассчетам не подбросит?

Unav

Ладно, синусы/косинусы и обратные посчитаем по рядам Тейлора.
Просмотрел код rcap и не увидел там формата чисел с плавающей точкой.

В ПикБейсике только целочисленная математика?
Или всё-же плавучка есть?

vovic

Плавающую - это через подгружаемые библиотеки - там места может не хватить.
Было бы замечательно написать все в целочисленном варианте. У меня там возникла проблема с разрядностью. Дело в том, что формат координат по долготе, к примеру, таков: ГГГ.ММ,МММ - Это семь с половиной десятичных знаков, что в двоичном варианте составляет 24 разряда. Поэтому считать разницу текущей координаты и координаты цели уже непросто в целочисленной арифметике. Надо изголяться. А я - не умею. Отбрасывать младший разряд - нельзя.
Единственное допустимое упрощение - это ограничиться только северной широтой и восточной долготой.

Вторая проблема - есть готовый кусочек кода кусочно-линейной аппроксимации функции арктангенса -
www.dattalo.com/technical/software/…/arctan.asm
С нормальной точностью. Но он только для октета - 0-45 градусов. К нему еще надо дописать сведение 0-360 градусов через изменение знака и дополнение. Кроме того, чтобы избежать деления на ноль, надо написать отработку выколотых точек - их четыре - это когда цель и модель находятся точно на одной широте или долготе.

Почему я зациклился на этом? Да потому, что, если расчет азимута таки написать на пике, то дальше отлаженный на столе кусочек кода просто вставляется в готовый девайс - и можно лететь! 😃

Vad64
vovic:

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

А этот Пикбейсик - бесплатный софт или как? Есть ли в нем симулятор? Где можно посмотреть описание?

vovic

Я брал бесплатно вот тут - это форум поклонников PIC:
www.microchip.ru/phorum/
Там дадут ссылочки и посоветуют.
Там отладочная оболочка неплохая есть. Но все равно - нужно соображать.

Prikupets
Vad64:

А этот Пикбейсик - бесплатный софт или как? Есть ли в нем симулятор? Где можно посмотреть описание?

Я может упустил что-то, но почему бы не написать на C ? Если отбросить извраты, но его базовая часть (логика, арифметика, простые типы) не сложнее Бейсика. К тому же есть тип double, библиотеки и нормальные комиляторы (PICC например). Контроллер лучше брать из серии PIC18, например PIC18F252 - у него 16k команд (32k bytes) и 1.5kb RAM, Serial, 5 ADC, Freq до 25 MHz или 40 Mhz с учетверителем такатовой. Цена около 250р. Программатор WinPic800, железо у меня Tait LPT.

vovic
Prikupets:

Я может упустил что-то, но почему бы не написать на C ?

Я уже писал - если писать на С - надо писать всю программу. В т.ч. отработку прерываний, чтение и декодирование NMEA, декодирование входного РРМ-сигнала, формирование выходного РРМ-сигнала, отработку подстроечных параметров по пути перекладки, реверсу и коэффициенту передачи на серву руля.
Если на пиковском ассемблере или пикбейсике - надо написать только расчет азимута. Все остальное уже написано, ОТЛАЖЕНО и ИСПЫТАНО в полете!
Впрочем, возможно на С написать расчет азимута, откомпилить его в ассемблер пика и вставить кусок в программу. Но я тоже не потяну - С не знаю.

PigTail

Хм… там книга у производителя энтого бэйсика и в оной упомянуто что он long intеger в 32 бита жует и с чем Вы хотите извращаться c 24-мя, косинус и сунус в библиотеке тоже вроде есть или точности не хватает?

Psw
vovic:

Я уже писал - если писать на С - надо писать всю программу.

Так а много язычные проекты разве кто-то отменял ?
Написать на С функцию с нужным входом/выходом ( вплоть до Вход = Текст NMEA Широта/Долгота и Выход = азимут/расстояние до цели) откомпилить и встроить её в готовый проект.
Немного гемор связывать воедино, зато не нужно всё переписывать.

vovic:

Впрочем, возможно на С написать расчет азимута, откомпилить его

Вот и я о том. А в помошники как минимум Прикупеца взять - он добрая душа потому как.
А нацеливать лучше на совместимый по выводам (к исходному проекту) пик18 - ресурсов больше. Наверняка Микрочип пик басиц компилит и для пик16 и пик18.

vovic:

Я брал бесплатно вот тут - это форум поклонников PIC

Вовик, так а быть может не поленишься кинуть в меня ентим Микрочип пик басицом или ссылкой на него? Потому как у меня парочка есть, но какие-то они странные, меня не особо завели. Но они не Микрочип, который насколько я понял в МпЛаб ихний интегрится. А к МпЛабу я уже как-то привык.

vovic:

Как всегда - недостатка в советах нет, но вот помоч - это всегда дифицит.

Ну я как обычно готов орать “ДАЙ” какую-либо исходники/прогу для пика или атмела уже тоже - купил мег несколько штук для опытов. А программатор Тритон у меня их одинаково хорошо шьёт. А для пика ещё и внутрисхемный программер/отладчик прикупил на Микрочипе через СГиба с очередной посылочкой - так что бета тестер/ковырятель исходного кода из меня хоть какой-то.
P.S.
2 Вано:
А про антенну BU353 - на самой антенне пайку якобы трогать нельзя. Толстый Проводок с ентой пайки в антенне протыкает модуль насквозь. Вот с обратной стороны платы его и надо отпаять. На моих фото выше в ентой теме как сейчас помню хорошо видна ента капля припоя на плате - гораздо больше и корявее всех остальных. Антенна кстати приклеена к экрану - енто доп гемор. Я когда (подантенный) экран отпаивал не снимая антенны подрезал нечаянно кондёр в уголке платы. Но без него тоже работает.
А потом уже можно и центральный антенки паять.
А кстати, сирф-3 можно заставить запомнить параметры обмена, или каждый раз после подачи питания нужно программировать ? Ну ту же скорость интерфейса и интервал обновления ? Или 10 Гц можно только по Сирф Бинари брать, а по NMEA он так и будет вещать - 4800 бод 1 Гц обновления ?
А то я выход нашёл, а вот вход найти не получилось почему-то. По минимуму достаточно, но программить только по USB пока что.

Boriska62
Psw:

Ну ту же скорость интерфейса и интервал обновления ? Или 10 Гц можно только по Сирф Бинари брать, а по NMEA он так и будет вещать - 4800 бод 1 Гц обновления ?

Я эксперементировал с PocketLoox520, в нем именно sirf3 стоит. Мне удавалось его и в sirfbinary и в NMEA режимах переключать на скорости обмена до 57600. Вот по скорости обновления сказать ничего не могу, не пробовал.
Недавно прикупил модуль ET-301 для subj. Буду его мучать в ближайшее время.

Psw:

А кстати, сирф-3 можно заставить запомнить параметры обмена, или каждый раз после подачи питания нужно программировать ?

В sirf3 используется статическая память, для хранения информации надо подпитывать модуль, используя батарейку на 3в, примерно такую же как в биосе компа (или в часах %). Время непрерывной работы такой батарейки измеряется в годах, потребление там мизерное.

vovic
Boriska62:

В sirf3 используется статическая память, для хранения информации надо подпитывать модуль, используя батарейку на 3в, примерно такую же как в биосе компа (или в часах %). Время непрерывной работы такой батарейки измеряется в годах, потребление там мизерное.

Немного не так. Батарейка нужна для питания внутренних часов реального времени для обеспечения быстрого теплого и горячего рестарта.

Psw:

Вовик, так а быть может не поленишься кинуть в меня ентим Микрочип пик басицом или ссылкой на него? о кода и.

Вот тут подробная инструкция по инсталляции бесплатного компилятора Пикбейсика поверх бесплатной MPLAB:
www.microchip.ru/phorum/read.php?f=2&i=131857&t=13…
Там есть все необходимые ссылки. Я делал все точно по ней - и все работало. MPLAB я брал версии 7.40.Важно правильно пути прописать, где будет компилируемый текст.

Исходники навигатора RCAP - в ссылке, данной мною выше в этой теме. Там основной текст и текст обработки прерываний. Если заинтересует - могу дать подробные коментарии по структуре программы и назначении переменных. Там текст Пикбейсика вперемешку с кодом на ассемблере - одно из достоинств языка.

Psw:

Вот и я о том. А в помошники как минимум Прикупеца взять - он добрая душа потому как.

Был бы очень рад. Но у него пока другие интересы. Жаль.

Psw

Вовик, за ссылочку спасибо, весьма информативна.

vovic:

Был бы очень рад. Но у него пока другие интересы. Жаль.

У всех другие интересы - трудно жить только электроникой/моделизмом.
Однако же надо не только деффчонок жарить и пиво зло употреблять, надо ещё и проги ковырять для само обучения/удовлетворения.
Одним словом, мне надо пик басиц для комплекта ставить. Правда, я думал, что он от Микрочип. А ентот ПикБасицПро от www.microengineeringlabs.com у меня уже был. Правда, к МпЛабу для построчной эмуляции я его так и не подвязал. Теперь буду пробовать. Ну и страничка с готовыми проектиками на ПикБасице тоже весьма содержательна, наверное.
P.S.
А в BU353 вроде вместо ентой батарейки СуперКонденсатор ионный стоит.
Ну типа - на какое-то время он питает бортовые часы для быстрого старта.
Хотя действительно ничего не стоит литиевую таблетку туда замонстрячить, если енто “какое-то” время окажется слишком малым.

vovic
Psw:

Ну типа - на какое-то время он питает бортовые часы для быстрого старта.
Хотя действительно ничего не стоит литиевую таблетку туда замонстрячить, если енто “какое-то” время окажется слишком малым.

К модулю u-blox я примострячил CR1220 где то в апреле месяце. До сих пор все ОК. Она при включении девайса подзаряжается. Горячий рестарт очень полезен, когда в перевернутом полете GPS приемник теряет спутники. Пропадает всего около 5 секунд реальных координат после возврата планера в нормальное положение.

Prikupets

Цитата(Psw @ Dec 15 2006, 02:26)
Вот и я о том. А в помошники как минимум Прикупеца взять - он добрая душа потому как.

vovic:

Был бы очень рад. Но у него пока другие интересы. Жаль.

Интересы не изменились. А вот время не хватает тотально. Даже спать приходится по 5-6 часов. Моделизм отдыхает. Работа блин все съедает… Щас сам пытаюсь потихоньку портировать свою GPS прогу на 18F252-PIC.