Fail-Safe - Автопилот для полетов по камере
Сам приёмник точно не бюджетный и преднозначен для другого сектора.
Поэтому и дал название фирмы.
Антенну поставил “ширпотребовскую” 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.
Давно ищу себе соучастника вот в таком деле. Есть готовый проект:
rcpilot.sourceforge.net/modules/rcap/index.php
С открытым софтом - исходники выложены на сайте.
Он хорош простотой и доступностью любому желающему. Мною испытан и отлажен. Но плох тем, что работает только с навигатором, задающим курс на цель. С обычными GPS- приемниками работать не может.
Цель замышляемого дела - модифицировать софт так, чтобы он смог работать с любой GPS-головкой.
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?
Давно ищу себе соучастника вот в таком деле. Есть готовый проект:
rcpilot.sourceforge.net/modules/rcap/index.php
С открытым софтом - исходники выложены на сайте.
Он хорош простотой и доступностью любому желающему. Мною испытан и отлажен. Но плох тем, что работает только с навигатором, задающим курс на цель. С обычными GPS- приемниками работать не может.
Цель замышляемого дела - модифицировать софт так, чтобы он смог работать с любой GPS-головкой.
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?
Синусы/косинусы и обратные функции в Пикбейсике есть?
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?
Если это поможет, могу проконсультировать по численным алгоритмам. С Пикбейсиком я не работал и нет желания с ним разбираться.
Если исходная задача - приведение устойчивого аппарата в заданную точку
Мною имелась ввиду сложность/дороговизна реализации задачи принятия управляющих решений 10-100 раз в секунду.
А по численным алгоритмам - енто конечно круто, не вопрос.
Но мне кажется всё-таки, раз уж в (пик) бэйсике нету обратной тригонометрии, всё-таки (хотя бы)математику писать на Сях, поскольку в стд либ есть потребные арк функции, ну а Си есть условно бесплатный.
Ну а всякие обработчики входного текста NMEA - можно и на асме.
Ну а о платформе как обычно два лагеря - АВР супротив ПИК (пора уже хоть 18).
И там и там приверженцы/сторонники/противники.
P.S.
А в BU353 асинхронный NMEA выход нашёлся под антенной, естественно. Лень фотать, но выход нашёл.
Но ещё даже к своей макетке 18пик+20*4 лсд не подключал, обработчик NMEA текста не писал - как-то не с руки было.
Кстати, про сирф-3 вроде до 10 Гц пишут обновление позиции, или я чего-то путаю ?
Нет, не путаешь, так и пишут 😃
Как на нем антенну снять ? нужно пипку по центру в антенне распаять ?
А по численным алгоритмам - енто конечно круто, не вопрос.
Но мне кажется всё-таки, раз уж в (пик) бэйсике нету обратной тригонометрии, всё-таки (хотя бы)математику писать на Сях, поскольку в стд либ есть потребные арк функции, ну а Си есть условно бесплатный.
Да в том то и дело, что девайс готов и работает. Его только подправить надо.
А если Вас послушать - то нужно переписывать все заново, соответственно - все отлаживать заново. Именно на это, как правило, энтузиазма не хватает.
Отлаживать там есть что, потому что даже в готовой и работающей программе я нашел ошибки, приводящие к дрожанию сервомашинок.
Как всегда - недостатка в советах нет, но вот помоч - это всегда дифицит.
А никто кстати путных ссылочек на материалы по подобным рассчетам не подбросит?
Ладно, синусы/косинусы и обратные посчитаем по рядам Тейлора.
Просмотрел код rcap и не увидел там формата чисел с плавающей точкой.
В ПикБейсике только целочисленная математика?
Или всё-же плавучка есть?
Плавающую - это через подгружаемые библиотеки - там места может не хватить.
Было бы замечательно написать все в целочисленном варианте. У меня там возникла проблема с разрядностью. Дело в том, что формат координат по долготе, к примеру, таков: ГГГ.ММ,МММ - Это семь с половиной десятичных знаков, что в двоичном варианте составляет 24 разряда. Поэтому считать разницу текущей координаты и координаты цели уже непросто в целочисленной арифметике. Надо изголяться. А я - не умею. Отбрасывать младший разряд - нельзя.
Единственное допустимое упрощение - это ограничиться только северной широтой и восточной долготой.
Вторая проблема - есть готовый кусочек кода кусочно-линейной аппроксимации функции арктангенса -
www.dattalo.com/technical/software/…/arctan.asm
С нормальной точностью. Но он только для октета - 0-45 градусов. К нему еще надо дописать сведение 0-360 градусов через изменение знака и дополнение. Кроме того, чтобы избежать деления на ноль, надо написать отработку выколотых точек - их четыре - это когда цель и модель находятся точно на одной широте или долготе.
Почему я зациклился на этом? Да потому, что, если расчет азимута таки написать на пике, то дальше отлаженный на столе кусочек кода просто вставляется в готовый девайс - и можно лететь! 😃
Плавающую - это через подгружаемые библиотеки - там места может не хватить.
Было бы замечательно написать все в целочисленном варианте.
А этот Пикбейсик - бесплатный софт или как? Есть ли в нем симулятор? Где можно посмотреть описание?
Я брал бесплатно вот тут - это форум поклонников PIC:
www.microchip.ru/phorum/
Там дадут ссылочки и посоветуют.
Там отладочная оболочка неплохая есть. Но все равно - нужно соображать.
А этот Пикбейсик - бесплатный софт или как? Есть ли в нем симулятор? Где можно посмотреть описание?
Я может упустил что-то, но почему бы не написать на C ? Если отбросить извраты, но его базовая часть (логика, арифметика, простые типы) не сложнее Бейсика. К тому же есть тип double, библиотеки и нормальные комиляторы (PICC например). Контроллер лучше брать из серии PIC18, например PIC18F252 - у него 16k команд (32k bytes) и 1.5kb RAM, Serial, 5 ADC, Freq до 25 MHz или 40 Mhz с учетверителем такатовой. Цена около 250р. Программатор WinPic800, железо у меня Tait LPT.
Я может упустил что-то, но почему бы не написать на C ?
Я уже писал - если писать на С - надо писать всю программу. В т.ч. отработку прерываний, чтение и декодирование NMEA, декодирование входного РРМ-сигнала, формирование выходного РРМ-сигнала, отработку подстроечных параметров по пути перекладки, реверсу и коэффициенту передачи на серву руля.
Если на пиковском ассемблере или пикбейсике - надо написать только расчет азимута. Все остальное уже написано, ОТЛАЖЕНО и ИСПЫТАНО в полете!
Впрочем, возможно на С написать расчет азимута, откомпилить его в ассемблер пика и вставить кусок в программу. Но я тоже не потяну - С не знаю.
Хм… там книга у производителя энтого бэйсика и в оной упомянуто что он long intеger в 32 бита жует и с чем Вы хотите извращаться c 24-мя, косинус и сунус в библиотеке тоже вроде есть или точности не хватает?
Я уже писал - если писать на С - надо писать всю программу.
Так а много язычные проекты разве кто-то отменял ?
Написать на С функцию с нужным входом/выходом ( вплоть до Вход = Текст NMEA Широта/Долгота и Выход = азимут/расстояние до цели) откомпилить и встроить её в готовый проект.
Немного гемор связывать воедино, зато не нужно всё переписывать.
Впрочем, возможно на С написать расчет азимута, откомпилить его
Вот и я о том. А в помошники как минимум Прикупеца взять - он добрая душа потому как.
А нацеливать лучше на совместимый по выводам (к исходному проекту) пик18 - ресурсов больше. Наверняка Микрочип пик басиц компилит и для пик16 и пик18.
Я брал бесплатно вот тут - это форум поклонников PIC
Вовик, так а быть может не поленишься кинуть в меня ентим Микрочип пик басицом или ссылкой на него? Потому как у меня парочка есть, но какие-то они странные, меня не особо завели. Но они не Микрочип, который насколько я понял в МпЛаб ихний интегрится. А к МпЛабу я уже как-то привык.
Как всегда - недостатка в советах нет, но вот помоч - это всегда дифицит.
Ну я как обычно готов орать “ДАЙ” какую-либо исходники/прогу для пика или атмела уже тоже - купил мег несколько штук для опытов. А программатор Тритон у меня их одинаково хорошо шьёт. А для пика ещё и внутрисхемный программер/отладчик прикупил на Микрочипе через СГиба с очередной посылочкой - так что бета тестер/ковырятель исходного кода из меня хоть какой-то.
P.S.
2 Вано:
А про антенну BU353 - на самой антенне пайку якобы трогать нельзя. Толстый Проводок с ентой пайки в антенне протыкает модуль насквозь. Вот с обратной стороны платы его и надо отпаять. На моих фото выше в ентой теме как сейчас помню хорошо видна ента капля припоя на плате - гораздо больше и корявее всех остальных. Антенна кстати приклеена к экрану - енто доп гемор. Я когда (подантенный) экран отпаивал не снимая антенны подрезал нечаянно кондёр в уголке платы. Но без него тоже работает.
А потом уже можно и центральный антенки паять.
А кстати, сирф-3 можно заставить запомнить параметры обмена, или каждый раз после подачи питания нужно программировать ? Ну ту же скорость интерфейса и интервал обновления ? Или 10 Гц можно только по Сирф Бинари брать, а по NMEA он так и будет вещать - 4800 бод 1 Гц обновления ?
А то я выход нашёл, а вот вход найти не получилось почему-то. По минимуму достаточно, но программить только по USB пока что.
Ну ту же скорость интерфейса и интервал обновления ? Или 10 Гц можно только по Сирф Бинари брать, а по NMEA он так и будет вещать - 4800 бод 1 Гц обновления ?
Я эксперементировал с PocketLoox520, в нем именно sirf3 стоит. Мне удавалось его и в sirfbinary и в NMEA режимах переключать на скорости обмена до 57600. Вот по скорости обновления сказать ничего не могу, не пробовал.
Недавно прикупил модуль ET-301 для subj. Буду его мучать в ближайшее время.
А кстати, сирф-3 можно заставить запомнить параметры обмена, или каждый раз после подачи питания нужно программировать ?
В sirf3 используется статическая память, для хранения информации надо подпитывать модуль, используя батарейку на 3в, примерно такую же как в биосе компа (или в часах %). Время непрерывной работы такой батарейки измеряется в годах, потребление там мизерное.
В sirf3 используется статическая память, для хранения информации надо подпитывать модуль, используя батарейку на 3в, примерно такую же как в биосе компа (или в часах %). Время непрерывной работы такой батарейки измеряется в годах, потребление там мизерное.
Немного не так. Батарейка нужна для питания внутренних часов реального времени для обеспечения быстрого теплого и горячего рестарта.
Вовик, так а быть может не поленишься кинуть в меня ентим Микрочип пик басицом или ссылкой на него? о кода и.
Вот тут подробная инструкция по инсталляции бесплатного компилятора Пикбейсика поверх бесплатной MPLAB:
www.microchip.ru/phorum/read.php?f=2&i=131857&t=13…
Там есть все необходимые ссылки. Я делал все точно по ней - и все работало. MPLAB я брал версии 7.40.Важно правильно пути прописать, где будет компилируемый текст.
Исходники навигатора RCAP - в ссылке, данной мною выше в этой теме. Там основной текст и текст обработки прерываний. Если заинтересует - могу дать подробные коментарии по структуре программы и назначении переменных. Там текст Пикбейсика вперемешку с кодом на ассемблере - одно из достоинств языка.
Вот и я о том. А в помошники как минимум Прикупеца взять - он добрая душа потому как.
Был бы очень рад. Но у него пока другие интересы. Жаль.
Вовик, за ссылочку спасибо, весьма информативна.
Был бы очень рад. Но у него пока другие интересы. Жаль.
У всех другие интересы - трудно жить только электроникой/моделизмом.
Однако же надо не только деффчонок жарить и пиво зло употреблять, надо ещё и проги ковырять для само обучения/удовлетворения.
Одним словом, мне надо пик басиц для комплекта ставить. Правда, я думал, что он от Микрочип. А ентот ПикБасицПро от www.microengineeringlabs.com у меня уже был. Правда, к МпЛабу для построчной эмуляции я его так и не подвязал. Теперь буду пробовать. Ну и страничка с готовыми проектиками на ПикБасице тоже весьма содержательна, наверное.
P.S.
А в BU353 вроде вместо ентой батарейки СуперКонденсатор ионный стоит.
Ну типа - на какое-то время он питает бортовые часы для быстрого старта.
Хотя действительно ничего не стоит литиевую таблетку туда замонстрячить, если енто “какое-то” время окажется слишком малым.
Ну типа - на какое-то время он питает бортовые часы для быстрого старта.
Хотя действительно ничего не стоит литиевую таблетку туда замонстрячить, если енто “какое-то” время окажется слишком малым.
К модулю u-blox я примострячил CR1220 где то в апреле месяце. До сих пор все ОК. Она при включении девайса подзаряжается. Горячий рестарт очень полезен, когда в перевернутом полете GPS приемник теряет спутники. Пропадает всего около 5 секунд реальных координат после возврата планера в нормальное положение.
Цитата(Psw @ Dec 15 2006, 02:26)
Вот и я о том. А в помошники как минимум Прикупеца взять - он добрая душа потому как.
Был бы очень рад. Но у него пока другие интересы. Жаль.
Интересы не изменились. А вот время не хватает тотально. Даже спать приходится по 5-6 часов. Моделизм отдыхает. Работа блин все съедает… Щас сам пытаюсь потихоньку портировать свою GPS прогу на 18F252-PIC.