На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 48,
участников - 4 [ evgen10123, Evpator, Bujhm67, Vlad1]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Разработка, ремонт, схемы, модификации —› Превращение китайского GOOIT Frequency Counter GY-560 в "умный" частотомер. 
Портативные Си-Би радиостанции в нашем магазине


Беркут Hunter
руб.

Егерь 3
руб.

President Randy II P
руб.

Турист 3
руб.

Штурман 80
руб.
Автор Сообщение
killer258
Участник
Offline3.2
с янв 2010
Тула
Сообщений: 3304

Дата: 05 Фев 2019 17:56:27 · Поправил: killer258 (05 Фев 2019 20:35:57) #  

Я переделал немножко этот многим известный частотомер так, как удобнее мне. Возможно, кому-то это тоже может оказаться полезным, поэтому выложу здесь идею, что было изменено в конструкции платы и исходник моей прошивки с расширенным функционалом вместо штатной, которая там была ( на микропаскале. но , глядя на текст исходника , который я выложу чуть позднее, можете то же самое написать и на си). Программная память атмеги8 заполнилась под 85% , так что пока можно ещё что-то дописать туда дополнительно, если придут в голову новые идеи.

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

Короче, попользовавшись немного этой моделькой, я её немного модифицировал.

В результате этот частотомер работает непрерывно, пока есть питание (вместо кроны поставлено 2 маленьких Li-ion 1200ma*h соединённых последовательно (ток потребления у этого частотомера 50 миллиампер, так что кроны дюрасел хватает примерно на 2 с половиной часа, а этих полностью заряженных аккумуляторов на примерно 24 часа автономной работы должно хватить, то есть можно оставить девайс на сутки где-нибудь в помещении, а потом поглядеть в памяти все записанные частоты, если была активность..

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

Далее процессор лезет в свой еепром, где размещается до 32 записей и оглавление (каждая запись состоит из 16 байт, один байт на уровень принятого сигнала, 4 байта на частоту (при подсчёте было задействовано 3 байта, но поскольку счёт шел после прескалера на 64, то надо ещё умножать всё это на 64, поэтому 4 байта здесь использую для хранения и вывода на экран частоты (Double Word)) , остальные байты зарезервированы на будущее. если бы у атмеги были свободные ножки, можно было бы вписывать туда также время и дату для обнаруженного сигнала и координаты GPS датчика, но сейчас этого нет). Пробегая в цикле по всем записям, он сравнивает измеренную только что частоту с теми, что уже записаны в память, если она не совпадает ни с одной из уже имеющихся, то производится добавление новой записи ,инкрементируется количество имеющихся записей в оглавлении, на одной из позиций ЖКИ в нижней строке отображается символ "+", означающий, что в памяти есть непрочитанные сообщения. Так же в соседней позиции будет показан номер этой последней записи и заловленная последний раз частота (как на фото : 452.6624 мгц) Об этом событии также извещается коротким звуковым сигналом. Двумя кнопками "Up" и "Dwn" можно листать этот список, записанные частоты с указанием уровней будут отображаться в нижней строке индикатора . До десятых долей килогерца. При листании записей значок "+" с экрана исчезнет.
Должен заметить, что это же самое может делать и готовый фабричный девайс ST-007, описанный в http://www.t-ss.ru/st_007.htm , но во-первых, он довольно дорог, во-вторых , к большому сожалению , он показывает частоту с точностью только до десятков кгц, что означает при шаге в 12.5 кгц неопределённость определения частоты обнаруженного РЭС плюс-минус целый один канал, и именно это и побудило меня отказаться от использования его и перейти к разработке его аналога, на основе имевшегося у меня стокового китайского частотомера GY-560. После чего он стал выглядеть так:


Увеличить


Увеличить


Увеличить


Увеличить


Поскольку Atmega8 там в дипе, а перепрошивка её внутрисхемным программатором неудобна из-за того, что пришлось бы резать дорожки на плате (да ещё и вывод Reset сконфигурирован не как сброс, что не позволяло её перепрошить прямо в плате),мне её пришлось выпаять и отложить, а вместо неё воспользоваться новенькой 8-ой атмегой, вставляемой во впаянную на место старой атмеги колодку. Так удобнее вынимать её и вставлять в программатор, если возникнут мысли что-то ещё переделать в программе.
Исходный текст прошивки и сам HEX-файл для всех желающих приведу здесь чуть позже , а пока расскажу, какие изменения надо сделать в самой плате. Из-за того, что я применил более удобный ЖКИ индикатор 2х12 вместо 2х8, мне пришлось использовать корпус чуть большего, чем был у родного девайса , размера. Можно оставить и родной индикатор, а значит, и родной корпус, но пользоваться будет неудобно.
Вывод Reset у меня испоьзуется традиционно, поэтому дорожка, идущая к нему перерезана, и эта ножка подвешена к питанию 5 вольт через резистор 10 килоом.

Не использованные в родной схеме линии портов атмеги PD3 и PD6 (ножки 6 и 12 соответственно) идут под кнопки Up" и "Dwn", тоже подтянуты резисторами 3 килоома к питанию. (можно сделать и внутренние подтяжки, но я к ним отношусь скептически в отношении помехоустойчивости из-за очень малого тока подтяжки)

выводы PD1 и PD3 задействованы как противофазные выходы для пьезопищалки (можно было бы как альтернативу задействовать имеющийся на PD3 транзисторный ключ для управления эдектромагнитным зуммером, звук будет громче, но я не стал так делать.ключ отсоединён от выхода).

Немного изменен сам алгоритм подсчёта. У них сигнал с выхода прескалера MB506 (свч делитель на 64,128 и 256) делился вначале микросхемой 74НС393, результат в праллельном коде (1 байт) поступал в атмегу, а сам делённый сигнал шел на вход внешнего счёта двухбайтового таймера-счетчика TMR1 (PD5). Внешний счётчик 74НС393 обнулялся по сигналу с ножки атмеги PD1.
Я поступил иначе. 74НС393 я вообще убрал, пустив сигнал напрямую с прескалера в атмгу (замкнул 1 и 8 площадки на плате, оставшиеся после отпайки 74НС393, а при переполнениях Timer1 я в прерываниях инкрементирую дополнительный регистр, получая таким образом третий байт частоты. Кварц у них там был 4 мгц, пришлось вместо него поставить на 16 мгц, в связи с тем, что без 74НС393 частота на счетном входе TMR1 будет побольше.
В этом варианте он меряет где-то до 500-600 мгц, но мне больше и не требуется. Хотя, поскольку есть ножки атмеги,, освободившиеся после удаления 74НС393, их можно использовать для коммутации коэфф деления MB506 с 64 на 128 или 256 . В последнем случае будет мерить до 2 гГц.
На низких частотах чувствительность этого делителя падает, менее 60 мгц мерить проблематично, хотя атмега бы отработала. Доходит до того, что, скажем, 50 мгц показывать не хочет, начинаешь увеличивать сигнал- покажет 100 мгц, то есть на 50 мгц чутьё настолько мало по сравнению с чувствительностью на 100 мгц, что ему легче вторую гармонику увидеть, чем 50 мгц. Так что о LOW BAND можно забыть с таким прескалером. Или найти другой. Но для работы в диапазонах 160мгц , 300 или 450 мгц данный девайс вполне годится.

Продолжение следует.

в дальнейшем собираюсь также "скрестить" этот проект с моим прошлым проектом по управлению R820T, в результате чего R820T будет всё время настраиваться на ту частоту, какую в данный момент намерял частотомер, а при наличии достаточного уровня сигнала ещё и открывать шумодав, и в итоге получим приёмник, почти мгновенно настраивающийся на любую появившуюся вблизи передачу и тут же демодулирующий её . В отличие от сканирующего приемника, который может просто не успеть добежать до частоты, на которой что быстро "вякнуло".

В принципе, я мог бы и в этом проекте предусмотреть передачу заловленной в эфире частоты по RS232 на какой-нибудь AOR , ничего сложного в передаваемом туда пакете нет. Поскольку использована плата от GY-560, где эта ножка раньше управляла внешним делителем 74hc393, который сейчас убран оттуда, то можно использовать её дополнительную функцию ( UART ) .
СЦБист
Участник
Offline6.6
с мар 2006
Москва
Сообщений: 6527

Дата: 05 Фев 2019 18:56:00 #  

Достойно. Давно так не заморачивались на форуме ))
Реклама
Google
CDMA
Участник
Offline4.0
с июн 2006
Москва
Сообщений: 481

Дата: 05 Фев 2019 23:13:51 #  

Достойно
Присоединюсь. Радиосканнер-торт!
killer258
Участник
Offline3.2
с янв 2010
Тула
Сообщений: 3304

Дата: 06 Фев 2019 09:19:30 · Поправил: killer258 (06 Фев 2019 18:34:02) #  

Немного о модификации прошивки. (вернее, пришлось писать новую с нуля, так как исходником этого донора не располагаю). Постарался написать под уже существующее "железо", чтоб как можно меньше резать дорожки на плате. (хотя немного всё же пришлось, так как теперрь есть две кнопки, зуммер и цепь ресета, чего не было предусмотрено в стоковом варианте). Моя прошивка отличается функционально от штатной в основном добавлением функции сохранения частот и уровней сигнала в памяти в виде листаемого на экране ЖКИ списка и звукового извещения о захвате частоты. Собственно, в измерительной её части ничего принципиально нового нет, всё сделано самым стандартным образом.

В интернете полно проектов любительских частотомеров. Одни используют для этого восьмибитный TMR0 и инкрементируют дополнительные байты по переполнению его, другие используют 16-битный TMR1, я особой разницы не вижу в этом, но поскольку в штатном варианте был использован вход счёта TMR1, то и я использовал его тоже. Правда, они ещё прежде чем подать туда сигнал, сначала поделили его внешним счётчиком 74НС393, снимая данные в параллельном коде с его выходов. Я тоже вначале попробовал так же делать, чтоб не вносить изменений в печатную плату, и потому , что потому что ихняя идея мне была понятна, и у меня это даже работало, но были какие-то глюки в самых младших разрядах результата, разбираться не было времени и желания, и я пошёл классическим путём, убрав этот 74НС393, пустив на атмегу сигнал напрямую с прескалера (и заменив кварц при атмеге с 4 мгц на 16), поскольку данный способ у меня был отработан и отлажен ещё и раньше.

Если сразу выложить весь исходник, то будет трудно понять, что здесь главное, поэтому сначала покажу только ядро программы, так сказать основную часть, которая собственно всё и меряет. Всё остальное - второстепеннное, но оно по обьёму превышает основную часть, и из-за него уже текст становится громоздким и менее понятным. Поэтому сначала привожу основную часть.
Ну, тут всё просто и кода совсем немного:



// подготовка:

// настройка счётчика-таймера Т1
TCCR1B:=7; // на счёт по внешнему сигналу по растущему фронту на входе Т1 (настройка по отдельным битам данного регистра почему-то не срабатывает!)
PORTD.5:=1; DDRD.5:=0; // BХОД T1 С ПОДТЯЖКОЙ

SREG_I_bit := 1; // разрешим прерывания






// процедура обработки прерывания по переполнению таймера TMR1:

//========================================================
procedure Timer1Overflow_ISR(); org IVT_ADDR_TIMER1_OVF;
begin
Inc(R); // инкрементируем дополнительный байт R
end;
//==========================================================






// собственно цикл измерения (1 сек.) :

// ===========цикл измерения в 1 секунду ==============================================
R:=0; TCNT1H:=0; TCNT1L:=0; // ВСе счётные регистры СБРОСИМ
TCCR1B:=7; // запуск счета TMR1 от внешнего сигнала
TOIE1_bit := 1; // Timer1 overflow interrupt РАЗРЕШЕНО
delay_ms(1000); // ЖДЁМ 1 СЕКунду
TCCR1B:=0; // останавливаем TMR1
TOIE1_bit := 0; // Timer1 overflow interrupt ЗАПРЕЩЕНО
//=====================================================================================

// сборка результата (с умножением на 64 прескалера и деление на 1000 чтобы в килогерцах было
CNNT_L:= TCNT1L; CNNT_H:= TCNT1H; // СЬЁМ двух млад байтов РЕЗУЛЬТАТА (только в такой
//последовательности и только так не иначе, эту строчку не заменить ничем !!!)
cnnt:= 64*(CNNT_L + 256*CNNT_H + 65536*R) DIV 1000; // сцепка трёх байтов с учётом
//того,что коэфф деления прешкалера=64 и отброшены герцы (делим на 1000)

Dword_DEC_TO_LCD(1,5,cnnt); // ИНДИКАЦИЯ частоты на ЖКИ

//=======================================================================================



// далее так же точно меряем раз за разом, сравнивая результат с предыдущим каждый раз





// cобственно говоря, если взять и прошить в атмегу только лишь одно только это вышенаписанное и плюс ещё отображение уровня линейкой на ЖКИ,
то это и будет тот же cамый функционал, что имелся у штатного GOOIT Frequency Counter GY-560 до его переделки.
Но, мне интереснее было пойти дальше :-)
Чуть попозже немного попричешу файлы проекта и постараюсь как-нибудь прикрепить в виде архива
killer258
Участник
Offline3.2
с янв 2010
Тула
Сообщений: 3304

Дата: 07 Фев 2019 18:18:28 · Поправил: killer258 (07 Фев 2019 18:31:58) #  

Вот обещанные файлы проекта.
http://www.radioscanner.ru/uploader/2019/__moj_variant_gy_560.rar

проект создан на микропаскале для AVR от Mikroelektronika (к сожалению, не знаю никого, кто бы тоже использовал эту среду разработки, но я к ней привык уже)
Кому интересно, то основной файл исходника там называется Timer2_interrupt.mpas
(пусть название не смущает. первоначально этот проект был на тему использования прерываний от TMR2)
Кому алгоритм исходника не интересен, можете просто взять оттуда файл прошивки под названием
Timer2_interrupt.hex и прошить им атмегу8 с фьюзами BODEN и CKOPT.
Кварц в плате поменяете на 16 мгц. Точная подстройка показаний частоты производится тем же подстроечным кондёриком, который для этой цели был и у них.
Схема частотомера GY-560 вроде здесь где-то на форуме имеется, если что.
СЦБист
Участник
Offline6.6
с мар 2006
Москва
Сообщений: 6527

Дата: 07 Фев 2019 18:43:07 #  

killer258, ну, а теперь, это всё статьёй в раздел "Модификации". :-)
killer258
Участник
Offline3.2
с янв 2010
Тула
Сообщений: 3304

Дата: 07 Фев 2019 20:11:52 · Поправил: killer258 (07 Фев 2019 21:31:11) #  

так мы вроде и так находимся сейчас в разделе "разработка, ремонт, схемы и модификации"
я что-то не вижу здесь никаких подразделов.
sinobi2006
Участник
Offline2.0
с дек 2005
Сообщений: 179

Дата: 04 Июн 2019 16:52:36 #  

Подскажите -а lm358 какую функцию в схеме выполняет?
sinobi2006
Участник
Offline2.0
с дек 2005
Сообщений: 179

Дата: 04 Июн 2019 16:54:14 #  

По идее если взять Вашу прошивку и любой прескалер-то получится такой прибор.Экран можно oled i2c задействовать
СЦБист
Участник
Offline6.6
с мар 2006
Москва
Сообщений: 6527

Дата: 05 Июн 2019 01:40:05 #  

killer258, я про Модификации
 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.019; miniBB ®