Осциллограф на ардуино

Двухканальный осцилограф из компьютера

Виртуальный осциллограф РадиоМастер позволяет исследовать переменные напряжения в звуковом диапазоне частот : от 30..50 Гц до 10..20 Кгц по двум каналам с амплитудой от нескольких милливольт до десятков вольт. Перед реальным осциллографом такой прибор имеет преимущества: он позволяет легко определять амплитуду сигналов, запоминать осциллограммы в графических файлах. Недостатком прибора является невозможность увидеть и измерить постоянную составляющую сигналов.

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

Специально остановимся лишь на операции калибровки по Y (по напряжению), которую следует произвести после подключения изготовленного Вами кабеля. Подайте на оба входа прибора сигнал известной амплитуды от общего источника (предпочтительно синусоидальной формы с частотой 500..2000 Гц и амплитудой несколько ниже расчетного предела), введите известное значение амплитуды в милливольтах, нажмите Enter, и осциллограф откалиброван. Первоначальная калибровка программы сделана с неким кабелем, соответствующем приведенной схеме.

Программа запоминает все установки и настройки и восстанавливает их при следующем включении.

Характеристики осциллографа в значительной степени зависят от параметров звуковой карты Вашего компьютера. Так со старыми типами карт, у которых частота дискретизации не более 44,1 кГц, частотный диапазон прибора ограничен сверху. Используя имеющийся на панели переключатель частоты дискретизации, опробуйте свою звуковую карту, и остановитесь на наивысшем возможном значении. Уже при 96 кГц можно уверенно рассматривать сигналы до 20 кГц.

Разрядность АЦП установлена равной 16, что обеспечивает достаточно высокую точность.

Диапазон измеряемых осциллографом напряжений определятся резистивными делителями, смонтированными на кабеле (см. схему). При R1 =0 все напряжение поступает на вход АЦП звуковой карты, следовательно можно без искажений рассматривать сигналы амплитудой не более 500..600 мВ. При использовании резисторов указанных на схеме номиналов получается диапазон напряжений до 25 В, что обычно достаточно в любительской практике.

Рекомендуется использовать экранированный провод, и резисторы располагать возможно ближе к разъему звуковой карты компьютера.

oscilograf

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

Вот схема подключения:

По данной схеме я собирал свой осциллограф, она аналогична схеме, которую предоставляет автор проекта:

после того как все спаяем или подключим, нужно будет залить скетч:

Для корректной работы данного скетча, нам понадобится еще закачать библиотеки, все это находится в архиве по ссылке: https://yadi.sk/d/fwivY5c93NtooH

Демонстрация сборки и работы осциллографа в видео:

Собираем приставку

Простейший осциллограф из компьютера

Программа «осциллограф» будет визуализировать сигнал, поданный на вход звуковой карты. Я предложу вам на скачивание два варианта:
1) Простая программа без установки с русским интерфейсом, качаем.

Простейший осциллограф из компьютера

Простейший осциллограф из компьютера

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

Простейший осциллограф из компьютера

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

Программирование МК STM32

Юрий Филатов

Владимир, Вы планируете ролик о осциллографе на STM32F746G-DISCO?
Мучаюсь с ADC на STM32F746G. Ни чо не ругается, но и не работает.

Владимир Воробьев

Игорь Табачник

Будет ли урок по RTC?. Могу скинуть проект для STM32L476G-DISCO. У меня получилось вывести мин : сек на LCD glass

Андрей Спирин

Владимир, здравствуйте.Как вы считаете,какой максимальной частоты измеряемого сигнала можно добиться,делая usb-осциллограф на плате stm32f407-discovery?
Допустим,у меня платка снимает сигнал ацп и записывает эти данные в юсб,которые идут на ПК.На ПК я напишу ПО,которое будет слушать порт и строить график по приходящим данным.Используя именно VCP.

Владимир Воробьев

Владимир Воробьев

Андрей, Около 100 кГц, если будете использовать дисплей по FSMC, а если USB, то где-то также, только при условии соблюдения всех тонкостей максимального использования буферизации и DMA.

Андрей Спирин

Владимир, интересно,а если расширить канал передачи данных?Т.е. передавать с большей скоростью,чем позволяет vcp?

Владимир Воробьев

