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

Alllex
smalltim:

Немного эротики:


Плата автопилота голая


Плата аввтопилота рядом с телеметрией


Автопилот и телеметрия в соитии

Это Кит такой?

smalltim

Это не кит, это значит, что автопилот может работать как самоcтоятельно, так и на пару с телеметрией.

Новости по телеметрии:

  1. Кордик для расчета высоты по давлению почти закончен. За ним - универсальная прошивка под 1гц/5гц GPS модули.
  2. MPXA4115A снимаются с производства. Временная замена - перехожу на MPXAZ61115A6U
  3. После этого MPXAZ61115A6U меняется на (в 4 раза!) более компактный, легкий и не такой дорогой MP3H6115A6U/T1, с переразводкой платы под новый корпус датчика и с учетом накопленного опыта эксплуатации - доработки по части обработки видео и захвата PPM с приемников.
    Жаль, что нет более компактных аналогов MPXV5010DP/GP.
Серый_Волк
V_Labanauskas:

Esli cestno skazat, to neponravilos.
Staraja versija lucse bila (informativnei) hot karta i naiznanku bila.
Seicias glavnie parametri nahodiatsia na fone neba i ih nevidno.
Krasivie vesci nevsegda udobni v ispolzovanii.😃

“Привычка свыше нам дана, замена счастию она.”
А.С.Пушкин, “Евгений Онегин”

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

smalltim

>Kogda signal propadaet nenadolgo, telemetrija dumaet cto ja rucku diorgaju i perekliciaet rezimi sama.

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

smalltim

Ура, окончательно победил кордиковый логарифм.
Первоначальный вариант как-то причудливо себя вел - не сходился во всем нужном мне диапазоне. И был в 2 раза тяжелее.
Поскольку нормального кордика для логарифма хрен где достанешь (формулы я отрыл в книжке хрен знает какого года в Google Books), привожу сишный код, который у меня вышел. Вдруг кому пригодится.

В табличке хранятся значения log10(1+2^-i) для i от 1 до 16, умноженные на 32768.
Сменой размера таблички меняется точность - хоть до 64-битных чисел. Сменой основания логарифма в табличке меняется основание искомого логарифма - того, что ищет цикл.

В цикле прилично сдвигов и сложений, но всего на 16-битное число нужно 16 оборотов цикла.

Код на Си выглядит так:

void cordic_log10(long lx, long * ll)
{
int i,j;
// initialization
long x,z;
long xd;
z=0;
x=32768;

for (i=0;i<16;i++) // CORDIC cycle
{
xd=x;
for(j=0;j<i+1;j++)
{
xd>>=1;
}
if(x+xd<=lx)
{
x+=xd;
z+=log_table1[i];
}
}
*ll=z;
}

Это фиксированная точка с 15 разрядами после запятой (1.0 = 32768)

