Найти в Дзене
DGO шпаргалка

оСЦИЛЛОГРАФ с самой маленькой буквы. АЦП.

Всем привет! Не дождался я заказанных деталей и решил попытаться сделать хоть часть из того, что планировал - из того, что есть. Ну хоть попытаться. Порылся я в закромах и не нашел, к удивлению, сдвиговых регистров и компараторов, но нашёл замечательные операционные усилители LM358, но с одним досадным НО - они оказались в корпусе SO-8 для поверхностного монтажа, но обо всём по порядку. Первая статья цикла. В первом приближении был использован АЦП ардуино нано. Он же - АЦП микроконтроллера ATmega328p. Вот он - ничем не примечательный блок, небрежно обведенный красным фломастером. А что это собственно такое? А это АЦП последовательного приближения (SAR ADC) с архитектурой с распределением заряда на конденсаторной матрице. Десятибитный, на 6 мультиплексированных каналов. С предельной частотой дискретизации с максимальной точностью примерно равной 15 kSPS. Звучит здорово! Жаль, конечно, что 15000 выборок в секунду для осциллографа никуда не годится. К тому же остальной рабочий код сдела

Всем привет! Не дождался я заказанных деталей и решил попытаться сделать хоть часть из того, что планировал - из того, что есть. Ну хоть попытаться.

Порылся я в закромах и не нашел, к удивлению, сдвиговых регистров и компараторов, но нашёл замечательные операционные усилители LM358, но с одним досадным НО - они оказались в корпусе SO-8 для поверхностного монтажа, но обо всём по порядку.

Первая статья цикла.

В первом приближении был использован АЦП ардуино нано. Он же - АЦП микроконтроллера ATmega328p.

Картинка из даташита.
Картинка из даташита.

Вот он - ничем не примечательный блок, небрежно обведенный красным фломастером. А что это собственно такое?

А это АЦП последовательного приближения (SAR ADC) с архитектурой с распределением заряда на конденсаторной матрице. Десятибитный, на 6 мультиплексированных каналов. С предельной частотой дискретизации с максимальной точностью примерно равной 15 kSPS. Звучит здорово! Жаль, конечно, что 15000 выборок в секунду для осциллографа никуда не годится. К тому же остальной рабочий код сделает количество выборок в секунду значительно меньше. Да и сделать такое на стандартной логике - совсем уж безумная идея.

Что же можно сделать ещё? Что такое АЦП в самом своем примитивном варианте и так ли нужно цифровое преобразование в нашем случае? Сделаем блок-схему нашего устройства.

Этот самый осциллограф.
Этот самый осциллограф.

Входящий сигнал должен быть преобразован во вполне себе не цифровое, а скорее дискретное значение, соответствующее одному из анодов светодиодов в матрице. Допустим при максимальном значении 6 вольт для наших шести светодиодов - значение в 3 вольта должно зажигать третий снизу светодиод. Вернее все третьи снизу светодиоды, но загорится только тот, на который "укажет" сдвиговый регистр. Так что сам по себе АЦП нам не нужен, как и двоично-десятичный дешифратор!

Возьмем простейший вид АЦП и просто не будем кодировать термометрический код в двоичный, чтобы потом не делать обратного преобразования.

Самое простое - это параллельный АЦП. Как он работает:

  1. Опорное напряжение (Vref) с помощью резистивной цепочки делится на (2^N - 1) равных уровней (для N-битного выхода).
  2. На каждый уровень напряжения работает свой аналоговый компаратор. Один вход компаратора — это опорный уровень, другой — входной аналоговый сигнал.
  3. Выходы
    компараторов образуют тот самый
    термометрический код (например, для 3-битного АЦП:
    00000111, где младшие биты — «1», если напряжение выше их порога).
  4. Этот термокод подается на шифратор, который преобразует его в стандартный двоичный код.

Работает почти мгновенно. Ограничение только в скорости переходных процессов в компараторах, емкости системы, разводке платы, согласованности импедансов... Но несколько мегагерц на быстрых компараторах - вполне реально даже на макетке. Нечеловечески сложно, но реально :) Чтобы повторить точность АТмеги с ее 10 битами нужно 2^10 - 1 = 1023 компаратора! Нет, сынок, это фантастика...

Но нужно ли? Ведь это количество значений мы всё равно преобразуем в 6 уровней сигнала! Так что шести компараторов вполне себе хватит. И шифратора- дешифратора не нужно!

Быстренько исправим часть схемы, реализующей "вертикальную развертку".

Схема преобразующая входной сигнал в "термокод"
Схема преобразующая входной сигнал в "термокод"

Работает это так: В основе всего - источник опорного напряжения для компараторов на резисторном делителе. Подстроечный резистор служит для регулирования общего напряжения на делителе в диапазоне от до Vcc - в данном случае . Для примера возьмем напряжение в 6 вольт и 6 одинаковых резисторов.

Каждый узел делителя образует опорное напряжение с шагом в 1 вольт( для наглядности).

Далее компараторы - они сравнивают входящий сигнал с опорным напряжением.

Ну и так далее. Получается отличный индикатор уровня звука) Нам оно и нужно!

Кстати, для индикаторов уровня звука есть готовые микросхемы. Например LM3914.

Их даже в каскады соединять можно! И резисторы токоограничивающие на каждом светодиоде не нужны. Цену на ЧиД лучше не смотреть. Страшно. Но вполне себе готовое решение. А я, пока что, спаяю своё.

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

Переделал SO-8 в DIP.
Переделал SO-8 в DIP.

Раздобыл ещё макеточку.

Вот тут всё и будет закреплено.
Вот тут всё и будет закреплено.

Спаял по схеме и протестировал.

"Пила" в 1 Герц. Работает.
"Пила" в 1 Герц. Работает.

Вместо выхода генератора можно подключить микрофон с простейшим усилителем, покрутить подстроечный резистор и наслаждаться цветомузыкой :)

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

Доработка.
Доработка.

Добавление p-n-p транзистора на каждый канал позволит "погасить" все светодиоды кроме того, что соответствуют уровню. Интересно, что в симуляторе вообще не важно с какой стороны коллектор, а с какой эмиттер! Так ли это на самом деле и правильно ли они изображены на схеме? Напишите в комментариях. Спаяю, проверю, может быть транзисторы пожгу. А может быть это повод поглубже закопаться в теорию!

Всем спасибо за просмотр! Жду детальки и коплю идеи для того, чтобы сделать прибор хоть сколько-то полезным в конечном итоге. Например не плохо было бы добавить частотомер, индикатор напряжение/светодиод и пару ручек для грубой и точной подстройки частоты горизонтальной развертки. Как всегда буду рад комментариям, особенно конструктивным! До свидания!