А при чём тут VCP? набрал кадр — передал, потом можно пропустить и набрать другой кадр. Дело в АЦП медленном. APB2, на котором сидят все АЦП больше 84МГц на самом крутом контроллере 7 серии не разгоняется. Делитель в АЦП максимум 4 — уже получили 21 МГц.
Пошли дальше
это скорость 1 цикла. Чтобы сделать одно измерение 12-битное — надо минимум 15 циклов. Получили 1,4 МГц.
Это, соответственно, только одно измерение. Нам нужно хотя бы 20 измерений, чтобы хоть как то один период нарисовать синусоиды или ещё чего-то. Получается 70 кГц. Но это если 12-битный режим. Если 8-битный, то побольше будет частота. Но это 7 серия, а Вы пытаетесь от 4 серии что-то получить.
Так что быстрый USB с переходником ULPI — PHY Вам не особо поможет. Синусоиду при 2 МГц Вы никак не прорисуете.
Даже при вычисленных частотах надо организовать DMA и буферизацию очень грамотно.
Вообщем, если увидите осциллограф, собранный на слабом АЦП и слабом тактовом генераторе, обещающий большую частоту — бегите от него, как от огня. Там хитрые конденсаторные развязки стоят, сглаживающие амплитудно-временную характеристику. Обман кругом.
Только цеплять крутой АЦП по 16 ногам и получать за 1 такт процессора одно измерение. Правда, когда эти измерения обрабатывать, не знаю. DMA внутренний не справится.

Юрий Филатов

Владимир, Здравствуйте. Мучаюсь с STM32F746G не запускается ADC по таймеру.
Работает только если по каждому прерыванию таймера принудительно устанавливаю бит SWSTART в регистре CR2.
Может что подскажите?

HAL. DAC

Сегодня мы начнём изучать интересную технологию — цифро-аналоговый преобразователь (ЦАП) или по-английски Digital-to-analog converter (DAC).

Как видно из названия данного преобразователя, он занимается преобразованием цифрового кода или величины в напряжение определённой величины, каким-то образом зависящим от данного цифрового кода. И также из названия видно, что цифро-аналговый преобразователь занимается задачей, обратной той, которой занимается аналого-цифровой преобразователь (АЦП), который мы уже изучили, начиная с урока 16.

Вообщем, слишком подробно мы не будем изучать принцип работы цифро-аналогового преобразователя. Нам важно научиться с ним работать с использованием контроллера STM32.

Во-первых, откроем Reference Manual и посмотрим, какой шиной управляется данная периферия

image02

Как мы видим — это шина APB1.

Также в этой же документации посмотрим краткие характеристики нашего ЦАП

image03

ЦАП наш является 12-битным.

Мы видим, что существует два таких ЦАПа, но также здесь находится ремарка, что не очень радостно, что на каждый такой конвертер находится только одна ножка контроллера и переопределить её невозможно.

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

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

Существует также структурная схема ЦАП

image04

На данной схеме видно, что существует ряд таймеров, которыми мы можем воспользоваться в качестве триггеров. Есть у нас управляющий регистр, биты которого служат для определённых настроек, регистр данных DHRx, ну, верней их два — DHR1 и DHR2, которые мы используем для хранения значения, которое будет преобразовано в электрический сигнал, а номера соответствуют номерам ЦАПов. Ну, и непросредственно, сам преобразователь.

А вот здесь указано, какие существуют режимы для преобразования

image05

Мы видим, что существует также 8-битный режим и два варианта 12-битного режима в зависимости от выравнивания преобразуемой величины. Данные регистры мы в коде непосредственно использовать не будем, мы разве что к ним обратимся в процессе отладки, если у нас что не заработает.

Ну давайте наконец займёмся кодом.

Проект создаём из проекта TEST001, т.к. там ничего лишнего не подключено. Назовем его DAC. Запустим проект в Cube, включим там DAC OUT1

В Clock Configuration внесем следующие настройки

image00_0500

В самом DAC настройки следующие

image01

Больше ничего не включаем.

Генерируем и запускаем проект. Соберем код, настроим программатор на авторезет и начнем писать.

Запустим ЦАП, найдя функцию в документации HAL User Manual на странице 215

/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

Попробуем затем занести в ЦАП какое-нибудь значение.

Значение, которое неоходимо занести в периферию ЦАП, рассчитывается по следующей формуле

