частотный демодулятор - частота 2350 герц

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

c iq я знаком, это не из этой оперы
внезапно оказывается можно выкинуть частотную модуляцию и запилить любое гавно типа ctcss, что в рациях шумодав открывает
правда я опять нихера не нашел готовых библиотек или кода

есть у меня софт на сях, который кодирует текст и шлет в динамик или вейв файл
но нет декодера, зато есть декодер для авр, но я без понятия, как это декодировать из аудиопотока
есть мануал, как все закодировано

может кто подскажет готовый код или библиотеку fsk демодулятора для звуковой карты
тематические ответы только в форуме, в приват не пишите
Реклама
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

и еще
я нашел алгоритм герцеля, только я нихера не понял в его параметрах
что подается на вход и что получается на выходе и как это использовать?
http://khason.net/blog/sound-tone-and-d ... mentation/

например вот тут
1200 – -272.273842954695
2400 – -198.538262992751
3600 – -214.476846236253
4800 – -224.242925995697
6000 – 87.1653837206957 <- here result
7200 – -225.52220053475
8400 – -222.836254116698
9600 – -230.526410368965
10800 – -220.587695185849

что это такое и что за цифры?
---
public double CalculateGoertzel(byte[] sample, double frequency, int samplerate)
чот за параметры передаются?
откуда их брать?
тематические ответы только в форуме, в приват не пишите
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Там же написано
Частота-Оценка
87 = положительный результат
-200 или около того = неправильный результат.
В реальном сигнале где туева хуча всяких частот их гармоник пороговое значение надо подобрать экспериментально.

----
буфер записи с микрофона, исследуемая частота, дискретизация
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

т.е. если число отрицательное, то это не верный результат?
а если будет 2 положительных?
где задается количество этих результатов и на что оно влияет?

размер буфера в чем измеряется?

что значит исследуемая частота? там же 2 частоты в дтмф или фск
тематические ответы только в форуме, в приват не пишите
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Очевидно, что 87 >> -200
Оценка также может быть невысокая если сигнал искажен.

Буфер меряется байтами, словами, выборками. Как условитесь. Зависит от потребностей и исходного материала. Тот программер насколько я понял сам алгоритмически синтезировал сигнал.

Герцель меряет 1 частоту. Сразу много частот меряют другие алгоритмы.
Реклама
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

uk8amk писал(а):Герцель меряет 1 частоту. Сразу много частот меряют другие алгоритмы.
тогда я не понял, как в дтмф различают 2 частоты?
тематические ответы только в форуме, в приват не пишите
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Попробую объяснить "на двух пальцах" без формул и "заумных терминов".
Даже если вы "прогоните" DTMF через компаратор, основные частоты останутся в спектре сигнала на выходе компаратора. Просто, к ним будут добавлены нечётные гармоники.
Представьте, что у вас есть два синхронизированных генератора, которые формируют некую частоту. Второй работает со сдвигом 90º.
Почему нужны генераторы со сдвигом 90º: невозможно предсказать фазу сигнала на входе.
Выходы этих генераторов микшируете со входным сигналом в два "выходных".
Так вот, как только во входном сигнале появится частота, которая совпадает с частотой генераторов, уровень сигнала (усреднённый) после микширования резко изменится в "+" или "-" (в зависимости от фазы входного сигнала).
Теперь представьте, что у вас не одна пара генераторов, а столько, сколько частот вы ожидаете "увидеть"......
Теперь ближе к программе.
Генераторы заменяете "прогоном" таблиц. Тупо их смешиваете со входным сигналом (арифметически "+") и делаете усреднения по каждой частоте (sin и cos).
В прикреплённом файле - программа АОН-а на ASM (Z80). В своё время, когда я делал свою программу (под PIC16), изучал тему именно по этому исходнику.
Спойлер
AON.rar
(5.14 КБ) 46 скачиваний
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

kalobyte писал(а):
uk8amk писал(а):Герцель меряет 1 частоту. Сразу много частот меряют другие алгоритмы.
тогда я не понял, как в дтмф различают 2 частоты?
Никто же не запрещает вызвать подпрограмму несколько раз и посмотреть интересующие частоты.
Однако если частот слишком много или надо увидеть весь спектр, то БПФ окажется эффективней.
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

все равно нихера не понял
ацп не знает ничего о частотах
откуда они берутся? я так представляю, что за основу берется частота семплирования ацп
ну допустим она 11кгц
тогда по теореме котельникова можно будет получить 5.5кгц, а у нас типа частоты лежат в пределах 4кгц
как пример

сколько времени работает ацп и что он за это время делает? в частности если используется звуковая карта
что с точки зрения кода я получу на выходе?
массив? сколько элементов там должно быть? это связано с частотой семплирования?
в них хранится код амплитуды
нулевой элемент содержит частоту 0гц, так?

дальше что?
Albert_V писал(а):Попробую объяснить "на двух пальцах" без формул и "заумных терминов".
это как раз не на двух пальцах, это абстгактно и нихера не понятно
чтобы было понятно - все должно быть приближено к реальности
реальный код, в нем каждая переменная расписана
откуда она взялась, зачем нужна и все такое

нужна диаграмма работы алгоритма герцеля и бпф

ничего такого я не нашел, везде одна вода, заумные формулы или куски кода
Albert_V писал(а):Представьте, что у вас есть два синхронизированных генератора
у меня есть один провод, по которому идет звуковой поток всякого гавна и это гавно не должно вызвать ложных срабатываний
в тишине я передают 2 частоты как на спектруме 1200 и 2200
как мне получить 1 и 0 из них
типа
lognull = get1200();
logone = get2200();
тематические ответы только в форуме, в приват не пишите
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

kalobyte писал(а):...это как раз не на двух пальцах, это абстгактно и нихера не понятно
чтобы было понятно - все должно быть приближено к реальности
реальный код, в нем каждая переменная расписана
откуда она взялась, зачем нужна и все такое
нужна диаграмма работы алгоритма герцеля и бпф
Похоже, Вы ошиблись темой.
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

в чем же ошибка?
для понимания таких материй нужно все конкретно расписывать, кучи картинок, схем и все такое
тематические ответы только в форуме, в приват не пишите
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

kalobyte писал(а):в чем же ошибка?...
За Вас вряд ли кто то будет "строчить" программу с комментариями.
Есть два варианта: пользоваться чужими бибилиотеками As Is не понимая как они работают (но что-то делают) или создать свою программу.
Теперь ближе к теме.
Если речь идёт о "расшифровки" того, что вы выложили в этом посте - там в каждый момент времени присутствует только одна частота.
БПФ там на фиг не нужен, поскольку каждая частота передаётся в течении, приблизительно, 0,02 секунды.
Намного проще, в этом случае, написать программу "измерителя частоты/периода".
Если нужно сделать то, о чём вы говорили в первом посте - поставьте полосовой фильтр на ОУ с детектором по выходу. Это быстрее и проще.
----
P.S.
Если говорить о "спектруме" - копайте библиотеки FSK.
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

Albert_V писал(а):За Вас вряд ли кто то будет "строчить" программу с комментариями.
как раз таки не надо такой вариант
мне же потом дальше писать чего придется и я хочу понять эту тему и я думал может кто даст чего годное посмотреть
годный видос по цос - это как найти алмаз в куче гавна
а быдлокниги я уже не разсматриваю как источник обучения
я уже давно не видел годных книг русскоязычных авторов, если что встречается - так это перевод американских
так что задорнов тут отдыхает :tea:

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

поставлю сейчас на новый компутер 2013 студию и начну потихоньку ковырять
для начала разобраться бы с работой звуковой карты в шарпе и звуки сгенерировать
тематические ответы только в форуме, в приват не пишите
Мудрый кот
Аватара пользователя
Сообщения: 1833
Зарегистрирован: Вс окт 04, 2009 13:23:12
Откуда: н. новгород

Сообщение anatol378 »

kalobyte, для решения подобных задач необходимо учиться, закончить какой нибудь быдлоинститут, а затем еще и самообучение в определенной области Или сотрудничество с знающими людьми в области цифровой обработки сигналов. Твоя задача, как два пальца об асфальт, решается на простой цифровой логике. Любую логику можно привести к логическому уравнению. Любое логическое уравнение переводится в программное решение. Но иногда скорости или разрядности процессоров недостаточно, тогда опять логика в виде плисины.
Но для быдлофорумчанина это не понять.
Лучше умному тупить, чем тупому умничать
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

заканчивать за 5лет быдловуз, чтобы решать такие задачи? :shock:
я боюсь представить, сколько лет будут учиться будущие поколения, чтобы клепать новые быдлодевайсы

чтобы осилить цос - не надо изучать все эти логарифмы с интегралами
в реальном коде нет никакого интеграла и функции такой тоже нет

я сегодня нашел полезную инфу и причем случайно
я нашел, что такое дельта т, которая там во всяких формулах была
https://ru.wikipedia.org/wiki/%D0%94%D0 ... 0%B8%D1%8F
для нее есть формула тоже

сейчас я ковыряю rtty в быдлодуине и никак не могу на компутере раскодировать в готовом софте
#define BAUD_RATE 20150 // 10000 = 100 BAUD 20150

вот есть такая функция

Код: Выделить всё

void RTTY5::rtty_txbit (int bit)
{
		 if (bit)
        {
                // high
                tone(pa,2295,BAUD_RATE*1000);
        }
        else
        {
                // low
                tone(pa,2125,BAUD_RATE*1000);
        }
        delay(20);
        noTone(pa);
}
pa это вывод, который может быть 1 или 0
функция tone генерирует частоту 2125 или 2295 и длительностью BAUD_RATE*1000
что-то я не совсем понимаю
посмотрел в исходниках эту функцию
// frequency (in hertz) and duration (in milliseconds).

void tone(uint8_t _pin, unsigned int frequency, unsigned long duration)
20150 * 1000 = 20150000, что как-то много
тематические ответы только в форуме, в приват не пишите
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

kalobyte писал(а):...я сегодня нашел полезную инфу и причем случайно...
Озвучьте свой уровень знаний. Так проще будет вести разговор.
Просто, если вы на 3-ей быдлостранице быдлообсужения впервые узнали про быдлотермин "Дискретизация" - я уже не понимаю на каком языке с вами говорить и какие слова для вас будут понятны.
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

kalobyte писал(а): public double CalculateGoertzel(byte[] sample, double frequency, int samplerate)
чот за параметры передаются?
откуда их брать?
Надо определиться со способом получения выборок и их частотой - это будет samplerate, то что ищем - frequency, сами выборки в массиве sample.
kalobyte писал(а): сейчас я ковыряю rtty в быдлодуине и никак не могу на компутере раскодировать в готовом софте
#define BAUD_RATE 20150 // 10000 = 100 BAUD 20150
Я бы лучше герцеля доковырял, вам больше и не нужно.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Мудрый кот
Аватара пользователя
Сообщения: 1833
Зарегистрирован: Вс окт 04, 2009 13:23:12
Откуда: н. новгород

Сообщение anatol378 »

Albert_V , нет у него никаких знаний. Новый Ломоносов - стишки сочинять... Проще - местный балабол, научился складывать пазлы из кусков программного кода и в случае отсуствия какого нибудь кусочка - тупик.
Лучше умному тупить, чем тупому умничать
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

написал много букв, потом ковырял софт и браузер упал :shock:
видать столько букв не нужно писать
тематические ответы только в форуме, в приват не пишите
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 374
Зарегистрирован: Пт июн 12, 2015 09:21:56
Откуда: Челяба-сити

Сообщение bad2cat »

kalobyte писал(а):чтобы осилить цос - не надо изучать все эти логарифмы с интегралами в реальном коде нет никакого интеграла и функции такой тоже нет
Это, кстати, правда, для этого не надо
kalobyte писал(а):заканчивать за 5лет быдловуз
У меня всегда таже проблема - только начинаешь что-то читать про обработку, как лезут эти вшивые математики с интегралами ни разу не писавшие программы, но сующие везде свои интегралы. Проблема всегда - как от этих интегралов перейти к ассемблеру. :))
Вместо объяснения, эти, богом обиженные люди (математики, например Гриша Перельман), пытаются выпендриваться и самоутверждаться.
Ну ладно, мы посмотрим на вас, поплюёмся, а потом всё-таки сделаем свою задачу. Но вы, математики, так и останетесь "с кривыми ногами". :))
Я тоже, в некотором роде, радиоинженер...
Ответить

Вернуться в «AVR»