roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 22:54

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 74 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 12 июн 2009, 16:36 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
Из схемы http://roboforum.ru/download/file.php?id=9456 видно что переключение
антенн происходит не прямоугольными импульсами, а через R-C цепочку.
Может поэтому и появляется синусоида(ИМХО). Т.е. второй PIN диод начинает открываться,
а первый еще не закрылся и тд...
В приемнике собрана след схема для шумодава: по памяти с pin(?)МС3361 на конденсатор далее
выпрямитель из 2 диодов и конденсатор(один конец на землю другой на катод диода) если шипит уровень напряжения на конденсаторе растет (на аналог вх Мега16).
Можно ли использовать эту схему в качестве уровне-мера сигнала (что нужно изменить , подобрать)?
Цитата:
У Вас явный баг в программе. МК зависать не должен.


Эти контроллеры http://www.intekufa.ru/Section200_70.aspxс Радиомодем Мега-09-УКВ, но сейчас другие начали закупать для новых скважин. Старые остались и проблемы в месте с ними .
Цитата:
Проще и точнее сравнивать не синусоиды, а каждые 4 уровня после RC на pin9.

Если можно поподробнее.Не совсем понимаю как.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 12 июн 2009, 17:29 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
Цитата:
Из схемы …видно что переключение антенн происходит не прямоугольными импульсами, а через R-C цепочку.

Ну и что? Вас ведь интересует DC уровень ЧМ сигнала после подключения антены, а не нюансы работы коммутатора.
Цитата:
уровень напряжения на конденсаторе растет (на аналог вх Мега16).

Вы бы сначала решили задачу пеленга, а уже потом с СШП разбирались.
Цитата:
Старые остались и проблемы в месте с ними

Старые МК это какие? Исходники имеете? Где сбоит по WD знаете?
Цитата:
Если можно поподробнее.Не совсем понимаю как

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 12 июн 2009, 19:53 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
Цитата:
Ну и что? Вас ведь интересует DC уровень ЧМ сигнала после подключения антены, а не нюансы работы коммутатора.

НЕ только уровень ЧМ сигнала, а еще направление.
Уровни ЧМ сигнала, на всех попеременно подключаемых антеннах, должны быть почти равны.
Расстояние между антеннами в моем случае около 45 см(в зависимости от длинны волны)
Определить направление (радиопередатчика мощностью 5-20 Вт) по затуханию сигнала через 45 см для меня является не возможным.
Цитата:
Вы бы сначала решили задачу пеленга, а уже потом с СШП разбирались.

Я имел ввиду использовать уже готовую схему шумодава в качестве уровне-мера ЧМ сигнала
из слов
Цитата:
В ЧМ уровень несущей определяют по шумам, т.е. контролируют не сам сигнал, а подавление им ВЧ шумов. В простейшей схеме это емкость с выхода (pin9) на вход усилителя шумов (pin10) и выпрямителем/интегратором на pin11.....

Цитата:
Старые МК это какие? Исходники имеете? Где сбоит по WD знаете?

Старые контроллеры(готовые модули со всеми прибамбасами), а не МК(Atmega 8 16 32 128 ).
Исходников к сожалению нет, производитель не делится такой информацией.

Все MK подключены по TWI(I2C), если один из вспомогательных МК занял линиию(I2C)и не освобождает ее, то основной МК перестает видеть все остальные(вообще разные случаи бывают, эт просто один пример).

Цитата:
По 4 значениям, а именно столько Вы имеете для 4 антенн, красивой картинки одного периода синусоиды, как в примере с вращающейся антенной не получится.

Вроде начал понимать.
к примеру на антеннах(1,2,3,4) уровень на аналог.входе 0-50-100-50 после подключения, значит
сигнал пройдет с 3 к 1 антенне и будет перпендикулярен линии между 2 и 4 антенны
Так что ли?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 12 июн 2009, 20:34 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
Цитата:
В какие моменты нужно снять эти 4 значения на аналог. входе

