Телеметрия (часть 1)

Dikoy

smalltim, а кварц в Вашем автопилоте на 16?
Кроме PLL что-нибудь перенастраивалось?
У меня странный глюк при переносе прошивки с кея. Энумерация проходит успешно, чип определяется, даже специальный светодиодик загорается. Но первое же сообщение отправавляет чип в аут. Коммуникация падает, но чип не зависает…
Не могу понять в чём фишка. Пока только перенастроил PLL на другой кварц:
PLLCSR = ( ( (1<<PLLP2) | (0<<PLLP1) | (1<<PLLP0) ) | (1<<PLLE) )
Причём если сделать по ДШ, ( (1<<PLLP2) | (1<<PLLP1) | (0<<PLLP0) ), то нихрена не работает.
Может, Вам приходилось с таким сталкиваться?

smalltim

16 МГЦ.

#define PLLx24 ( (0<<PLLP2) | (0<<PLLP1) | (0<<PLLP0) )
#define PLLx12 ( (0<<PLLP2) | (0<<PLLP1) | (1<<PLLP0) )
#define PLLx08 ( (0<<PLLP2) | (1<<PLLP1) | (0<<PLLP0) )
#define PLLx06 ( (0<<PLLP2) | (1<<PLLP1) | (1<<PLLP0) )
#define PLLx04 ( (1<<PLLP2) | (0<<PLLP1) | (0<<PLLP0) )
#define PLLx03 ( (1<<PLLP2) | (0<<PLLP1) | (1<<PLLP0) )
#define PLLx04_8 ( (1<<PLLP2) | (1<<PLLP1) | (0<<PLLP0) )
#define PLLx02 ( (1<<PLLP2) | (1<<PLLP1) | (1<<PLLP0) )

//! @brief Start the PLL at only 48 MHz, regarding CPU frequency
//! Start the USB PLL with clockfactor
//! clockfactor can be PLLx24, PLLx12, PLLx08
//! PLLx06, PLLx04, PLLx03
#define Start_pll(clockfactor) \
(PLLCSR = ( clockfactor | (1<<PLLE) ))
//! return 1 when PLL locked
#define Is_pll_ready() (PLLCSR & (1<<PLOCK) )
//! Test PLL lock bit and wait until lock is set
#define Wait_pll_ready() while (!(PLLCSR & (1<<PLOCK)))
//! Stop the PLL
#define Stop_pll() (PLLCSR &= (~(1<<PLLE)),PLLCSR=0 )

// Start the PLL in autofactor mode
// regarding FOSC define
#if (FOSC==2000)
//! Start the PLL in autofactor mode
//! regarding FOSC define
#define Pll_start_auto() Start_pll(PLLx24)
#elif (FOSC==4000)
#define Pll_start_auto() Start_pll(PLLx12)
#elif (FOSC==6000)
#define Pll_start_auto() Start_pll(PLLx08)
#elif (FOSC==8000)
//! Start the PLL in autofactor mode
//! regarding FOSC define
#define Pll_start_auto() Start_pll(PLLx06)
#elif (FOSC==12000)
#define Pll_start_auto() Start_pll(PLLx04)
#elif (FOSC==16000)
#define Pll_start_auto() Start_pll(PLLx03)
#elif (FOSC==20000)
#define Pll_start_auto() Start_pll(PLLx04_8)
#elif (FOSC==24000)
#define Pll_start_auto() Start_pll(PLLx02)
#else
#error “FOSC should be defined in config.h”
#endif

Dikoy

Да, это то понятно. Но есть нюанс (с)
Для 128* и 64* PLLx03 имеет разные значения.
#if defined (__AT90USB1287__) || defined (__AT90USB1286__)
#define PLLx03 ( (1<<PLLP2) | (0<<PLLP1) | (1<<PLLP0) )
#else // __AT90USB647__, __AT90USB646__
#define PLLx03 ( (1<<PLLP2) | (1<<PLLP1) | (0<<PLLP0) )
#endif
А в ДШ про это, конечно же, ни слова.
Вот, народ тоже парился: www.avrfreaks.net/index.php?name=PNphpBB2&file=pri…

