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

LowAmper
Dikoy:

Через неделю-две посылку припрёт курьер надом.

Через неделю-две начнется гемор с таможней, которая расположена в аэропорту в 50км от города: “Бесплатно?! А ну-ка дай десять справок и напиши десять заявлений и заплати пошлину, сумму мы счас придумаем.”
Увы, живу я в заповеднике коммунизма. Но это тема не для этой ветки. Спасибо за оригинальную идею. Вы её уже осуществили на практике?

Dikoy
LowAmper:

Спасибо за оригинальную идею. Вы её уже осуществили на практике?

Это про что?

Про коммунизм сочувствую… У нас только с упсом могу быть проблемы. Федекс проходит всегда без проблем.

Dikoy

to All
Почитал сайт папарацци. Интересная штука.
И возникла идея - а почему бы не замутить аналогичный проект, только в россии и открытый?
Я не разделяю некоторые решения, которые они применили. Например, пирометры. Нафига было извращаться с аналоговыыми по 18 баксов, когда за 25 можно купить цифровые и тарированные?..
Радиоканал у них никакой…

У меня есть опыт в построении оборудования для самолётиков. Миниатюрные дуплексные радиоканалы на 4 км., куча кодов обработки GPS и вычислений нав. параметров. То есть часть, которая работает с GPS и отвечает за управление, у меня есть.
Пирометры приделать не проблема.
Видеокамеры тут уже побороли.

То есть сделать ИК аппаратуру управления самолётом по камере проблемы не составляет. Я сваяю блок управления, кто-то блок наложения картинки, связь по UART.

Если есть желающие поучаствовать, можно сделать. Один я этим заниматься не буду.
Так же у меня нет возможности тестить, по этому могу генерить только платы/схемы/коды. проверять придётся кому то другому 😎
Есть желающие? Эта железяка кому-нибудь нужна?

foxfly

[quote=Dikoy;750270]
to All
Почитал сайт папарацци. Интересная штука.
И возникла идея - а почему бы не замутить аналогичный проект, только в россии и открытый?

Скажите: а где можно увидеть что- то из “наваянного” Вами?
Вот Smallltim- никого не призывал на подвиги, а взял да и сделал телеметрию (простенькую, но со вкусом) и выложил ее на форуме…
А Ваши благие намерения чем то подкреплены?
Народ- сумлевается 😦

smalltim

>То есть часть, которая работает с GPS и отвечает за управление, у меня есть.

Было бы здорово сделать добавочную платку к моей телеметрии: на добавочной плате на Атмеге - математика GPS, навигация и т.д., а вывод на экран и датчики скорости-высоты-батареек-температуры с их математикой - на существующей платке. Интерфейс между платами - какой угодно, у Атмег полно протоколов общения.
Только вот я сейчас на две недели паузу беру. На работе загрузка сильная.

Dikoy

[quote=foxfly;750346]
[quote=Dikoy;750270]
to All
Почитал сайт папарацци. Интересная штука.
И возникла идея - а почему бы не замутить аналогичный проект, только в россии и открытый?

Скажите: а где можно увидеть что- то из “наваянного” Вами?

Нами, например, тут: dikoy44.narod.ru
Авионики там нет, т.к. все проекты были коммерческими.

Вот Smallltim- никого не призывал на подвиги, а взял да и сделал телеметрию (простенькую, но со вкусом) и выложил ее на форуме…

А я предлагаю сделать то же самое, но предупреждаю, что один не справлюсь. Да и нет у меня интереса делать то, что никому не нужно. Если интерес у людей будет, имеет смысл тратить на это время. А ничто не укрепляет веру в интерес так, как реальная помощь 😉

А Ваши благие намерения чем то подкреплены?

Интересом разобраться с пирометрами. Я с ними дела не имел, но прочитав статью www.eganfamily.id.au/…/TaylorBristol2003.pdf загорелся.
По мотивам парацци подобрал даже пирометр - MLX90614 от www.melexis.com

Dikoy
smalltim:

Было бы здорово сделать добавочную платку к моей телеметрии: на добавочной плате на Атмеге - математика GPS, навигация и т.д., а вывод на экран и датчики скорости-высоты-батареек-температуры с их математикой - на существующей платке. Интерфейс между платами - какой угодно, у Атмег полно протоколов общения.
Только вот я сейчас на две недели паузу беру. На работе загрузка сильная.

Я так и думал. У моей меги свободен один UART, могу передавать данные либо в АНСИ, либо цифрами - как удобно. Вы выводите из в видеосигнал.

Насчёт времени - я с пирометрами быстрее не разберусь, а покупать их ещё дольше. Так что, 2 недели терпит 😃
Главное не пропадайте, чтобы не получилось так, что я сделаю несовместимо с вами.

foxfly

Нами, например, тут: dikoy44.narod.ru
Авионики там нет, т.к. все проекты были коммерческими.

Ну, насчет “коммерческими”- это явно крутовато 😃
Пищалка, которая гудит при открывании двери если включены габариты- это 1 корпус 561ЛА7, плюс пара диодов и пара сопротивлений…
До авионики оттуда настолько далеко, что и не видно.
Кстати: датчики у Папаррацев стоЯт- DST60, да и не делают они сами эти платы- у FMA-Direct покупают.
А вы себе представляете сумму, в которую выливается разработка подобной системы?
Если учесть, что цены на ДПЛА начинаются от 40000$?
Я то все это уже сделал, поэтому несколько удивлен таким оптимизмом 😦

Dikoy

Ну, насчет “коммерческими”- это явно крутовато

Простите, вы не представились. Могу я увидеть Ваши труды?

Пищалка, которая гудит при открывании двери если включены габариты- это 1 корпус 561ЛА7, плюс пара диодов и пара сопротивлений…

Это 1 диод и одно реле. Как сделано у нексии. А ещё можно посадить китайца, который одновременно будет выполнять функции АКПП. Но вот беда… Небыло в коробушке китайца, из того, что было пришлось делать.
+У 561 серии нет защитных диодов по входам 😦 Да и одним оставшимся элементом ЗП-19 не раскачаешь. Нужна пара, а лучше 4, причём ЛН2.
Такая штука работает на инжекторной девятке. На тазиках сей аппарат дохнет. Точнее дох, пока я не поставил 7809 и стабилитроны по входам.
Плюс, никогда небыло страсти к китайской технике. Предпочитаю делать заведомо рабочие вещи и не загонять элементы в пределы по токам и напряжениям. 70 вольт 561 серия не держит, к сожалению.

Кстати: датчики у Папаррацев стоЯт- DST60,

Они предлагают варианты, в т.ч. и MLX90247.

А вы себе представляете сумму, в которую выливается разработка подобной системы?

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

Если учесть, что цены на ДПЛА начинаются от 40000$?

Автору статьи это не помешало смастерить пироавтопилот для статьи. А футабе сделать оптику за 50 долларей. Или вы не понимаете разницы между коммерческим продуктом с сопровождением и домашней поделкой?

Вот по этому я не люблю писать свой возраст в форумах. Уж слишком много сверхчеловеков на него выползает.

idono

Почитал про сложную обработку данных по высоте у smalltim и других создателей телеметрий, почитал про “плавающие окна”, про хитрые форумлы и т.п. Не понял ни слова 😦
У меня такой вопрос - к чему такие сложности? В своих экспериментах я тупо опрашивал АЦП 20 раз, суммировал результат и делил на 20, после чего выводил на экран 😃 После устранения нескольких багов в коде, альтиметр с разрешением 1 метр показывает высоту четко, без шумов вообще. Вариометр с разрешением 0.5 м/c вел себя так же

Dikoy
idono:

Почитал про сложную обработку данных по высоте у smalltim и других создателей телеметрий, почитал про “плавающие окна”, про хитрые форумлы и т.п. Не понял ни слова 😦
У меня такой вопрос - к чему такие сложности? В своих экспериментах я тупо опрашивал АЦП 20 раз, суммировал результат и делил на 20, после чего выводил на экран 😃 После устранения нескольких багов в коде, альтиметр с разрешением 1 метр показывает высоту четко, без шумов вообще. Вариометр с разрешением 0.5 м/c вел себя так же

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

А реализация проста. В цикле забиваешь массив выборками, когда забил - суммируешь. Потом следующую выборку записываешь в нулевой элемент. Суммиирование. Следующая - в первый элемент. Суммирование.
То есть последовательно перезаливаешь массив, с каждым элементом делая новую сумму. Частота получения данных равна частоте выборке АЦП, качество подавления шумов выше чем у простой суммы. Единственное неудобство - надо сначала залить массив и тллько потом получать данные.
Так работают сигиа-жельта АЦП кстати.

Ещё его называют алгоритмом скользящего среднего.

ReGet

Спасибо, после вашего объяснения все стало понятно!
(это я под другим аккаунтом заходил)

maloii
idono:

в схеме smalltim’а все нарисовано. Камеру к меге подключать не нужно, нужно всего лишь подцепить “видеовыход” схемы к проводу “камера-видеопередатчик” паралельно

Можно чучуть поподробней. У меня камера KX171 c rangvideo.com www.rangevideo.com/index.php?main_page=product_inf…

на неё идёт 12 вольт и жолтый провод сигнала. Если я правлено понял то мне нужно ноль от схемы кинуть на минус а сигнал на жолтый провод. Ещё вопрос, какое напряжение должно быть на выходе сигнала, тоесть если я тестером замерю, ноль это минус а сигнал плюс. Я понимаю что это аналоговый сигнал, просто осциллографа у меня нет а сровнять каскады как то нужно. Таким способом я померел выход с приёмника от rangevideo там примерно 3 вольта, а у меня 1,5 с платы выходит 😃 . А если на камере мерю, тоесть минус на минус, а плюс на сигнал, то вообще 0 вольт кажет, хотя камера работает нармуль 😵

maloii

Вот ещё, поправьте если я неправильно понимаю (просто разобраться охото во всём). Я цепляю сигнал на разъём V-IN чипа LM1881N (как я понял прошивать его не надо он сразу всё умеет). Выходы HSYNC и VSYNC кидаю на ноги Atmega8. Этот LM1881N раскладывает сигнал на вертикальные и горизонтальные составляющие и дёргает эти ноги по достижению переходов по линиям или точкам линии. В программе Atmega8 описываю прерывания этих ног на которые я подал HSYNC и VSYNC. Ввожу переменные строки и точки в строке, отсчитываю нужную мне точку и на некую ножку кидаю 1. Эту ножку на которую выкидываю 1 я соединяю на выход PAL. В итоге вход и выход это один провод, разделяются только сопротивлениями, на вход 510 ом и кодёр на 0,1 микро фарад, на выход 120 ом. В итоге сверху на сигнал накладываю белые пиксели.

Dikoy

2All
Народ, а насколько необходимо отображать в телеметрии потребляемый от акков ток?..
ИМХО вполне достаточно знать напряжения силового и аппаратурного акка (ну либо одного общего).
А то мне тут советуют датчик тока сделать… Но это ж шунт лепить на плату, и всё равно точность ±лапоть, не считая нагрева… 😕 Проводов, опять же, больше. Что скажете?

smalltim
Dikoy:

2All
Народ, а насколько необходимо отображать в телеметрии потребляемый от акков ток?..
ИМХО вполне достаточно знать напряжения силового и аппаратурного акка (ну либо одного общего).
А то мне тут советуют датчик тока сделать… Но это ж шунт лепить на плату, и всё равно точность ±лапоть, не считая нагрева… 😕 Проводов, опять же, больше. Что скажете?

Я не стал связываться, знать ток, конечно, интересно, но индикации напряжения и так достаточно.

maloii:

Ага, всё так, только прерывания от лм1881 - не точки и строки, а моменты перехода к новому кадру/новой строке.

maloii

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

Подключил всё как у smalltim. Диод только свето поставил. Прошиваю, всё ок, пробую, эран немного тускнеет, делаю в строчке заместо 1 на PORTD.7 ставлю 0, экран светлеет обратно и вообще как бы ничего и не происходило. А по сути должна линия белая показаться как я понимаю.

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

#incl*ude <mega8.h>
#incl*ude <delay.h>


int i=0;

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
		if(i>100 && i<200){
				PORTD.7 = 1;
		}
		i++;
}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
		i=0;
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=1 State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x80;
DDRD=0x80;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: On
// INT1 Mode: Any change
GICR|=0xC0;
MCUCR=0x05;
GIFR=0xC0;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
	  {
	  // Place your code here

	  };
}
РД00
maloii:

А по сути должна линия белая показаться как я понимаю.

Забыли обнуление PORTD.7.

maloii

щас стали показываться, но както не супер. всё дёрается и точки явно длинные. Должно получится две малюсьникие полокси, а получается 2 длиноватые полоски и ещё и дёргаются 😵

#incl*ude <mega8.h>
#incl*ude <delay.h>


int i=0;
int t=0;

int start_line=100;

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{

		if (i>start_line && i<start_line+2)  {
				t=30;
				while(t--) { #asm("nop"); }
				PORTD.7 = 1;
				PORTD.7 = 1;
				PORTD.7 = 0;
				PORTD.7 = 0;
				PORTD.7 = 1;
				PORTD.7 = 1;
				PORTD.7 = 0;

		  }
		i++;
}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
		i=0;
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=1 State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x80;
DDRD=0x80;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: On
// INT1 Mode: Any change
GICR|=0xC0;
MCUCR=0x05;
GIFR=0xC0;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

}
smalltim

>щас стали показываться, но както не супер. всё дёрается и точки явно длинные. Должно получится
>две малюсьникие полокси, а получается 2 длиноватые полоски и ещё и дёргаются 😵

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

Dikoy

щас стали показываться, но както не супер. всё дёрается и точки явно длинные. Должно получится две малюсьникие полокси, а получается 2 длиноватые полоски и ещё и дёргаются 😵

Посмотри ассемблерный листинг, имхо компилер
PORTD.7 = 1;
PORTD.7 = 1;
PORTD.7 = 0;
PORTD.7 = 0;
PORTD.7 = 1;
PORTD.7 = 1;
PORTD.7 = 0;
оптимизирует. Причём только ту часть, которая обнуляется, превращая в одну команду CLR.

#incl*ude <mega8.h>
#incl*ude <delay.h>
А что за инклюды такие?..

И фьюзы менялись? Может, мега от встроенного на 1 МГц молотит?