Точность - лучше сотой доли процента:

 program started
 log_table1[ 0]=  5770
 log_table1[ 1]=  3176
 log_table1[ 2]=  1676
 log_table1[ 3]=   863
 log_table1[ 4]=   438
 log_table1[ 5]=   221
 log_table1[ 6]=   111
 log_table1[ 7]=    55
 log_table1[ 8]=    28
 log_table1[ 9]=    14
 log_table1[10]=     7
 log_table1[11]=     3
 log_table1[12]=     2
 log_table1[13]=     1
 log_table1[14]=     0
 log_table1[15]=     0


 x= 1.00000, cordic_log10(x) = 0.00000,  log10(x) = 0.00000
 x= 1.01000, cordic_log10(x) = 0.00433,  log10(x) = 0.00432
 x= 1.02000, cordic_log10(x) = 0.00858,  log10(x) = 0.00860
 x= 1.03000, cordic_log10(x) = 0.01285,  log10(x) = 0.01284
 x= 1.04000, cordic_log10(x) = 0.01706,  log10(x) = 0.01703
 x= 1.05000, cordic_log10(x) = 0.02121,  log10(x) = 0.02119
 x= 1.06000, cordic_log10(x) = 0.02530,  log10(x) = 0.02531
 x= 1.07000, cordic_log10(x) = 0.02939,  log10(x) = 0.02938
 x= 1.08000, cordic_log10(x) = 0.03345,  log10(x) = 0.03342
 x= 1.09000, cordic_log10(x) = 0.03748,  log10(x) = 0.03743
 x= 1.10000, cordic_log10(x) = 0.04138,  log10(x) = 0.04139
 x= 1.11000, cordic_log10(x) = 0.04535,  log10(x) = 0.04532
 x= 1.12000, cordic_log10(x) = 0.04926,  log10(x) = 0.04922
 x= 1.13000, cordic_log10(x) = 0.05304,  log10(x) = 0.05308
 x= 1.14000, cordic_log10(x) = 0.05692,  log10(x) = 0.05690
 x= 1.15000, cordic_log10(x) = 0.06073,  log10(x) = 0.06070
 x= 1.16000, cordic_log10(x) = 0.06448,  log10(x) = 0.06446
 x= 1.17000, cordic_log10(x) = 0.06821,  log10(x) = 0.06819
 x= 1.18000, cordic_log10(x) = 0.07190,  log10(x) = 0.07188
 x= 1.19000, cordic_log10(x) = 0.07559,  log10(x) = 0.07555
 x= 1.20000, cordic_log10(x) = 0.07916,  log10(x) = 0.07918
 x= 1.21000, cordic_log10(x) = 0.08279,  log10(x) = 0.08279
 x= 1.22000, cordic_log10(x) = 0.08636,  log10(x) = 0.08636
 x= 1.23000, cordic_log10(x) = 0.08994,  log10(x) = 0.08991
 x= 1.24000, cordic_log10(x) = 0.09344,  log10(x) = 0.09342
 x= 1.25000, cordic_log10(x) = 0.09692,  log10(x) = 0.09691
 x= 1.26000, cordic_log10(x) = 0.10040,  log10(x) = 0.10037
 x= 1.27000, cordic_log10(x) = 0.10382,  log10(x) = 0.10380
 x= 1.28000, cordic_log10(x) = 0.10724,  log10(x) = 0.10721
 x= 1.29000, cordic_log10(x) = 0.11060,  log10(x) = 0.11059
 x= 1.30000, cordic_log10(x) = 0.11398,  log10(x) = 0.11394
 x= 1.31000, cordic_log10(x) = 0.11731,  log10(x) = 0.11727
 x= 1.32000, cordic_log10(x) = 0.12061,  log10(x) = 0.12057
 x= 1.33000, cordic_log10(x) = 0.12387,  log10(x) = 0.12385
 x= 1.34000, cordic_log10(x) = 0.12717,  log10(x) = 0.12710
 x= 1.35000, cordic_log10(x) = 0.13037,  log10(x) = 0.13033
 x= 1.36000, cordic_log10(x) = 0.13358,  log10(x) = 0.13354
 x= 1.37000, cordic_log10(x) = 0.13675,  log10(x) = 0.13672
 x= 1.38000, cordic_log10(x) = 0.13989,  log10(x) = 0.13988
 x= 1.39000, cordic_log10(x) = 0.14307,  log10(x) = 0.14301
 x= 1.40000, cordic_log10(x) = 0.14618,  log10(x) = 0.14613
 x= 1.41000, cordic_log10(x) = 0.14923,  log10(x) = 0.14922
 x= 1.42000, cordic_log10(x) = 0.15231,  log10(x) = 0.15229
 x= 1.43000, cordic_log10(x) = 0.15536,  log10(x) = 0.15534
 x= 1.44000, cordic_log10(x) = 0.15839,  log10(x) = 0.15836
 x= 1.45000, cordic_log10(x) = 0.16141,  log10(x) = 0.16137
 x= 1.46000, cordic_log10(x) = 0.16437,  log10(x) = 0.16435
 x= 1.47000, cordic_log10(x) = 0.16733,  log10(x) = 0.16732
 x= 1.48000, cordic_log10(x) = 0.17026,  log10(x) = 0.17026
 x= 1.49000, cordic_log10(x) = 0.17325,  log10(x) = 0.17319
 x= 1.50000, cordic_log10(x) = 0.17609,  log10(x) = 0.17609
 x= 1.51000, cordic_log10(x) = 0.17896,  log10(x) = 0.17898
 x= 1.52000, cordic_log10(x) = 0.18185,  log10(x) = 0.18184
 x= 1.53000, cordic_log10(x) = 0.18466,  log10(x) = 0.18469
 x= 1.54000, cordic_log10(x) = 0.18753,  log10(x) = 0.18752
 x= 1.55000, cordic_log10(x) = 0.19034,  log10(x) = 0.19033
 x= 1.56000, cordic_log10(x) = 0.19315,  log10(x) = 0.19312
 x= 1.57000, cordic_log10(x) = 0.19589,  log10(x) = 0.19590
 x= 1.58000, cordic_log10(x) = 0.19864,  log10(x) = 0.19866
 x= 1.59000, cordic_log10(x) = 0.20139,  log10(x) = 0.20140
 x= 1.60000, cordic_log10(x) = 0.20410,  log10(x) = 0.20412
 x= 1.61000, cordic_log10(x) = 0.20685,  log10(x) = 0.20683
 x= 1.62000, cordic_log10(x) = 0.20953,  log10(x) = 0.20952
 x= 1.63000, cordic_log10(x) = 0.21222,  log10(x) = 0.21219
 x= 1.64000, cordic_log10(x) = 0.21484,  log10(x) = 0.21484
 x= 1.65000, cordic_log10(x) = 0.21747,  log10(x) = 0.21748
 x= 1.66000, cordic_log10(x) = 0.22012,  log10(x) = 0.22011
 x= 1.67000, cordic_log10(x) = 0.22272,  log10(x) = 0.22272
 x= 1.68000, cordic_log10(x) = 0.22534,  log10(x) = 0.22531
 x= 1.69000, cordic_log10(x) = 0.22787,  log10(x) = 0.22789
 x= 1.70000, cordic_log10(x) = 0.23044,  log10(x) = 0.23045
 x= 1.71000, cordic_log10(x) = 0.23300,  log10(x) = 0.23300
 x= 1.72000, cordic_log10(x) = 0.23557,  log10(x) = 0.23553
 x= 1.73000, cordic_log10(x) = 0.23807,  log10(x) = 0.23805
 x= 1.74000, cordic_log10(x) = 0.24057,  log10(x) = 0.24055
 x= 1.75000, cordic_log10(x) = 0.24304,  log10(x) = 0.24304
 x= 1.76000, cordic_log10(x) = 0.24551,  log10(x) = 0.24551
 x= 1.77000, cordic_log10(x) = 0.24799,  log10(x) = 0.24797
 x= 1.78000, cordic_log10(x) = 0.25043,  log10(x) = 0.25042
 x= 1.79000, cordic_log10(x) = 0.25287,  log10(x) = 0.25285
 x= 1.80000, cordic_log10(x) = 0.25525,  log10(x) = 0.25527
 x= 1.81000, cordic_log10(x) = 0.25769,  log10(x) = 0.25768
 x= 1.82000, cordic_log10(x) = 0.26007,  log10(x) = 0.26007
 x= 1.83000, cordic_log10(x) = 0.26245,  log10(x) = 0.26245
 x= 1.84000, cordic_log10(x) = 0.26486,  log10(x) = 0.26482
 x= 1.85000, cordic_log10(x) = 0.26718,  log10(x) = 0.26717
 x= 1.86000, cordic_log10(x) = 0.26950,  log10(x) = 0.26951
 x= 1.87000, cordic_log10(x) = 0.27188,  log10(x) = 0.27184
 x= 1.88000, cordic_log10(x) = 0.27417,  log10(x) = 0.27416
 x= 1.89000, cordic_log10(x) = 0.27649,  log10(x) = 0.27646
 x= 1.90000, cordic_log10(x) = 0.27878,  log10(x) = 0.27875
 x= 1.91000, cordic_log10(x) = 0.28107,  log10(x) = 0.28103
 x= 1.92000, cordic_log10(x) = 0.28333,  log10(x) = 0.28330
 x= 1.93000, cordic_log10(x) = 0.28558,  log10(x) = 0.28556
 x= 1.94000, cordic_log10(x) = 0.28784,  log10(x) = 0.28780
 x= 1.95000, cordic_log10(x) = 0.29007,  log10(x) = 0.29003
 x= 1.96000, cordic_log10(x) = 0.29227,  log10(x) = 0.29226
 x= 1.97000, cordic_log10(x) = 0.29449,  log10(x) = 0.29447
 x= 1.98000, cordic_log10(x) = 0.29669,  log10(x) = 0.29667
 x= 1.99000, cordic_log10(x) = 0.29889,  log10(x) = 0.29885
slides

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

smalltim

Лучше сделать так, чтобы мимо непосредственно датчика ничего не дуло.

Достаточно плотно закрыт - этот не страшно до тех пор, пока “плотно” не превращается в “герметично” 😃

Dikoy

А я вот сегодня отрабатывал полёт по кругу… Жадность фраера сгубила… 😦
Погода была отличная, тихо. А когда приехал на поле поднялся ветер. Ну, думаю, не зря же я 25 км сюда пилил?
Запустил аэроплан.
Ветром его стало сносить, эффективности руля направления по прежнему не хватает. Вообще, для разворота блинчиком руль должен быть аки весло.
Короче, дабы не потерять модель, переключил на ручное и на пределе видимости прижал к земле… Оторвало крыло, поломало кабину. Потерь в оборудовании нет.
В снег плюхаться было приятнее… 😦
Сижу, воняю клеем…

Artie
Dikoy:

Короче, дабы не потерять модель, переключил на ручное и на пределе видимости прижал к земле…

А что случилось с видео ? Пошли такие помехи, что дальше нельзя было лететь вообще ?

… Просто - из моего личного опыта - если начинаются какие-то проблемы (включая и проблемы с видео; - до тех пор, пока они не переходят в полное отсутствие картинки), то не стоит бросать очки и пытаться садиться по “виду с боку”. - Уже на двух-трех сотнях метров удаления ориентация самолета не читается, а время, которое уходит только на то, чтобы найти аппарат в небе, лучше потратить на борьбу с ветром/помехами/тяготением/etc.
Я в результате для себя вывел такой закон: “Начал летать по камере - по камере и продолжай, пока в очках хоть что-нибудь видно”.

