![]() |
Специальные цены | новые товары | ![]() |
![]() |
![]() |
Тема раздела Полеты по камере, телеметрия в категории Cамолёты - Общий; Сообщение от Alllex Нифига себе куда ускакали, ну и темпы. Я попробую реабилитироваться. Какая досадная ошибка с моей стороны, итак ...
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.
Easy Star so vzliotnoi massoi ~1400g uze neletit, stanovitsia meskom s derm...![]()
>Seicias glavnie parametri nahodiatsia na fone neba i ih nevidno.
Есть же теперь облегченный режим на экране. Всё так же, как было, только карта не наизнанку![]()
Это не кит, это значит, что автопилот может работать как самоcтоятельно, так и на пару с телеметрией.
Новости по телеметрии:
1. Кордик для расчета высоты по давлению почти закончен. За ним - универсальная прошивка под 1гц/5гц GPS модули.
2. MPXA4115A снимаются с производства. Временная замена - перехожу на MPXAZ61115A6U
3. После этого MPXAZ61115A6U меняется на (в 4 раза!) более компактный, легкий и не такой дорогой MP3H6115A6U/T1, с переразводкой платы под новый корпус датчика и с учетом накопленного опыта эксплуатации - доработки по части обработки видео и захвата PPM с приемников.
Жаль, что нет более компактных аналогов MPXV5010DP/GP.
>Kogda signal propadaet nenadolgo, telemetrija dumaet cto ja rucku diorgaju i perekliciaet rezimi sama.
Это мой глючок - когда ручка не в максимуме, я не обнуляю "таймер нахождения ручки в максимуме".
Сегодня поправлено, в следующей прошивке будет вместе со всем остальным.
Ура, окончательно победил кордиковый логарифм.
Первоначальный вариант как-то причудливо себя вел - не сходился во всем нужном мне диапазоне. И был в 2 раза тяжелее.
Поскольку нормального кордика для логарифма хрен где достанешь (формулы я отрыл в книжке хрен знает какого года в Google Books), привожу сишный код, который у меня вышел. Вдруг кому пригодится.
В табличке хранятся значения log10(1+2^-i) для i от 1 до 16, умноженные на 32768.
Сменой размера таблички меняется точность - хоть до 64-битных чисел. Сменой основания логарифма в табличке меняется основание искомого логарифма - того, что ищет цикл.
В цикле прилично сдвигов и сложений, но всего на 16-битное число нужно 16 оборотов цикла.
Код на Си выглядит так:
Это фиксированная точка с 15 разрядами после запятой (1.0 = 32768)Код: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; }
Точность - лучше сотой доли процента:
Код: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
Вопрос по бародатчику. Плата стоит в фюзеляже, который достаточно плотно закрыт. Через вентиляционные окна мотор гонит поток воздуха мимо телеметрии. Скажется ли это на точности отображения баро ?
Лучше сделать так, чтобы мимо непосредственно датчика ничего не дуло.
Достаточно плотно закрыт - этот не страшно до тех пор, пока "плотно" не превращается в "герметично"![]()
А я вот сегодня отрабатывал полёт по кругу... Жадность фраера сгубила...
Погода была отличная, тихо. А когда приехал на поле поднялся ветер. Ну, думаю, не зря же я 25 км сюда пилил?
Запустил аэроплан.
Ветром его стало сносить, эффективности руля направления по прежнему не хватает. Вообще, для разворота блинчиком руль должен быть аки весло.
Короче, дабы не потерять модель, переключил на ручное и на пределе видимости прижал к земле... Оторвало крыло, поломало кабину. Потерь в оборудовании нет.
В снег плюхаться было приятнее...![]()
Сижу, воняю клеем...
А что случилось с видео ? Пошли такие помехи, что дальше нельзя было лететь вообще ?
... Просто - из моего личного опыта - если начинаются какие-то проблемы (включая и проблемы с видео; - до тех пор, пока они не переходят в полное отсутствие картинки), то не стоит бросать очки и пытаться садиться по "виду с боку". - Уже на двух-трех сотнях метров удаления ориентация самолета не читается, а время, которое уходит только на то, чтобы найти аппарат в небе, лучше потратить на борьбу с ветром/помехами/тяготением/etc.
Я в результате для себя вывел такой закон: "Начал летать по камере - по камере и продолжай, пока в очках хоть что-нибудь видно".
У меня нет видеоУ меня свой собственный автопилот, облётываемый с перерывами аж с января. Я хотел отработать повороты на автомате, поднял самолёт в воздух, а т.к. летел он плоско, то ветер (а он на высоте 5м уже был значителен) стал резво его сносить. Метрах на 100 я и решил его уронить.
Вообще, можно было бы побороться и посадить, но я последний раз летал ещё в феврале, опыт с тех пор пропился, а FMS почему-то очень плохо работает через мою новую ПРОФЕССИОНАЛЬНУЮ аудиокарту - при калибровке столбики колбасит на 2/3 шкалы просто так (на ноуте с AC97 всё ОК). И потренироваться не получилось... Вот и результатПросто потерялась моторика движений, из-за этого такой жёсткий краш. Хорошо хоть автопилот удержал его в горизонте и он вошёл полого, а не морковкой.
А я вот заметил что на rс-cam.ru телеметриями Тимофея приторговывают...
Лицензионные отчисления-то есть?![]()
Ага.
Так же как и Жирной Акуле.![]()
Именно ppm и нужен - http://www.rcdesign.ru/articles/electronics/rcusb
мега8, регулятор и транзистор.. работает как часы
>Всё забываю спросить, как у местных обитателей устрона трубка ПНВД (заборник)? Есть ли темки по этому вопросу, фотки, линки?
У меня - тонкостенная трубка произвольного диаметра, смотрящая в набегающий поток воздуха.
Как-то помнится, слышал, что есть библиотека с фиксированной точкой для AVR под IAR. Библиотека вроде называется "Q-математика" или "IQ-математика".
Подобной библиотекой пользуюсь для TMS320. Классная вещь.Все шустренько считается, и синусы и логорифмы и корни... только к "Q" формату надо все приводить, ну и привыкнуть к нему. А суть одна, все считается целочисленно со сдвигами.
А вот RC цепь на ресет они зря не повесили...
Работает лучше, чем через аудиокарту? FMS его поймёт?
И как работает?..
Просто у меня целая книжка есть (в библиотеке без права выноса) по конструкциям ПНВД, страниц 300. Большая часть по сверхзвуковым, конечно, но есть и старьё.
Так вот самой удачной конструкцией там называют два цилиндра с отношением диаметров 1/10. Больший цилиндр на входе занимает 2/3 длины. Меньший на выходе, имеет сквозное отверстие назад и от середины перпендикулярно отведена трубка с давлением. То есть такая сквознвая подзорная труба с боковым соском. Никто не пробовал что-то подобное использовать?
Я сейчас использую трубу от игрушечного теплоходаПластиковая в форме буквы Г имеет заборник бОльшего диаметра, чем основание. По диаметру - как раз к трубке от капельницы. Стоит на верху кабины.
>Как-то помнится, слышал, что есть библиотека с фиксированной точкой для AVR под IAR.
IAR это С, значит в Мегу8 втаптывать тяжко придется, и он денег стоит, а пирацтво - зло
Для С есть WinAVR, для Меги128 - замечательная вещь.
И логарифм на кордике у меня уже нормально крутиться в прошивке 240e.
>И как работает?..
Нормально работает, куда ж ей деться-то?
>Я сейчас использую трубу от игрушечного теплохода
Чтоб окончательно добить зевак, можно еще свисток паровозный приделать![]()
>Я в плане завихрений, насколько шумит в полёте датчик? Насколько "волосатый" сигнал и т.п.
У меня нифига он не шумит, даже хотелось бы побольше шума, чтобы оверсэмплинг эффективнее работал![]()
А скорость по характеристике датчика считаете, без калибровочных таблиц?
Я сейчас работаю до 2 кПа == 200 км/ч (внутренний усилитель АЦП включен на усиление в 4 раза) и линейно вычисляю скорость. Было сделано на скорую руку и никогда не проверялось на верность показания скорости... Вот сейчас задумался...
Есно нулём считаю показания датчика в покое и далее по 4,7 мВ на скокататам км/ч (уже не помню).
>скорость по характеристике датчика считаете, без калибровочных таблиц?
P1-P2=(rv^2) /2, где r - плотность воздуха, v^2 - квадрат скорости, P1-P2 - разница давлений на дифференциальном датчике
>линейно вычисляю скорость
Линейно не пойдет.
>Есно нулём считаю показания датчика в покое
Ага.
Определяется и работает как обычный usb-джойстик, автоматически устанавливается в WinXP, можно хоть в Ил2 игратьБез лишних извращений и шумов, связаных с подключением через звук.
http://www.matros.co.uk/twiki/pub/Ma..._ppm_files.zipЧёта архив с прошивкой ни под одним броузером не качается...
Кстати, со скоростью это проверить чуть сложнее, а вот бароальтиметр без dithering'а мне сделать так и не удалось, бо с голым оверсемплингом он (как, собственно, и ожидалось) выдавал высоту "ступеньками", что лучше всего наблюдается при катаниях в лифте:
Синий график - просто оверсемплинг, желтый - с дисерингом (хоть еще и не совсем хорошим, бо в идеале наклонные линии должны быть совсем прямыми).
Гут. Плату нарисовал, закинул травиться. Нашёл в коробушках все детали, кроме МКДумаю ради шутки попробовать м48 ей прошить... По идее, адреса регистров захвата и таймеров совпадают, а код всего 3 кб...
просто м48 у меня горка, а за м8 надо шлёпать...
Я имел ввиду линейно относительно характеристики датчика. Помянутая формула как раз и работает.
Ага. Как бы мне тоже dithering присобачить?
2 Dikoy не взойдет так просто http://www.atmel.com/dyn/resources/p...ts/doc2553.pdf , если только исходники править, но там тоже не ласково![]()
Были б исходники, можно было б и помучиццо. Вообще, в м48 есть всё, что есть в м8, т.к. м48 урезаная версия м88, которая, в свою очередь, преемница м8 и практически полностью с ней совместима. Думаю, поменять хидер и перекомпилить хватило бы. Максимум регистры передефайнить (в м8 небыло нумеровки стандартных регистров). Плюс м48 сейчас 30р стОит, а м8 я за 120 купил![]()
Ну да ладно. Я уже прикупил м8, всё собрал и запустилПрилагаю плату, вдруг кому пригодится.
ПС. От себя я добавил в плату индикатор на светодиоде и резисторе 1к, цепь сброса на ресете МК (10к и 0,1 мкФ) и транзистор КТ3102Е (других небыло). Выходной кондёр стабилизатора собрал из трёх танталов по 1,5 мкФ.
Вообще, собирая подобные игрушки, для себя, я стараюсь минимум деталей покупать, а максимум находить в коробушках, дабы хоть чуть-чуть разгрести скопившиеся завалы. Например, на этой плате стоят три мегараритетных резистора марки УЛИ! Не знаю, какого они года, дата есть только на одном - 1956 год.
Вот такой USB девайс
Примерно так. Слева и справа сквозные отверстия, воздух проходит насквозь.
В книжке было написано, что эта камера за счёт упругости воздуха подавляет неравномерности и вибрации, делая показания прибора более ровными.
Не исключено, что это справедливо только для механических спидометров...
Последний раз редактировалось Dikoy; 14.05.2009 в 14:25.
Исходники есть в теме usb-адаптер передатчика - альтернативная open-source прошивка или на http://vusb.wikidot.com/project:ppm-rc-to-usb-interface
Переписал документацию на модуль телеметрии:
http://www.smalltim.ru/tele/docs/
http://www.smalltim.ru/tele/screenshots/