после подключения антенны и устаканивания переходного процесса
Цитата:
Исходников к сожалению нет, производитель не делится такой информацией.

тогда и глюки WD в чужой прошивке Вам не победить :(
Цитата:
Я имел ввиду использовать уже готовую схему шумодава в качестве уровне-мера ЧМ сигнала

у чипа есть НЧ выход, на нем напряжение зависящее от фазы/частоты. Зачем с него снимать шумы и опять переводить в уровень?
Цитата:
Уровни ЧМ сигнала, на всех попеременно подключаемых антеннах, должны быть почти равны.

Не угадали! Прочтите что-нибудь про распространение радиоволн.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 12 июн 2009, 20:57 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
Цитата:

USER777 Уровни ЧМ сигнала, на всех попеременно подключаемых антеннах, должны быть почти равны.

contr
Не угадали! Прочтите что-нибудь про распространение радиоволн.

Цитата:
Большое влияние на распространение радиоволн короче 30 см в нижних слоях
атмосферы оказывают гидрометеоры (дождь, туман, облака и т. д.). Затухание
радиоволн в парах воды особенно сильно сказывается для сантиметрового
диапазона. Затухание радиоволн в атмосфере может заметно уменьшать дальность
действия при больших расстояниях. На малых расстояниях оно сказывается
незначительно. На миллиметровых волнах поглощение сказывается на определенных
длинах волн и обусловливается молекулярным строением входящих в атмосферу
газов.

Я не знаток,но нужно разобраться. Допустим уровень ЧМ сигнала на 1 антенне -70 dBm и 2-я антенна дальше первой относительно излучателя на 45 см, то на сколько больше или меньше будет уровень ЧМ сигнала на 2-ой антенне (хотя бы примерно) (-69,99 dBm или -70,01dBm)(УКВ 165 МГЦ , мощность 5Вт , 3км ) от чего зависит???.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 12 июн 2009, 22:40 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
Круги на воде видели? Расстояние между гребнями – длина волны. От гребеня до впадины - половина длины волны, вот в этом промежутке и вытарчивают из воды 4 штыря.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 13 июн 2009, 00:13 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
Ясно!
Соберу отпишусь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 13 июн 2009, 06:33 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
contr писал(а):
От гребеня до впадины - половина длины волны, вот в этом промежутке и вытарчивают из воды 4 штыря.

Какое отношение это имеет к данной системе?

Здесь радиус окружности выбирается в зависимости от 3 параметров: частоты несущей, частоты вращения и желаемого максимального допплеровского сдвига.

Добавлено спустя 18 минут 36 секунд:
Странные какие-то нефтяники. Тратят время на какой-то пеленгатор, с которым потом ещё и носиться по полям периодически надо будет, вместо того чтобы избавиться от плохого оборудования и заменить на надёжное.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 13 июн 2009, 11:55 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
Цитата:
Какое отношение это имеет к данной системе?

никакого, но чек хоть представление иметь будет о длине волны, фазе прихода и размерах антены


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 13 июн 2009, 13:10 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
Цитата:
Странные какие-то нефтяники. Тратят время на какой-то пеленгатор, с которым потом ещё и носиться по полям периодически надо будет, вместо того чтобы избавиться от плохого оборудования и заменить на надёжное.

Нефтяники эт громко сказано.Средний процент обводненности нефти доходит до 90%
+ кризис.
Оборудование меняется на другое, но слабым звеном все же остается (УКВ связь)
Т.е контроллеры то новые http://www.lufkinautomation.com/sam1.asp, а вот средства связи с ними те же. Пытаются внедрить что-то вроде ШБД(широкополосный беспроводной доступ)пока не очень успешно.
Если считаете тему не актуальной можно закрыть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 13 июн 2009, 17:31 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
По моему для 4 точек упрощается до след
U_k[1..4] уровни ацп.

A = U_k[1]-U_k[3];
B = U_k[2]-U_k[4];

если А>B и A>-B, то Phi = arctg(B/A);
если А<B и A>-B, то Phi = 90 град. - arctg(A/B);
если А<B и A<-B, то Phi = arctg(B/A) + 180 град.;
если А>B и A<-B, то Phi = 270 град. - arctg(B/A);

вроде так.
Код:
//ICC-AVR application builder : 13.09.2008 11:20:34
// Target : M128
// Crystal: 16.000Mhz


#include <iom128v.h>
#include <macros.h>
#include <math.h>





void port_init(void)
{
PORTA = 0xAA;
DDRA  = 0xFF;
PORTB = 0x00;
DDRB  = 0x00;
PORTC = 0x00; //m103 output only
DDRC  = 0x00;
PORTD = 0x00;
DDRD  = 0x00;
PORTE = 0x00;
DDRE  = 0x00;
PORTF = 0x00;
DDRF  = 0x00;
PORTG = 0x00;
DDRG  = 0x00;
}




//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0,2%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x06;
UBRR0L = 0x67; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x98;
}