Dikoy
Artie:

А что случилось с видео ? Пошли такие помехи, что дальше нельзя было лететь вообще ?

У меня нет видео 😃 У меня свой собственный автопилот, облётываемый с перерывами аж с января. Я хотел отработать повороты на автомате, поднял самолёт в воздух, а т.к. летел он плоско, то ветер (а он на высоте 5м уже был значителен) стал резво его сносить. Метрах на 100 я и решил его уронить.
Вообще, можно было бы побороться и посадить, но я последний раз летал ещё в феврале, опыт с тех пор пропился, а FMS почему-то очень плохо работает через мою новую ПРОФЕССИОНАЛЬНУЮ аудиокарту - при калибровке столбики колбасит на 2/3 шкалы просто так (на ноуте с AC97 всё ОК). И потренироваться не получилось… Вот и результат 😦 Просто потерялась моторика движений, из-за этого такой жёсткий краш. Хорошо хоть автопилот удержал его в горизонте и он вошёл полого, а не морковкой.

ReGet
Dikoy:

FMS почему-то очень плохо работает через мою новую ПРОФЕССИОНАЛЬНУЮ аудиокарту

Соберите USB-шнурок, делов на 20 минут, а пользы на пол жизни 😃

Artie
Dikoy:

У меня нет видео 😃

А, тогда прошу пардону.
… Просто я как-то не сообразил, что телеметрия может быть и в отрыве от видео. - Стереотипы - великая сила… 😁

serj

А я вот заметил что на rс-cam.ru телеметриями Тимофея приторговывают…
Лицензионные отчисления-то есть? 😃

Dikoy
ReGet:

Соберите USB-шнурок, делов на 20 минут, а пользы на пол жизни

А это как? Насколько понимаю, там на выходе обычный ППМ сигнал, и всё…

ПС. Всё забываю спросить, как у местных обитателей устрона трубка ПНВД (заборник)? Есть ли темки по этому вопросу, фотки, линки?

ReGet
Dikoy:

А это как? Насколько понимаю, там на выходе обычный ППМ сигнал, и всё…

Именно ppm и нужен - www.rcdesign.ru/articles/electronics/rcusb
мега8, регулятор и транзистор… работает как часы

smalltim

>Всё забываю спросить, как у местных обитателей устрона трубка ПНВД (заборник)? Есть ли темки по этому вопросу, фотки, линки?

У меня - тонкостенная трубка произвольного диаметра, смотрящая в набегающий поток воздуха.

ReGet
smalltim:

>Всё забываю спросить, как у местных обитателей устрона трубка ПНВД (заборник)? Есть ли темки по этому вопросу, фотки, линки?

У меня - тонкостенная трубка произвольного диаметра, смотрящая в набегающий поток воздуха.

Хороший способ - антенну от ненужного передатчика разобрать и подобрать подходящую по диаметру к трубке часть

Degreez
smalltim:

Ура, окончательно победил кордиковый логарифм.
Первоначальный вариант как-то причудливо себя вел - не сходился во всем нужном мне диапазоне. И был в 2 раза тяжелее.
Поскольку нормального кордика для логарифма хрен где достанешь (формулы я отрыл в книжке хрен знает какого года в Google Books), привожу сишный код, который у меня вышел. Вдруг кому пригодится.

Как-то помнится, слышал, что есть библиотека с фиксированной точкой для AVR под IAR. Библиотека вроде называется “Q-математика” или “IQ-математика”.

Подобной библиотекой пользуюсь для TMS320. Классная вещь. 😉 Все шустренько считается, и синусы и логорифмы и корни… только к “Q” формату надо все приводить, ну и привыкнуть к нему. А суть одна, все считается целочисленно со сдвигами.

Dikoy
ReGet:

мега8, регулятор и транзистор… работает как часы

А вот RC цепь на ресет они зря не повесили…
Работает лучше, чем через аудиокарту? FMS его поймёт?

smalltim:

У меня - тонкостенная трубка произвольного диаметра, смотрящая в набегающий поток воздуха.

И как работает?..
Просто у меня целая книжка есть (в библиотеке без права выноса) по конструкциям ПНВД, страниц 300. Большая часть по сверхзвуковым, конечно, но есть и старьё.
Так вот самой удачной конструкцией там называют два цилиндра с отношением диаметров 1/10. Больший цилиндр на входе занимает 2/3 длины. Меньший на выходе, имеет сквозное отверстие назад и от середины перпендикулярно отведена трубка с давлением. То есть такая сквознвая подзорная труба с боковым соском. Никто не пробовал что-то подобное использовать?

Я сейчас использую трубу от игрушечного теплохода 😃 Пластиковая в форме буквы Г имеет заборник бОльшего диаметра, чем основание. По диаметру - как раз к трубке от капельницы. Стоит на верху кабины.