Гражданская радиосвязь в России (CB, LPD, PMR) Вход     Регистрация

18+ Данный раздел сайта запрещён для просмотра детьми!  

Данный раздел запрещён для просмотра детьми

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

После переделки платки на 7-ом пине ОУ нет половины от питающего напряжения и появились какие-то периодические выбросы: содрал медь с тыльной стороны, отдраил всё от припоя - хрен.
Видео

Моё душевное состояние по этому поводу
 
Записано: 2985 дн 15 час 40 мин 48 сек назад (07.03.2016, 12:38:07)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Пайка наверно с каким ни будь химическим флюсом велась (не с спирто-канифольным)?
Флюс имеет свойство неплохо проводить электрический ток. А может и ОУ ушибло статическим электричеством. Всякое бывает.

Хотя, судя по видео, всё нормально, импульсы ни что иное как сигнал датчика. Вы же не сидите неподвижно.
Может конечно и самовозбуд ОУ, например по питанию. Но импульсы похожи на то, что надо, другой вопрос - почему они не там, где надо.
 
Записано: 2985 дн 15 час 35 мин 41 сек назад (07.03.2016, 12:43:14)

kreker из Нижневартовск - Ханты-Мансийский ао
kreker из Нижневартовск - Ханты-Мансийский ао
  Фото переделок
На тыльной стороне был прямоугольник меди: хотел посмотреть, что изменится когда он ни к чему не подкинут и если подкинут к земле.
Добавил перемычек, чтобы облегчить зацеп к точкам.
 
Записано: 2985 дн 15 час 34 мин 5 сек назад (07.03.2016, 12:44:50)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Плата нормальная, ничего на ней не вижу дурного. Так что если что-то не так работает, то это может быть пожалуй только или влага или флюс между дорожек или под корпусом ОУ.

Хотя... Где написано R15 R25 C24 немного не понятно - что это за кусок фольги ни к чему не подключенный и зачем разрыв общего провода вокруг резонатора сделан?
Тогда уж хоть бы дырок с металлизации по кругу с шагом миллиметров 10 наделать и на обратную сторону, которая сплошной общий. А то для СВЧ это петля не слабая получается и как начнёт резонировать...
 
Записано: 2985 дн 15 час 28 мин 14 сек назад (07.03.2016, 12:50:41)

kreker из Нижневартовск - Ханты-Мансийский ао
kreker из Нижневартовск - Ханты-Мансийский ао
  Ну, от выбросов избавился. Осталось задетектить частоты.

Нашёл пару реализаций алгоритма Герцеля:
а) Герцель 1
б) Герцель 2 (ссылка на сразу на код).

Они порядочно отличаются от вашего варианта. Можете пояснить в чём? А то может стоит заморочиться с адаптацией.
 
Записано: 2936 дн 14 час 40 мин 12 сек назад (25.04.2016, 13:38:43)

 
Сергей без регистрации
  В алгоритме Герцеля используется sample rate т.е. подразумевается использование АЦП. У меня, например, выход ОУ подключен к компаратору контроллера, соответственно компаратор считает кол-во импульсов от ОУ и генерит прерывание, количество которых за единицу времени я принимаю за частоту.
Задача такая-же как в теме, за исключением того что устройство планируется для работы на улице соответственно помехи от ламп не критичны.
Можете посоветовать как мне использовать алгоритма Герцеля и нужен ли он мне.
 
Записано: 2917 дн 8 час 14 мин 58 сек назад (14.05.2016, 20:03:57)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Сергей, никак не использовать Герцеля. Можно быстрое преобразование фурье, причем именно версию алгоритма, которую использовали в АОН (автоматических определителях номера), там таблицы синуса и косинуса были однобитные и сигнал с компаратора тоже однобитный брался, а вместо умножения использовалась операция XOR. Можно поискать, в сети, я алгоритм находил, смотрел, получал эстетическое удовольствие гению его написавшему.
Но в вашем случае это будет лишним, используйте обычный метод по уровню импульсов, с тем самым компаратором, к которому и прицепились. По компаратору работают те же промышленне Аргус. Для некоторой защиты от помех в них еще есть возможность не бить тревогу по первому же импульсу, а скажем только по третьему пришедшему не позднее чем время ЧЧ, соответственно от импульсной помехи не сработает.
 
Записано: 2917 дн 5 час 33 мин 27 сек назад (14.05.2016, 22:45:28)

 
Александр340 без регистрации
  Дома стоит комбинированный PIR + СВЧ Допплер. СВЧ - чувствует шевеление пальцев на расстоянии около 10 метров в закрытом помещении. Классная штука.
 
Записано: 2898 дн 6 час 1 мин 43 сек назад (02.06.2016, 22:17:12)

 
Александр340 без регистрации
  Всего их у меня три, один не распознанный производитель, все разные, все работают. Тема очень интересна, надеюсь когда нибудь дойдут руки. Программирую на CCSC под PIC.
 
Записано: 2898 дн 5 час 57 мин 46 сек назад (02.06.2016, 22:21:09)

kreker из Нижневартовск - Ханты-Мансийский ао
kreker из Нижневартовск - Ханты-Мансийский ао
  250, вы тут? Нужна ваша помощь...
 
Записано: 2895 дн 23 час 17 мин 53 сек назад (05.06.2016, 05:01:02)

kreker из Нижневартовск - Ханты-Мансийский ао
kreker из Нижневартовск - Ханты-Мансийский ао
  Нет, не запарились.

Почему-то ищу любые частоты (по дефолту 5, 8, 14 Гц), а на выходе алгоритма всё время истина.
Гляньте на записанный сигнал и алгоритм?
Может этих частот там вобще нет и надо поределить новые частоты и порог для их детектирования.

Тема на electronix.. Там файлы.

П.С. Посмотрите последнее сообщение темы про длину выборки. Он прав?
 
Записано: 2894 дн 0 час 54 мин 47 сек назад (07.06.2016, 03:24:08)

 
Сергей без регистрации
  Александр340

Вы его сами разработали, я про датчик, который чувствует шевеление пальцев?
 
Записано: 2893 дн 14 час 51 мин 21 сек назад (07.06.2016, 13:27:34)

 
Сергей без регистрации
  А я тоже решил попробовать с алгоритмом Герцеля.

250
Ваш пример, на который была ссылка выдает странные значения с минусом и да на выходе алгоритма всё время истина. И хочется узнать, что это: InSample[n]

250
И все-таки старый вопрос:
2) Получается, таймер переполняется каждые 8 millisec? 1000 / 125 = 8 millisec
Да/Нет?
 
Записано: 2893 дн 14 час 38 мин 44 сек назад (07.06.2016, 13:40:11)

kreker из Нижневартовск - Ханты-Мансийский ао
kreker из Нижневартовск - Ханты-Мансийский ао
  >InSample[n]
n - счётчик элементов массива, InSample - массив оцифровки АЦП.

Думаю, что я зря сунулся в эту тему без знаний :)
 
Записано: 2893 дн 11 час 17 мин 32 сек назад (07.06.2016, 17:01:23)

 
Сергей без регистрации
  Ок. Значит АЦП замеряет 125 раз в секунду и записывает в этот массив 125 значений или только 25? здесь проскакивала эта магическая цифра.
 
Записано: 2893 дн 9 час 57 мин 16 сек назад (07.06.2016, 18:21:39)

kreker из Нижневартовск - Ханты-Мансийский ао
kreker из Нижневартовск - Ханты-Мансийский ао
  @Сергей, Я боюсь вас запутать ещё больше. Сам не слишком сведущь, а ещё совету давать буду. Давайте дождёмся ответа 250.
В теме на электрониксе всплывают спорные моменты, надо чтобы 250 глянул.
 
Записано: 2893 дн 9 час 31 мин 51 сек назад (07.06.2016, 18:47:04)

 
Сергей без регистрации
  @kreker
Я попробовал алгоритм, ссылку на который, давали вы (там где исходный код). Без движений выдает число близкое к нулю, при движении цифра начинает расти в зависимости от расстояния и скорости. Теперь осталось разобраться, что это за число на выходе.
 
Записано: 2893 дн 8 час 49 мин 46 сек назад (07.06.2016, 19:29:09)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  > Ваш пример, на который была ссылка выдает странные значения с минусом и да на выходе алгоритма всё время истина
Если речь о примере с страницы http://electronics-and-mechanics.azm.su/page57.h­tml то это кусок анализатора из прошивки эхо-репитера, там в InSample[n] лежат значения которые были набраны из АЦП и сохранены.
Анализ ведётся по 100 значениям, это видно из определения цикла "n<100".
Но этот кусок не к этой задаче, в реальности этот кусок выявляет частоту 1750Гц при частоте дискретизации ~16000Гц.
Возможно! на некоторых компиляторах в этом куске кода нужно прописать:
TMPVAR_v0 = ((float)InSample[n] + constantaA * TMPVAR_v1 - TMPVAR_v2);
добавить "(float)" перед InSample[n], что бы компилятор понял, что мы хотим однобайтовую signed суммировать с float, то есть пояснить компилятору как типы данные приводить.

А вообще, для Герцеля не нужно держать 100 значений или все значения за секунду или за минуту и даже 2 значения из АЦП не надо держать, только 3 переменные и одна, текущая выборка. Собственно в этом и есть его плюс.
То есть пример нужно переписывать так, что бы это была функция, которая будет в глобальных переменных (для микроконтроллера уместный стиль, что бы стек не гонять туда-сюда) держать 3 значения, на входе принимать (или получать) текущее значение из АЦП, а вот каждые, например 100 или 50 вызовов этой функции будет производиться анализ этих 3 переменных.

То есть всё приобретёт вид примерно такой:
float constantaA = 2 * cos(PI * 2 * (нужная частота / частота дискретизации));
float TMPVAR_v0=0;
float TMPVAR_v1=0;
float TMPVAR_v2=0;
unsigned char tik_counter=0;

void OneSampleCalc(float InfoSample){ // обсчёт текущего семпла
TMPVAR_v0 = (InfoSample + constantaA * TMPVAR_v1 - TMPVAR_v2);
TMPVAR_v2=TMPVAR_v1;
TMPVAR_v1=TMPVAR_v0;
}

bool ChkExistFrq(void){ // анализирует что насобирала предыдущая фкнкция
float resultat;
resultat = (TMPVAR_v1*TMPVAR_v1 + TMPVAR_v2*TMPVAR_v2 - constantaA * TMPVAR_v1 * TMPVAR_v2);
if (resultat > NEED_LEVEL){return true;}
return false;
}

void OnTimerClick(){ // вызывается таймером NNN раз в секунду
if (tik_counter <125){
OneSampleCalc(__GetADC()); // получим значчение из ADC и отдадим на обсчёт
tik_counter++;
}else{
if(ChkExistFrq()){__Action();} // было сделано 125 тиков с обсчётом, проанализируем и наверно выполним некие действия
tik_counter=0;
}
}

> Получается, таймер переполняется каждые 8 millisec? 1000 / 125 = 8 millisec
Получается 8 милисекунд, но не так как Вы написали, потому что если 1000 это частота в Гц (тиков в секунду), то 8 милисекунд не получается никак, потому как герцы в секунды, будет так:
1 / (1000 / 125) = 0.125 сек

Забирать данные с АЦП нужно с частотой не менее 2f верхней частоты которую хотим контролировать (теорема Котельникова).
Следовательно если нужно контролировать частоты с датчика соответствующие движениям человека (скорости этих движений), которые лежат в диапазоне 2-10Гц и сигнал помехи 50Гц, то минимальную частоту дискретизации (частоту выборок с АЦП в секунду) нужно выбирать не менее 100Гц, я в опытах выбирал частоту 125Гц, эта частота формировалась таймером таким образом:
8000000/256/250
где:
8000000 тактовая контроллера
256 железный делитель таймера
250 число на котором происходит переполнение
то есть таймер переполнялся каждые 1/125 = 0.008 секунды или 8 милисекунд.

> Тема на electronix.. Там файлы.
Там какие то странные файлы. Картинки. С датчика картинки точно поступать не могут. Вот бы wav куски получить, было бы понятнее.
Но в целом там народ верно мог сказать: что Ваша звуковая карта не пропускает низкие частоты.