#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{
//uart has received a character in UDR
}




//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
XDIV  = 0x00; //xtal divider
XMCRA = 0x00; //external memory
port_init();

uart0_init();


MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x01; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}

//
void main(void)
{
int Phi;
float Phi0;
int U_k[4];
float A;
float B;
init_devices();
U_k[0]=100;
U_k[1]=50;
U_k[2]=60;
U_k[3]=40;
A=U_k[0]-U_k[2];
B=U_k[1]-U_k[3];
if ((A>B)&&(A>-B))  Phi0 = atan(B/A)*180/_PI,putchar0(1);
if ((A<B)&&(A>-B))  Phi0 =90- atan(A/B)*180/_PI,putchar0(2);
if ((A<B)&&(A<-B))  Phi0 =180+ atan(B/A)*180/_PI,putchar0(3);
if ((A>B)&&(A<-B))  Phi0 =270- atan(B/A)*180/_PI,putchar0(4);
Phi=(int)fround(Phi0);

putchar0(Phi>>8);
putchar0(Phi);


}






void putchar0(unsigned char data )//êîì1 ïåðåäà÷à
{
   
    while ( !( UCSR0A & (1<<UDRE0)) );// æäàòü ïîêà áóôåð íå îñâîáîäèòüñÿ
   
    UDR0 = data; // çïèñàòü â áóôåð
}
void putchar1(unsigned char data )//êîì2 ïåðåäà÷à
{
 
    while ( !( UCSR1A & (1<<UDRE1)) );
 
    UDR1 = data;
}



unsigned char getchar0( void )// êîì1 ïðèåì
{

while ( !(UCSR0A & (1<<RXC0)) );
return UDR0;
}
unsigned char getchar1( void )// êîì 2 ïðèåì
{

while ( !(UCSR1A & (1<<RXC1)) );
return UDR1;
}

на вычисление арктангенса уходит много времени...
без арктангенса нельзя?
может есть вариант проще?
Вложение:
Комментарий к файлу: sin_cos_tg_4Ant
Project1.rar [161.68 КиБ]
Скачиваний: 22


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 29 июн 2009, 13:32 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
С вычислением арктангенса вроде разобрался. Сделал массив из значений тангенса для 0...89 +чуть больше 89 (см.таблиц 10000 ниже) град. Т.е позиция в массиве некого значения будет соответствовать арктангенсу этого значения.
А для того чтобы избавится от чисел с плавающей запятой float значения массива были предварительно умножены на 100 и округлены. Да еще и исходные тоже нужно *100. к примеру A/B =1 1 нужно умножить на 100. Чтобы соблюдался масштаб значений
к примеру 0 соответствует 0град, 100=45 град, 5729=89 град
Код:
const unsigned int arct[91]=
{0, 2, 3, 5, 7, 9, 11, 12, 14, 16, 18, 19, 21, 23, 25, 27, 29, 31, 32, 34, 36,
38, 40, 42, 45, 47, 49, 51, 53, 55, 58, 60, 62, 65, 67, 70, 73, 75, 78, 81,
84, 87, 90, 93, 97, 100, 104, 107, 111, 115, 119, 123, 128, 133, 138, 143,
148, 154, 160, 166, 173, 180, 188, 196, 205, 214, 225, 236, 248, 261, 275,
  290, 308, 327, 349, 373, 401, 433, 470, 514, 567, 631, 712, 814, 951, 1143,
   1430, 1908, 2864, 5729, 10000 };

