Самоделки

Цифровая шкала на ИН8-2 и ATtiny2313

октябрь 2015г. - январь 2016г.

Небольшая "преамбула"... С 2007 по 2010 годы у меня был застой. Радиотехникой вообще не занимался. Зато очень меня увлекли тогда web-технологии. Создание сайтов, HTML вёрстка. Этот сайт тоже верстал вручную в "Adobe Dreamweaver". Особенным особняком стояло программирование ActionScript в "FLASH"-технологии (всякие там музыкальные плееры на сайтах). Потом увлёкся серверными языками программирования, в частности PHP. Книжек всяких накупил по этой тематике.

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

Кхм... что-то я отвлёкся. Всё это, как не сложно догадаться, рано или поздно привело меня опять к радиотехнике, точнее к симбиозу радиотехники и программирования. А это не что иное, как микроконтроллеры. Купил сначала книгу Белова А. В. "Самоучитель разработчика устройств на микроконтроллерах AVR" которая дала мне тот самый "волшебный пендель". Потом в "ЧИП и ДИП" купил отладочный стенд "EasyAVR5A" скачал "CodeVisionAVR" и начались "трудовые будни".

Отладочный стенд EasyAVR5A

Отладочный стенд "EasyAVR5A"

Сначала помигал светодиодом. Потом, решив, что это слишком примитивно, резко полез в "бурелом". Начал писать программу для управления аудиопроцессора TEA6300 по шине I2C. Когда добился его работы, решил добавить к нему двухстрочный дисплей 1602, который с контроллером HD44780. А когда и это удалось, прицепил к нему и систему ИК дистанционного управления по протоколу RC-5.

Освоение всего этого было не сложным, потому что язык Си, который используется в "CodeVisionAvr", был очень похож на ранее упомянутые ActionScript и PHP, поскольку всё это языки высокого уровня.

А потом я купил книгу Юрия Ревича "Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера". Сначала было страшно, а потом ничего, втянулся. И чесслово, мне даже более интересно программировать на ассемблере, нежели на "СИ", потому что здесь уже и упомянутые кирпичики тоже самому надо было изобретать. Да, писать программы стало сложнее, иной раз так мозги пропаривает, но от этого и интересней. Начинаешь уже более детально видеть архитектуру микроконтроллера. Да, так уж получилось, что с языков высокого уровня я скатился в язык низкого уровня. Обычно всё делается с точностью до наоборот.

* * *

Но вернёмся к нашим баранам. А что если самому сделать цифровую шкалу к нашему тюнеру - подумал я, когда для проверки использовал оную от нерабочего приёмника "Mason". Решил попробовать. В сети можно найти много вариантов часов под старину с цифровыми неоновыми индикаторами. И подумал: может сделать то же самое для шкалы? Решил использовать 4-х разрядную шкалу с индикаторами ИН8-2. Индикацию применить динамическую, что позволит сэкономить дешифраторы К155ИД1. Он нужен один. Микроконтроллер ATtiny2313 и делитель частоты на U813BS. Это что касается железа.

Что касается программы, то кратко алгоритм такой:
1) Делим частоту гетеродина на 256 с помощью делителя U813BS.
2) Считаем количество импульсов, пришедшего с делителя в интервале 0.1 секунды.
3) Вычитаем из этого количества частоту ПЧ, тоже поделённую на 256, а потом ещё и на 10, поскольку интервал подсчёта не секунда, а 0.1 секунды.
4) Разложение полученного числа по разрядам, т. е. считаем, сколько у нас получилось сотен мегагерц. Записываем это число в первый разряд. Считаем, сколько получилось десятков мегагерц и записываем это число во второй разряд. Считаем, сколько получилось единиц мегагерц и записываем это число в третий разряд. И, наконец, считаем, сколько получилось десятых долей мегагерца (после запятой) и записываем это число в четвёртый разряд.
5) Поскольку у нас индикация динамическая, организовываем поочерёдное кольцевое переключение разрядов с частотой не менее 240 гц. Каждый индикатор при этом будет мерцать с частотой 60гц.

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

Более детально описывать, как именно всё делал, не буду, это займёт несколько страниц. Добавлю, что в своём варианте, помимо собственно шкалы организовал там ещё и задержку включения анодного напряжения. То есть 40 секунд прогреваются лампы, а потом подаётся анодное напряжение. Так же решил ввести таймер на отключение индикации, если в течение 20 секунд тюнер не перестраивался. Т. е. настроили тюнер, 20 сек. индикаторы светят, потом выключаются. Если опять начинаем настраивать тюнер, система ловит изменение частоты гетеродина и вновь включает индикаторы и т. д. Так как это функция работает на обнаружение изменение частоты, то гетеродин должен быть достаточно стабильным, иначе индикаторы всякий раз будут включатся, как только частота его поплывёт.

Прежде чем писать программу, решил нарисовать схему макета этой самой шкалы и для удобства изготовления макета, а также последующего отлаживания и прочей ловлей блох, в качестве индикатора использовать семисегментный светодиодный индикатор LF0566AWK. Он четырёх разрядный и заточен под динамическую индикацию. Да и цвет свечения мне нравится не красный, а ближе к неоновому. В общем, родилась вот такая схема:

Схема цифровой шкалы со светодиодным индикатором

Из неё видно, что в качестве выходного порта полностью использован порт "B". Младший его полубайт для кода отображаемой цифры. Этот код дешифратор КР514ИД2 преобразует в цифру на семисегментном индикаторе. Старший полубайт порта "B" через транзисторные ключи в узлах А1-А4 коммутирует аноды индикаторов.

Для зажигания десятичной точки использован "нулевой" бит порта "D", сформированный на выход. Высокий сигнал на нём открывает транзистор VT1, подключая её (десятичной точки) к земле.

С делителя U813BS импульсы подаются на транзистор VT2, а с его выхода - на вход таймера "T1", который сформирован на подсчёт приходящих импульсов.

Для реле использован "шестой" бит порта "D", сформированный на выход. С него сигнал поступает на ключ VT3, а он, в свою очередь, управляет реле. Кстати, здесь реле работает как бы наоборот. При включении тюнера оно сразу срабатывает и разрывает анодную цепь, а по прошествии времени отпускает контакты и включают анодное напряжение. Таким образом, реле работает только первые 40 секунд и дальше в работе не участвует.

Дроссели L1 и L2 обеспечивают дополнительную помехозащищённость в цепях питания. Для микроконтроллеров это достаточно актуально. Даже включение анодного напряжения может создавать значительную помеху и приводить к сбою работы микроконтроллера.

Собрал всё это в железе на макетной плате и стал потихоньку писать программу. Так, неделька за неделькой, паря себе мозги, написал таки прогу.

В макете не стал заморачиваться с высвечиванием десятичной точки и релюшкой. Здесь видео испытания шкалы. Приём плохой, т. к. антенный провод свалился на пол, а я сразу не заметил. Да и если честно, ставилась задача проверить саму шкалу, как она работает.

Делитель с его обвязкой собрал на отдельной плате. Ну вроде работает от 88 до 108 мерит. Теперь пришло время воплощать это всё в нормальный вид. Сначала переделал схему:

Схема цифровой шкалы на индикаторах ИН8-2

Как видно, изменения затронули индикаторную часть. Дешифратор, соответственно, заменён на К155ИД1 и транзисторные ключи на высоковольтные. В остальном же схема идентична первой.

Не знаю, стоит ли повторяться про изготовление плат. Всё это подробно описано ранее в очерке про УКВ блок на ECC2000 и ECF80. Вкратце повторюсь. Платы нарисовал в "SprintLayout". С этим у меня есть определённые проблемы, поскольку просто не умею этого делать. Устройство состоит из трёх плат. Одна - собственно основной блок с микроконтроллером, второй - индикаторный блок с дешифратором К155ИД1 и транзисторными ключами, а третья плата - вертикальная перегородка, на которой для дополнительной прочности закрепляются индикаторы. Соединение индикаторов с дешифратором К155ИД1 планируется делать навесным способом с помощью провода МГТФ 0.12.

Распечатал на плёнке фотошаблоны. Покрыл платы фоторезистом, просушил, положил их на основание своего УФ светильника, на них положил фотошаблоны и всё это дело накрыл стеклом.

Рисунки печатных плат

Рисунки печатных плат

Распечатанные фотошаблоны

Распечатанные фотошаблоны

Подготовка к нанесению фоторезиста

Подготовка к нанесению фоторезиста

Сушка фоторезиста

Сушка фоторезиста

Подготовка к засвечиванию фоторезиста

Подготовка к засвечиванию фоторезиста

Засветил фоторезист 4 минуты. Приготовил проявитель из каустической соды и проявлял платы одну за другой. Травил их в своей навороченной посудине с пузырьками. Смыл ацетоном остатки фоторезиста и начисто обработал платы напильником. А потом просверлил отверстия и залудил.

Засвечивание фоторезиста

Засвечивание фоторезиста

Засвечивание фоторезиста

Засвечивание фоторезиста

Процесс травления плат

Процесс травления плат

Протравленные платы с фоторезистом

Протравленные платы с фоторезистом

Протравленные платы

Протравленные платы

Обработанные платы

Обработанные платы

Лудил, в отличие от первого способа, химическим путём, погрузив платы в раствор жидкого олова. С последним, правда не всё однозначно. Как то так получилось, но плату основного блока где-то посеял среди своего радио хлама, да так крепко, что до сих пор не нашёл и пришлось делать её заново. И если при первом лужении результат был идеальный, то при повторном использовании этого жидкого олова результат меня откровенно не порадовал. Олово осаждалось неравномерно, с медными "проплешинами" и с каким то черным налётом. В общем, не знаю, может мне такой экземпляр жидкого олова достался, может ещё чего. Пришлось всё счищать и лудить по старинке, размазывая припой паяльником.

Всё хочу освоить полуду сплавом Розе, да никак.

Подготовка плат к лужению

Подготовка плат к лужению

Процесс химического лужения

Процесс химического лужения

Завершение процесса лужения

Завершение процесса лужения

Готовые платы

Готовые платы

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

Платы в сборе

Платы в сборе

Платы в сборе

Платы в сборе

Монтаж со стороны печатных проводников

Монтаж со стороны печатных проводников

Пробуем включить и... блин, реле не срабатывает. Транзистор открывается и закрывается, как положено. Здесь всё чётко. Вместо РЭС-22 использовал импортное реле на 12 в, а весь блок и реле питается от аккумуляторной "кроны" и видимо девяти вольт ему не хватает.

Ну ладно, проехали. Отсчитав 40 секунд, здесь по логике реле должно обесточиться и, замкнув свои контакты, подать анодное напряжение и включить тюнер, а таймер переключиться в режим шкалы. Переключился. Да не мерит ничего. И только когда выпаял резистор R1, он начал работать. Хотя, когда собирал макет со светодиодным индикатором, всё работало и с этим резистором. Ещё одно подтверждение, что собранное на соплях работает, а переделанное начисто нет. Ну ладно, шкала в принципе работает.

Проверка шкалы общий вид

Проверка шкалы общий вид

Проверка шкалы

Проверка шкалы

Индикаторы в работе

Индикаторы в работе

Тут видео испытания. Камера "видит" нечто больше, чем мы, и поэтому заметно плавное переливание света индикаторов при динамической индикации. На глаз этого не видно. Как и ожидалось, в районе 96 Мгц идёт гул от шкалы, хотя я думал, что он будет по всему диапазону. Хотя не понятно, почему именно 96 Мгц. 12-ая гармоника кварцевого резонатора, который на 8 Мгц?

Каков же итог всего этого? Само устройство работает. Подвело реле, не захотело оно срабатывать от 9 в, хотя наши РЭС-22 которые на 12 в вполне себе и от шести срабатывали. Увы, при себе на тот момент у меня их не было. Второе - экранировка крайне желательна. Третье - очередная порция адреналина от программирования на ассемблере получена.
С уважением, Юрий.