Всем привет! Не дождался я заказанных деталей и решил попытаться сделать хоть часть из того, что планировал - из того, что есть. Ну хоть попытаться.
Порылся я в закромах и не нашел, к удивлению, сдвиговых регистров и компараторов, но нашёл замечательные операционные усилители LM358, но с одним досадным НО - они оказались в корпусе SO-8 для поверхностного монтажа, но обо всём по порядку.
В первом приближении был использован АЦП ардуино нано. Он же - АЦП микроконтроллера ATmega328p.
Вот он - ничем не примечательный блок, небрежно обведенный красным фломастером. А что это собственно такое?
А это АЦП последовательного приближения (SAR ADC) с архитектурой с распределением заряда на конденсаторной матрице. Десятибитный, на 6 мультиплексированных каналов. С предельной частотой дискретизации с максимальной точностью примерно равной 15 kSPS. Звучит здорово! Жаль, конечно, что 15000 выборок в секунду для осциллографа никуда не годится. К тому же остальной рабочий код сделает количество выборок в секунду значительно меньше. Да и сделать такое на стандартной логике - совсем уж безумная идея.
Что же можно сделать ещё? Что такое АЦП в самом своем примитивном варианте и так ли нужно цифровое преобразование в нашем случае? Сделаем блок-схему нашего устройства.
Входящий сигнал должен быть преобразован во вполне себе не цифровое, а скорее дискретное значение, соответствующее одному из анодов светодиодов в матрице. Допустим при максимальном значении 6 вольт для наших шести светодиодов - значение в 3 вольта должно зажигать третий снизу светодиод. Вернее все третьи снизу светодиоды, но загорится только тот, на который "укажет" сдвиговый регистр. Так что сам по себе АЦП нам не нужен, как и двоично-десятичный дешифратор!
Возьмем простейший вид АЦП и просто не будем кодировать термометрический код в двоичный, чтобы потом не делать обратного преобразования.
Самое простое - это параллельный АЦП. Как он работает:
- Опорное напряжение (Vref) с помощью резистивной цепочки делится на (2^N - 1) равных уровней (для N-битного выхода).
- На каждый уровень напряжения работает свой аналоговый компаратор. Один вход компаратора — это опорный уровень, другой — входной аналоговый сигнал.
- Выходы
компараторов образуют тот самый термометрический код (например, для 3-битного АЦП:
00000111, где младшие биты — «1», если напряжение выше их порога). - Этот термокод подается на шифратор, который преобразует его в стандартный двоичный код.
Работает почти мгновенно. Ограничение только в скорости переходных процессов в компараторах, емкости системы, разводке платы, согласованности импедансов... Но несколько мегагерц на быстрых компараторах - вполне реально даже на макетке. Нечеловечески сложно, но реально :) Чтобы повторить точность АТмеги с ее 10 битами нужно 2^10 - 1 = 1023 компаратора! Нет, сынок, это фантастика...
Но нужно ли? Ведь это количество значений мы всё равно преобразуем в 6 уровней сигнала! Так что шести компараторов вполне себе хватит. И шифратора- дешифратора не нужно!
Быстренько исправим часть схемы, реализующей "вертикальную развертку".
Работает это так: В основе всего - источник опорного напряжения для компараторов на резисторном делителе. Подстроечный резистор служит для регулирования общего напряжения на делителе в диапазоне от 0В до Vcc - в данном случае 5В. Для примера возьмем напряжение в 6 вольт и 6 одинаковых резисторов.
Каждый узел делителя образует опорное напряжение с шагом в 1 вольт( для наглядности).
Далее компараторы - они сравнивают входящий сигнал с опорным напряжением.
Ну и так далее. Получается отличный индикатор уровня звука) Нам оно и нужно!
Кстати, для индикаторов уровня звука есть готовые микросхемы. Например LM3914.
Их даже в каскады соединять можно! И резисторы токоограничивающие на каждом светодиоде не нужны. Цену на ЧиД лучше не смотреть. Страшно. Но вполне себе готовое решение. А я, пока что, спаяю своё.
Сразу в макет осциллографа я свой сегодняшний эксперимент внедрять не стал. Хочется дождаться нормальных компонентов и чуть переработать концепцию, а корпуса операционных усилителей (по сути те же компараторы, только кучерявые) не помеха, если есть переходные платки.
Раздобыл ещё макеточку.
Спаял по схеме и протестировал.
Вместо выхода генератора можно подключить микрофон с простейшим усилителем, покрутить подстроечный резистор и наслаждаться цветомузыкой :)
Так же, если термометрический код нравится не так сильно, как точка, соответствующая уровню сигнала, то можно это всё очень просто доработать.
Добавление p-n-p транзистора на каждый канал позволит "погасить" все светодиоды кроме того, что соответствуют уровню. Интересно, что в симуляторе вообще не важно с какой стороны коллектор, а с какой эмиттер! Так ли это на самом деле и правильно ли они изображены на схеме? Напишите в комментариях. Спаяю, проверю, может быть транзисторы пожгу. А может быть это повод поглубже закопаться в теорию!
Всем спасибо за просмотр! Жду детальки и коплю идеи для того, чтобы сделать прибор хоть сколько-то полезным в конечном итоге. Например не плохо было бы добавить частотомер, индикатор напряжение/светодиод и пару ручек для грубой и точной подстройки частоты горизонтальной развертки. Как всегда буду рад комментариям, особенно конструктивным! До свидания!