Получилась "Вывернутая таблица"
Для того чтобы быстро находить позицию значения использовал метод деления по палам
к примеру Phi = arc(100); Phi=0x002D или 45(десят)
Код:
unsigned char  arc (unsigned int D)
{

unsigned char i;
unsigned char toLeft=0;
unsigned char toRight=89;
unsigned char pol0=0;
unsigned char pol1=0;

   

while (1)//сам поиск
   {
   
   
      i=(toLeft+toRight) / 2;
      if (D < arct[i])
      {
         toRight= i-1;
         pol1 = i;
         
      }
      else if (D > arct[i])
      {
         toLeft= i+1;
         pol0=i;
         
      }
      if ((((pol0-pol1)<2)&&(pol0)&&(pol1))||(toLeft > toRight)||(D == arct[i]) ) break;
      
   }
return i;// позиция значения или что близкое
   
}

Сам бы не разобрался помогал =DeaD= За эт ему большое СПС Метод рабочий сам проверял.
Это было для углов 0-90
А для остальных углов прописал условия
Для Всех углов:
Код:
U[0..3] значения АЦП
unsigned int Phi=0;
unsigned int Phi_0;




if (((U[0])+(U[2])+(U[1])+(U[3]))>50)
{
if ((U[0]>U[2])&&(U[1]>=U[3]))
{if (U[1]==U[3]) Phi_0=10000;else
{
Phi_0=(((U[1]-U[3])*100)/((U[0]-U[2])));
if (Phi_0>6000) Phi=10000;
}
Phi=0;
}
if ((U[0]<=U[2])&&(U[1]>U[3]))
{if (U[0]==U[2]) Phi_0=10000;else
{
Phi_0=(((U[2]-U[0])*100)/((U[1]-U[3])));
if (Phi_0>6000) Phi=10000;
}
Phi=90;
}
if ((U[0]<U[2])&&(U[1]<=U[3]))
{if (U[1]==U[3]) Phi_0=10000;else
{
Phi_0=(((U[3]-U[1])*100)/((U[2]-U[0])));
if (Phi_0>6000) Phi=10000;
}
Phi=180;
}
if ((U[0]>=U[2])&&(U[1]<U[3]))
{if (U[0]==U[2]) Phi_0=10000;else
{
Phi_0=(((U[0]-U[2])*100)/((U[3]-U[1])));
if (Phi_0>6000) Phi=10000;
}
Phi=270;
}

Phi += arc(Phi_0);

Вроде так.
Вопрос по усреднению значения для углов 350-0-10 как правильно выполнить?

Добавлено спустя 56 минут 31 секунду:
Да еще вопрос по USART. Данные в моем случае нужно передавать без ожидания освобождения
while ( !( UCSR0A & (1<<UDRE0)) ); т.е через прерывания: байт ушел прерывание следующий байт ит.д . Не хотелось изобретать велосипед. Этот while сильно тормозит программу. Скорость 57600. 8 байт передать всего то.
Может примеры есть или ссылки?? Спасибо за ранее!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 29 июн 2009, 14:09 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
вышки угоняют и Вы их пеленгуете или исходно не знаете местоположения передатчиков?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 29 июн 2009, 14:45 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
contr
Цитата:
вышки угоняют и Вы их пеленгуете или исходно не знаете местоположения передатчиков?


Прикалываешься?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доплеровский пеленгатор на Аtmega128
СообщениеДобавлено: 29 июн 2009, 15:48 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
пытаюсь понять задачу, чтобы прикинуть варианты решения. Возможно это избавит Вас от необходимости вычислять арктангенсы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 74 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 24


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO