Двухканальный индикатор уровня сигнала с эффектом Peak hold на микроконтроллере PIC16F88
Tags: [add]
Меня заинтересовал интересный проект индикатора уровня сигнала на микроконтроллере PIC16F88, который размещён на странице https://s-o.webnode.cz/vu-metr/. В сравнении с конструкциями на популярных специализированных микросхемах типа LM3915, данный проект содержит небольшое количество деталей и при этом получается намного функциональнее. Ведь сделать функцию Peak hold (запоминание пиков) на таких микросхемах слишком громоздко и сложно. Поэтому, применение микроконтроллера выглядит привлекательным решением.
Я не буду полностью повторять содержимое авторской статьи, лишь кратко перескажу основные сведения.
Схема

Уровень стереосигнала отображается на двух светодиодных линейках (шкалах), состоящих из 16 светодиодов каждая (2х16) в следующих режимах:
| Перемычка (JP) | Снята | Установлена |
| 1 | светящийся столбик | светящаяся точка |
| 2 | логарифмическая шкала | линейная шкала |
| 3 | с Peak hold | без Peak hold |
| 4 | Peak скользящий | Peak исчезающий |
Выбор режима осуществляется установкой или снятием перемычек (JP), причём режимы можно комбинировать в разных сочетаниях.
Подстроечный резистор P1 меняет опорное напряжение (VREF) на выводе 2 микроконтроллера, тем самым изменяя чувствительность входов индикатора. Чем ниже напряжение на выводе 2, тем больше чувствительность. Для наибольшей чувствительности рекомендуется не менее 200 мВ. Если при данном опорном напряжении уровень сигнала не позволяет засветить всю линейку светодиодов, его необходимо усилить. Ни в коем случае напряжение на выводах 17, 18 микроконтроллера не должно превышать 5 В.
Уровень сигнала может отображается в линейном и логарифмическом масштабе. Логарифмические значения формы сигнала хранятся в памяти программы (EEPROM), их можно отредактировать по своему усмотрению. На странице проекта есть описание, как менять значения данных EEPROM. Также есть прошивки под другие микроконтроллеры и описаны конфигурации микроконтроллеров. Я повторил эту конструкцию на микроконтроллере PIC16F88, в прошивке никаких данных не менял, конфигурация есть в самой прошивке. Т.е после прошивки и сборки всё начало работать.
Конструкция и детали
На странице проекта есть печатная плата, но она рассчитана под выводные детали, я сделал свою плату, с применением SMD 1206. Диоды D1, D2 - BAT42, резистор P1 - 3314G-1-103E (ЧиД).
Светодиоды я решил не впаивать в плату, а установить в однорядные цанговые панельки.

Это сильно упростило подбор светодиодов по яркости путём их перетыкивания. Почему-то зеленые светодиоды имеют субъективно меньшую яркость, чем красные и желтые и ещё у них заметный разброс по яркости.
Также на плату в питание я добавил танталовый конденсатор, отмеченный как C#.

Дополнительно
Данный индикатор я хотел использовать для контроля уровня сигнала, подаваемого на вход электронного темброблока. Поэтому потребовалось сделать предварительный усилитель, который бы обладал высоким входным сопротивлением, мог питаться от 5В и усиливать сигнал близко к уровню напряжения питания.
В результате получилась такая схема:
Данная схема усиливает только положительную полуволну входного напряжения, а отрицательную ограничивает, т.е. выполняет еще и функцию однополупериодного выпрямителя. Но я не советую вместо диодов D1, D2 на входах индикатора ставить перемычки: они не дают сглаживающим цепочкам C1R9, C2R10 разряжаться на резисторы обратной связи ОУ.
Предварительный усилитель с источником питания 5В на одной плате:

Фото







Демонстрация работы
Файлы
- Платы, исходник, прошивка для PIC16F88: VUM88.zip