В общем, победил. Теперь всё работает в моей платке. Завтра буду прерывания писать - каналы газа и направления добавлять.

smalltim

Сделал давно обещанную прошивку телеметрии версии 233 с поднятыми буковками, строкой GPS и новым переключением между режимами.
Забирать тут: smalltim.ru/tele/firmware/

Pa5ha

Господа, прощу прощения, что пропал.
Вот, прилагаю фото своих датчиков, чтоб не писать много слов и чтоб не возникло разнотолков. + имеется dpip мега и микросхема, которая с видео работает (не помню как зовут) тоже в dip корпусе.
Вопросов два: как подключить 5010dp ибо ничего общего я у него в датащите не нашел с тем что на фото платы smalltim-а, и нет ли уже готовой разводки проверенной у кого-либо?

smalltim, а вот Вы предлагали готовую плату - это по почте? Блин, согласится что ли 😃 А то опять ведь руки не скоро дойдут т.к. столько всего сделать надо.

Psw

Не юзал ничего.
По Описанию похоже на бета версию. Ну и функционально - вроде смалтим больше уже написал, хотя на атмеле экран конечно меньшего разрешения .
Ну и мысли вслух - всё-таки наверное большинство самодельщиков понимало спустя год-два после начала проекта - что проц слабый, памяти/ног мало, графика на спец микросхемах будет лучше и тд.
Вспоминается призыв Арти перейти на АРМ

Artie
Psw:

Ну и мысли вслух - всё-таки наверное большинство самодельщиков понимало спустя год-два после начала проекта - что проц слабый, памяти/ног мало, графика на спец микросхемах будет лучше и тд.
Вспоминается призыв Арти перейти на АРМ

Воообще говоря, это вопрос диалектиццкий. - В том смысле, что если бы я затевал такую разработку сейчас заново, то совершенно точно выбрал бы какой-нибудь камень помощнее, чуть лучше заточенный под писание на С, под плавучку, и - главное - с более богатой периферией.
И наложение картинки сделал бы полу- или совсем аппаратным (на какой-нибудь ПЛИСине)…
Однако, переход на другую платформу означает потерю большинства уже готовых наработок (не в плане “ноухау”, а вульгарно по количеству уже написанного и отлаженного кода), так что на такой шаг лично меня сейчас может сподвигнуть только какой-то категорический “упор” по производительности, делающий невозможной реализацию некоей очень уж интересной фичи…

В то же время, доводя потихонечку свой исходный проект, я где-то с полгода назад обнаружил в той же меге изрядные “унутренние резервы” 😉 в плане временнЫх ресурсов (даже при полноэкранном OSD), в результате чего упихал в один “отображательный” кристалл (помимо исходного собственно рисования, обсчета всего “электричества”, работы с мультиплексовским приемником, и так далее) - и обработку бародатчиков, и передачу цифровой телеметрии внутри видеосигнала, и вывод отладочной информации по последовательному порту, и разную настройку/калибровку с передатчика)…
Подозреваю, что при желании туда же можно достаточно свободно уместить и всю работу с GPS’ом, но поскольку второй кристалл у меня все равно уже стоит, то заниматься этим ради “чистого искусства” мне просто лень.

PS: Если кому-нибудь будет охота этим заморачиваться, - могу отдать очередную версию сорсов под обещание делиться дальнейшими результатами работы с “широкой общественностью”.

smalltim

Выложил исходники самой свежей прошивки, v233, для платы телеметрии и сопутствующее добро вот тут: smalltim.ru/tele/source/

Исходный код прошивки v233 для платы телеметрии:
.RAR, 88 kB

Содержимое файла:

  • smalltim.asm - главный модуль
  • _display.asm - функции формирования текста для отображения
  • _math.asm - математические функции
  • _gps.asm - функции обработки NMEA строк
  • *.inc - файлы, хранящие предрасчитанные данные, включаемые в тело программы
  • font_gen2.exe - утилита, позволяющая редактировать файлы со шрифтами для телеметрии

Родная среда программирования - AVR Studio4, программатор и соответствующий софт - AS4/ASISP1120 от Argussoft (www.argussoft.ru).
Ограничений на распространение и использование исходников нет.
Поддержка по использованию исходников не гарантируется.

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

BigDaddy

Интересных идей и по-больше свободного времени тебе, Тимофей, для дальнейших разработок!
Ну а целеустемленности и настойчивости тебе не занимать…

Хвост_Слона

Smalltim огромное спасибо. А куда из архива сбежал “smalltim.asm - главный модуль”? Или это только мне не досталось? (Блин, как обычно 😦( )

DIM81

Есть несколько вопросов по телеметрии Smalltim:

  1. При питании телеметрии, управления самолета, и видеопередатчика от одной батареи, при включении двигателя 2213, буквы начинают дергатся вверх (аж на пол экрана). Причем чем больше обороты, тем сильнее амплитуда и частота дергания, в плоть до того, что информация становится не читаемая. При этом сама картинка с камеры остается нормальной (камера 191, передатчик 900 мГ, 500 мвт с ренжвидео). Если подключить телеметрию к отдельной батарее, то работа двигателя не влияет на телеметрию вообще. Как лечить?
    Попробывал запитать телеметрию от одной и тойже батареи, но не с балансировочного разъема, а от силового (тоесть показывает только общее U батареи). Причем подводящий провод скрутил как витую пару. Помехи остались, но стали меньше. на пол экрана уже буквы не прыгают, но при полном газу всеравно дергаются так, что читать не возможно. Может кондер какой поставить? Или еще что?

  2. При включении GPS (самоль был на подоконнике) при режиме 3d - ловит 4 спутника, правда не устойчиво, но когда режим 3d - высоту по GPS показывает - минус 295 м (дрейф от -295 до -300 м) это глюк приемника, или неустойчивый сигнал?

smalltim
  1. Надо для видео использовать экранированный провод, а провода питания телеметрии пропустить в 3-4 оборота через ферритовое кольцо.
  2. GPS модуль на вашем балконе ловит спутники плохо, поэтому, пока найдены меньше 4 спутников (режим 2D), телеметрия запоминает исходную высоту над уровнем моря (неправильную) как стартовую высоту. Надо, как только модуль устойчиво найдет 4 и больше спутников, отключить телеметрию на пару секунд от питания и вернуть обратно. После этого модуль найдет все спутники быстро, в режиме “теплого старта”, и телеметрия запомнит уже не 2D, а правильные 3D координаты в качестве стартовых.
    В поле таких проблем обычно не бывает, там 8-10 спутников - в порядке вещей.
DIM81

Про ферритовое кольцо-попробуем.
Офф топ:
Телефон Асус 750 при расположении на подоконнике (там же, где и самоль) тоже ловит 3-4 спутника, чуть с окна уносишь и сигнал пропадает практически сразу. А Митак Мио A702, даже в середине комнаты, если окно чуть приоткрыто, ловит 6 спутников стабильно!!! Интерестно, что у него за приемник GPS стоит

smalltim

>Про ферритовое кольцо-попробуем.
А экранированный провод? 😃
Надо использовать обычный видеокабель тюльпан-тюльпан для подключения компуков, DVD и т.д. к телевизору.
Кабель раздербанить при необходимости, экран на землю на телеметрическом разъеме, питание камеры - плюс и земля - отдельной парой проводов.

Модуль EM406A, который в комплекте, вообще-то, отличается завидной чувствительностью. Видимо, в КПК у Вас вообще что-то очень крутое стоит.

DIM81
smalltim:

А экранированный провод?

Если бы дело было в видеопроводе, то картинка (основная) с камеры тоже должна была бы дергатся, так около 4 см незащищенного экраном провода на конце (где разъем в передатчик).
С телеметрии у меня окогл 6 см провода до передатчика.
Но конечно же заэкранирую 😃

maloii
DIM81:

Есть несколько вопросов по телеметрии Smalltim:

  1. При питании телеметрии, управления самолета, и видеопередатчика от одной батареи, при включении двигателя 2213, буквы начинают дергатся вверх (аж на пол экрана). Причем чем больше обороты, тем сильнее амплитуда и частота дергания, в плоть до того, что информация становится не читаемая. При этом сама картинка с камеры остается нормальной (камера 191, передатчик 900 мГ, 500 мвт с ренжвидео). Если подключить телеметрию к отдельной батарее, то работа двигателя не влияет на телеметрию вообще. Как лечить?
    Попробывал запитать телеметрию от одной и тойже батареи, но не с балансировочного разъема, а от силового (тоесть показывает только общее U батареи). Причем подводящий провод скрутил как витую пару. Помехи остались, но стали меньше. на пол экрана уже буквы не прыгают, но при полном газу всеравно дергаются так, что читать не возможно. Может кондер какой поставить? Или еще что?

  2. При включении GPS (самоль был на подоконнике) при режиме 3d - ловит 4 спутника, правда не устойчиво, но когда режим 3d - высоту по GPS показывает - минус 295 м (дрейф от -295 до -300 м) это глюк приемника, или неустойчивый сигнал?

Могу предположить что провод до антенны(датчик антенны, ппм) у вас идет с землей на OSD. попробуйте просто один провод сигнала, земля у вас и так идет от батареи на приемник и на OSD. Если приемник соединить с телеметрией землей то получается петля по земле и у вас будет дрожать экран даже от дребезга серв. Делайте землю звездой.

Схемы земель

как надо

OSD           приемник
   \            /
     \        /
       \    /
         \/
          |
          |
          |
          |
   Батарейка

как у вас скорей всего

OSD--------------приемник
    \            /
      \        /
        \    /
          \/
           |
           |
           |
           |
    Батарейка
DIM81
maloii:

Могу предположить что провод до антенны(датчик антенны, ппм) у вас идет с землей на OSD

В момент проверки провод от приемника вообще подключин не был, кстати, обратите внимание, что самый ужас творился при питании телеметрии от балансирного разъема -дергания букв были даже при малом газу.
Вопрос а если кроме ферритового кольца, параллельно питанию воткнуть электролит мFd на 100 ведь это вообще СL фильтр получается, и поидее помех вообще не должно быть?

И еще вопросик - приемник у меня футаба ПСМ, я так понимаю его вообще нет смысла подключать, т.к. адекватную оценку качества сигнала с него не получить? Или при отключенном файл-сейф можно?

maloii
DIM81:

В момент проверки провод от приемника вообще подключин не был, кстати, обратите внимание, что самый ужас творился при питании телеметрии от балансирного разъема -дергания букв были даже при малом газу.
Вопрос а если кроме ферритового кольца, параллельно питанию воткнуть электролит мFd на 100 ведь это вообще СL фильтр получается, и поидее помех вообще не должно быть?

И еще вопросик - приемник у меня футаба ПСМ, я так понимаю его вообще нет смысла подключать, т.к. адекватную оценку качества сигнала с него не получить? Или при отключенном файл-сейф можно?

Может фотку выложите всего вместе, просто по моему опыту что то именно с землей, видно где то, что то Вы не так подключили. Или нарисуйте схему как все подключенно. Еще возможна ситуация с камерой, плохие камеры и ССИ (LM1881) не супер дружат, проскок может наблюдадся при наведении на белое или может просадка питания. Попробуйте видео откуданить взять для теста(фотик, видео плеер и п.д.).