Изображение на экране аналогового осциллографа вызывает ощущение магии и волшебства, словно заглядываешь через маленькое окошко в таинственный зеленый мир. Особенно сильно это ощущается, если на экране рисуются не привычные синусоида или «пила», а фигуры Лиссажу или что-то еще более экзотическое. Существует немалое количество публикаций, посвященных этой теме. В частности, ее коснулась статья на Хабре: Рисуем на экране осциллографа, в которой рассказывается про устройство на базе Arduino, рисующее очень эффектное видео.

Однако для рисования сложных изображений необходим осциллограф с двумя входами: X и Y. Что же делать, если на руках есть только осциллограф с входом Y (как, например, в моем старом добром С1-94), а увидеть своими глазами картинку на экране, тем не менее, хочется?

Оказалось, что конструкция для рисования цифр на экране осциллографа была описана уже в начале 80-х, в статье В. Косинова в журнале Радио №11 за 1981. И самое главное — ей не нужен вход по оси X!

Конструкция использует растровый метод рисования. Луч перемещается по горизонтали генератором развертки и за один проход рисует одну строку растра. Каждой строке соответствует свой уровень напряжения на входе Y. Для гашения луч выводится за пределы экрана подачей на вход достаточно высокого напряжения. Переход на новую строку происходит после подачи импульса на вход внешней синхронизации.

Пример графика сигнала, рисующего четырёхстрочное растровое изображение символов «с о» представлен на рисунке.



Голубой прямоугольник обозначает кадры, отображаемые на экране осциллографа, а слева размещено итоговое изображение.

Устройство довольно сложное и содержит 23 микросхемы. Позже, в журнале Радио №7 за 2000 год, была опубликована статья А. Мариевича, в которой, благодаря ставшей доступной на тот момент новой элементарной базе, устройство удалось упростить. Но и в нем количество микросхем слишком велико, чтобы реализовать конструкцию за пару-тройку часов свободного времени вечером рабочего дня, — 8 штук, плюс необходимость программировать ПЗУ.

Сейчас идея дальнейшего упрощения напрашивается сама собой — с формированием требуемого сигнала на входе осциллографа прекрасно справится микроконтроллер. Первая версия устройства была выполнена на PIC12F629, дополненном простейшим ЦАП на резисторах. Код на ассемблере успешно справился с рисованием цифр, но получился довольно «тяжелым». В результате проект не получил дальнейшего развития и на некоторое время оказался заброшен.

Интерес возродился после знакомства с Arduino и приобретения платы Arduino Leonardo. Благодаря простоте программирования в короткий срок получился проект, содержащий набор функций для отображения на экране осциллографа произвольной строки из 7 латинских букв или цифр, а также для рисования на экране 8х35 пикселей графических примитивов: точек и прямоугольников. Аналоговый сигнал формируется при помощи того же простейшего ЦАП на девяти резисторах, собранного на макетной плате.


Работу функций демонстрирует видео:



А чтобы придать проекту прикладной смысл, позволяющий смело встретить вопрос: «Как это применить в сельском хозяйстве?», в код был добавлен счетчик времени, две кнопки: «Старт/Стоп», «Сброс», и осциллограф приобрел дополнительную функцию секундомера:



Электрические схемы и исходники проекта доступны на GitHub.
Поделиться с друзьями
-->

Комментарии (11)


  1. radiolok
    24.05.2016 12:03

    Зачет! Одна из очаровательных моделей осциллографов на мой взгляд.

    А почему решили ограничиться 16 битами ЦАП? Ардуино и с матрицей 256х256 справится.


    1. dm_p2016
      24.05.2016 12:40
      +1

      Спасибо!

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


  1. dlinyj
    24.05.2016 14:21
    +1

    Это очень круто! Очень и очень!


    1. dlinyj
      24.05.2016 14:22

      Ещё интересный аналогичный проект http://svo.2.staticpublic.s3-website-us-east-1.amazonaws.com/zloshnik/

      image


    1. dm_p2016
      24.05.2016 14:44
      +1

      Спасибо!


  1. kasperos
    24.05.2016 14:36

    >Для гашения луч выводится за пределы экрана подачей на вход достаточно высокого напряжения.
    Там нет сигнала «Z» отвечающего за яркость сигнала?
    В аналоговом телевизионном сигнале есть (хотя уже скорее было) понятие уровня черного, и чернее черного при котором и происходил обратный ход луча.


    1. dm_p2016
      24.05.2016 14:46

      К сожалению, нет. Доступно только задавать отклонение луча по вертикали.


    1. dlinyj
      24.05.2016 14:47

      Z-входа судя по описанию нет (далеко не у каждого осцила он есть). Плюс обычно там достаточно большое напряжение (порядка 20 вольт) надо подавать, чтобы гасить луч. Тут уже не просто одну ардуину с резисторами надо городить.


  1. bougakov
    24.05.2016 19:40
    +1

    Это забавно — но вот вы попробуйте картинки с помощью обычного аудиотрека 44 кГц порисовать:


  1. bougakov
    24.05.2016 19:41


  1. CodeRush
    24.05.2016 22:31

    Еще немного по теме: https://trmm.net/Vector_games_32c3