А ещё "доставил", человек с ником "_pv" вот этой фразой:
> ну и искать 14Гц с датчика движения, не многовато ли? алкоголиков с похмелья по дрожжанию рук выделять из сигнала? да и то там не выше пары Гц будет.
Видно, что человек не понимает как работает в принципе доплеровский датчик движения.

Тоже интересна и верна мысль от человека с ником "alexeyv":
> Следовательно на 48кГц, чтобы различить 5 и 8 Гц необходимое количество выборок ~24кило.
По сути надо было бы ему Вам порекомендовать сделать даунсэмплинг с частоты дискретизации 48кГц до скажем 1кГц и уже от них брать 400 выборок.

ВАЖНО!
Тут вообще интереснее с этми 48кГц:
он не совсем корректно помнит суть дела, а суть дела в том, что при 48кГц и 400 выборках записывается всего 1/120 секунды = 48000/400 и как найти в 1/120 секунды частоты, один период колебания которых 1/14 секунды, то есть в 400 выборках на частоте 48кГц содержится не более 0.12 колебания.

---
Вот чувствую себя тем самым уродом, которые не могли мне написать нормальный пример и нормально объяснить, как вращать 3D кубик натянув на его стороны фотку, в далёком 1990 году. Давали куски кода, но они не работали, а они говорили, что просто код выдран из проекта и там он работал, может что и надо попатчить, но там всё очевидно и разобраться раз плюнуть. Правда это был исходник на ассемблере и было его не 2-3 килобайта, а около 100кб, да ещё и разбросанных по 5 файлам.
 
Записано: 2891 дн 5 час 9 мин 15 сек назад (09.06.2016, 23:09:40)

kreker из Нижневартовск - Ханты-Мансийский ао
kreker из Нижневартовск - Ханты-Мансийский ао
  >Там какие то странные файлы. Картинки.
Почему странные? о_О
Вот прямая ссылка на архив, которая была в первом посте той темы.
 
Записано: 2891 дн 0 час 56 мин 51 сек назад (10.06.2016, 03:22:04)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  kreker, скачал, посмотрел.
Все частоты на своих местах, только что бы их хорошо разглядеть нужно дацнсамплинг сделать хотя бы до частоты дискретизации 500 Гц, а то на такой дикой частоте дискретизации для таких сигналов просто всё в кучку, в начале сжато.
Вот что даёт быстрое преобразовпние фурье блэкмен-харрис 65536 точек (записи сделан даунсамплинге до 500 Гц), можете в эксель загнать и график расчертить встроенными средствами экселя:
Скачать файл: Резульат анализа записи "Движение вблизи датчика.wav"
Уровни там в децибеллах, думаю знаете, что это за единицы, так что пики по уровню там на шкале частот достаточно хорошо выражены (конечно их попортили шумы усилителя и искажения связанные с зашкалом по уровню (что даёт гармоники), но для детектирования вполне).

Единственное что могу сказать: датчик у Вас получился глухой (слепой) - нужное подчеркнуть. У меня такой размах колебаний, как у Вас на расстоянии "перед датчиком" соответствует расстоянию до датчика метра три, соответственно размах как у Вас "на расстоянии метр" у меня на расстоянии метров 7. У меня на расстоянии метра на осциллографе отчётливо видно колебание, если я только указательным пальцем шевелю.
Думаю у Вас операционный усилитель не обеспечивает усиления или сам генератор не в режиме (мал h21э транзистора на частоте на которой работает датчик, мала площадь резонатора-антенны или мала добротность резонатора). Хотя на 5 вольт, вроде вполне вменяемый размах колебаний.
Впрочем мы опять отходим от алгоритма и возвращаемся в начало диалога.
Приложены файлы: f27721-0.txt
 
Записано: 2887 дн 4 час 29 мин 7 сек назад (13.06.2016, 23:49:48)

    Страницы в теме:
 1   2   3   4   5   6 


 
Ник:

Пароль к нику:

Число изображённое крупным шрифтом:


Написать комментарий:
[B] [I] [S] [WWW] [YouTube]

Бросить друзьям ссылку на тему:
Если это интересная тема, дайте людям на неё ссылку:
http://27kb.ru/zou.php?f=901&message=8522


О сайте
Правила сайта
  Обратная связь Рекламодателям
  Сотрудничество   Яндекс.Метрика