Ну вернее эту формулу необходимо перевернуть, выразив из неё DOR. Это и будет значение, которое мы используем в функции.

Вообщем, например, нам необходимо сгенерировать напряжение на выходе ЦАП значением 1 вольт. Перевернув вышеуказанную формулу, мы должны 1 вольт разделить на опорное напряжение или на 3 и затем умножить на 4095. Получим мы 1365.

Давайте так и поступим.

Прежде чем прошивать контроллера, посмотрим, как мы всё подключили

image08

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

Соберем, прошьем и померяем напряжение на ножке PA4

Напряжение у нас вполне соответствует заявленному с очень малой погрешностью.

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

Осциллограф своими руками на AVR — инструкция по сборке, характеристики

Самодельный осциллограф на AVR

Характеристики осциллографа на AVR:

  1. Частота измерения: 10 Гц–7.7 кГц.
  2. Макс. входное напряжение: 24В AC/30В DC.
  3. Напряжение питания: 12В DC.
  4. Разрешение экрана: 128×64 пикселей.
  5. Область экрана осциллограммы: 100×64 пикселей.
  6. Информационная область экрана: 28×64 пикселей.
  7. Режим триггера: автоматический.

При измерении прямоугольного сигнала, максимальная частота, при которой можно увидеть хорошую осциллограмму составляет около 5 кГц. Для других форм сигналов (синусоида или треугольный сигнал) максимальная частота составляет около 1 кГц.

Схема осциллографа на AVR

Принципиальная схема AVR-осциллографа приведена ниже:

Схема осциллографа на AVR

Напряжение питания схемы составляет 12 вольт постоянного тока. Из этого напряжения, в дальнейшем получается еще 2 напряжения: +8.2В для IC1 и +5В — для IC2, IC3.

  • Схема светодиодного осциллографического пробника

Необходимые радиоэлементы

  • Операционный усилитель (IC1) — LM358.
  • LCD-дисплей (IC2) — DEM128064A (128×64, контроллер KS0108).
  • МК AVR 8-бит (IC3) — ATmega32.
  • Линейный регулятор (IC4) — LM7805.
  • Стабилитрон (D1) — 1N4738A, 8.2В.
  • Выпрямительный диод (D2) — 1N4007.
  • 7 конденсаторов — C1 (470 нФ); C2 (27 пФ); C4, C7, C9 (3х100 нФ); C5, C6 (2х22 пФ).
  • 2 электролитических конденсатора — C3 (22 мкФ 16 В) и C8 (100 мкФ 25 В).
  • 7 резисторов — R1, R2, R4 (3х1 МОм); R3, R5 (2х390 кОм); R6 (56 Ом); R7 (220 Ом).
  • 2 подстроечных резистора (P1, P2) — 10 кОм и 22 кОм соответственно.
  • Кварц (X1) — 16 МГц.
  • 3 переключателя (S1, S2, S5).
  • 5 кнопок (S3, S4, S6–S8) — замыкающие.
  • 2 разъёма (K1, K2) — 2 контакта вход сигнала, 2 контакта питание.

Прошивка ATmega32 и настройка

Файл прошивки: AVR_oscilloscope.hex, можно будет скачать ниже. При выборе фьюзов необходимо указать использование внешнего кварца. После этого необходимо обязательно отключить JTAG интерфейс. Если этого не сделать, то на осциллографе будет отображаться экран инициализации, а после он будет уходить в перезагрузку.

Установка фьюзов AVR

Для настройки прибора нужно выполнить всего 2 вещи: настроить контрастность LCD при помощи подстроечного резистора Р2 и выставить центр осциллограммы при помощи подстроечного резистора Р1.

Использование

Вы можете перемещать луч осциллограммы вверх или вниз путем нажатия кнопок S8 и S4. Один квадрат на экране, соответствует 1В.

При помощи кнопок S7 и S3 можно увеличивать или уменьшать частоту измерений. Минимальная частота формы сигнала, которая может быть отображена на LCD составляет 460 Гц. Если необходимо посмотреть сигнал с более низкой частотой, например, 30 Гц, то необходимо нажать S7 для сжатия осциллограммы или S3 — для растяжения.

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

Печатная плата осциллографа

Фото готового AVR осциллографа:

AVR осциллограф

Видео работы осциллографа на AVR:



Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector