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

Практическое программирование Arduino/CraftDuino — Аналоговый ввод – осциллограф

Для этого будем считывать данные с аналогового порта Arduino/Freeduino и записывать их в последовательный (COM) порт. А уже из последовательно порта их будет принимать наша программа и строить график сигнала

Итак, скетч для Arduino/Freeduino будет совсем простой:

Подключившись к порту мы увидим что-то вроде:

Осталось только написать программу для превращения данных из последовательного порта в красивый график

На основе программы построения графиков функций
Graph.pyw (http://purepython.narod.ru/tkinter.html)
я набросал программу для отображения данных из COM-порта.

Для работы потребуется Python и библиотека:
pySerial – собственно сама библиотека для работы с COM-портом (для её работы под Windows требуется pyWin32)

собственно работа с COM-портом из данной библиотеки крайне проста:

Весь остальной код нужен для работы с графикой Tkinter и отображения линий графика с помощью

Однако, у меня пока не получилось заставить работать программу в системе real-time –
поэтому бесконечный цикл заменил на конечный

В итоге, получается, что при нажатии на кнопку «Serial» скрипт считывает 200 значений с COM-порта и строит по ним график:

Другие примеры осциллографов на ардуине:

для проекта Carduino

Processing является простым скриптовым языком для создания визуализаций с помощью платформы Java Virtual Mashine.
Processing использовался для создания некоторых реклам Nike, клипов Radiohead & R.E.M., инсталляций в музеях, а также входит в учебные курсы некоторых вузов США.
http://processing.org
http://processing.org/download/processing-1.0.5.zip — версия IDE для Windows

Код скетча для Arduino:

Как видно, сигнал считывается со всех шести аналоговых входов Arduino и сопровождаясь буквенными обозначениями передаётся в последовательный порт.

Подключившись к порту увидим следующее:

Скетч для Processing-а (как видите IDE – почти такая же :):

Здесь так же используется функция setup(), а вот вместо loop() используется функция draw()

Сам скетч отличается от авторского только явным указанием последовательного порта:

Запустив это приложение увидим красивую картинку

Собственно – остаётся:

— научиться определять уровень напряжения сигнала
уровень напряжения можно получить из простой формулы
5V/1024 значений = 0,004883 В/значение (4,883 мВ).

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

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

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

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

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

Делаем цифровой осциллограф Via Arduino

Часто видел, что люди делают цифровые осциллографы. DSO должен иметь блок цифро аналогового преобразования. Схему преобразования можно разделить на два режима:

1. Специальный чип АЦП (однокристальный).

2. АЦП однокристальный с преобразователем.

Сделать цифровой осциллограф с помощью Arduino

С первой очень долго возиться. Вторая структура относительно проста, но имеет существенный недостаток, который, в узкой полосе частот, полоса пропускания осциллографа только 7.7KHz. STC однокристальный производства AVR, но фактическая пропускная способность составляет менее 10 кГц.

Код

Поэтому я хотел бы попробовать и посмотреть есть ли хороший способ решить эту проблему. Основные параметры конечного продукта:

Диапазон воспроизводимых частот: 10 Гц-50 кГц

Напряжение питания: 5V

ЖК-экран: площадь дисплея 128×64 (ST7920)

Информационный дисплей: 32×64, отображает частоту тестового сигнала, Vpp, и больше синхронизации:

Передний фронт запускает скорость сканирования: 0.02ms / дел ~ 10мс / дел,

несущие девять 1-2-5 функцию удержания:

заморозка отображаемого сигнала и параметров

# Include //statement
U8GLIB_ST7920_128X64_4X u8g(13, 12, 11); Statement LCD SPI Com:SCK =13, MOSI = 12, CS = 11

int x,y; Painted point coordinates

int Buffer[128]; Cache storage array

Buffer[x] = analogRead(A0); Signal sampling

Buffer[x] = 63-(Buffer[x]>>4); Calculate y values

u8g.drawLine(x,Buffer[x],x,Buffer[x+1]); Draw two lines

u8g.drawLine(64,0,64,63); Draw the axes

u8g.drawFrame(0,0,128,64); Draw border

u8g.firstPage(); Clear screen

do draw( ); Display

схема

Основной список компонентов:

Основной список компонентов:

Arduino Pro Mini 1

LCD12864 LCD (ST7920) 1

электролитические конденсаторы (100 μ 25V) 1

потенциометр (50k) 1

отверстие пластины 3

Выключатель питания 1

батарейный картридж 2

кнопка включения (с аккумулятором, 7) 1

Подключение и монтаж

Подключение и монтаж

Загрузка и тест

Загрузить и контрольно-измерительная

Благодаря Pro Mini Arduino не включается USB-последовательный порт схему, так что для передачи через USB последовательный порт загрузки перед загрузкой программы. Отладка осциллографа очень проста, нужно настроить потенциометр 50k центрируя горизонтальные растровые строки. Я использую источник сигнала генератора сигнала.

Разъемный штекер мама-папа 2,54мм на 2, 3, 4, 5 пинов

Пластмассовый корпус для разъема 2,54мм без металлической вставки..

Штекер Micro USB 2.0 разборный

LCD осциллограф на Arduino

Несколько лет назад я опубликовал код и схемное решение осциллографа на базе PIC18F2550 KS0108 . Однако в настоящее время я решил воссоздать данный проект, используя плату Arduino Fio.

IMG_4199.jpg

Я использовал плату Arduino Fio , которую можно приобрести от SparkFun (доступно на Amazon.com ) и небольшой SPI графический LCD-дисплей, который я приобрел за несколько долларов на сайте dx.com (код товара SKU 153821 ). Поскольку у меня нет паяльника, я импровизировал с кабелями типа “мама-мама”, которые также можно приобрести на сайте dx.com (код товара SKU 151650 ).

На сайте Dx.com данный LCD-дисплей является 5 В модулем, но на сайте производителя утверждается обратное (mini12864) (перевод с китайского с помощью Google Translate):

Размеры (Д × Ш × В): 47мм × 38мм × 6мм (без учета выводов)
Видимая часть LCD-дисплея (Д × Ш): 33.7мм × 33.5мм
Активная зона отображения LCD-дисплея (Д × Ш): 30.7мм × 23мм
Подсветка: Белая
Рабочее напряжение: 3.3В ~ 5.5В (встроенная схема усиления, без нагрузки)
ИС управления: UC1701
Формат дисплея: 128 × 64 ряда
Дисплей: Синий на белом фоне

Таким образом, я заказал один графический дисплей, подождал несколько недель, пока его доставят (поскольку с сайта dx.com пересылка товара идет очень долго), получил его, установил в схему и создал простой скрипт “Hello World” для подтверждения, что дисплей и плата правильно функционируют вместе. Код программы находится в файле hello_word.ino

И схема действительно работает!

Благодаря тому, что мой предыдущий проект был написан на C, переход на Arduino занял несколько минут. Я использовал преимущества открытого кода библиотеки графического дисплея (u8glib) для управления основной работой и добавил меню последовательного порта для манипулирования различными параметрами дисплея. Главное отличие между проектом на PIC и данным проектом заключается в следующем: поскольку плата Arduino Fio — это 3.3 В устройство, оно может управлять входами в диапазоне напряжения 0-3.3 В, ограничивая область использования в качестве “осциллографа” без соответствующей защиты входов/ изменения величины напряжения. Код является полностью портативным. Это означает, что вы можете запрограммировать любой другой Arduino и очень быстро запустить устройство.

6-канальный осциллограф на Arduino

6-канальный осциллограф на Arduino. Вывод осциллограмм

6-канальный осциллограф на Arduino. Вывод осциллограмм

Способ работы: (0) установить подстраиваемые переменные, (1) запустить скетч, (2) активировать плоттер последовательного порта.

Описание: Данный скетч имитирует 6-лучевой осциллограф. Ожидается, что входные сигналы, представленные на аналоговых выводах, будут находиться в диапазоне от 0 до 5 вольт с максимальной частотой 1 кГц. Подстраиваемые переменные объявляются в отдельном разделе. Эти переменные можно найти после операторов define . Можно выбрать количество входов 1-6, которые отображают напряжения на выводах A0-A5 соответственно. Незадействованные открытые аналоговые выводы выдают ложные напряжения.

Осциллограф работает в двух режимах: «непрерывный» (свободная работа) и «принудительный запуск» («ждущий», запуск развертки при выполнении критерия). Критерий (триггер) срабатывания выполняется, когда входной сигнал, считанный с A0, пересекает предопределенное напряжение запуска, в зависимости от того, будет ли это «фронт» или «спад», когда он пересекает это предопределенное напряжение. В «ждущем» режиме общее время развертки может быть установлено в миллисекундах. Начало запуска развертки указывается, когда синхронизирующая отметка доскакивает до уровня 5 В.

При развертке выборка на аналоговых выводах будет производиться каждые ‘ SampleInterval ‘ миллисекунд. В нижней части графика синхронизирующие отметки (прямоугольный сигнал) будут переключаться каждый 10-ые ‘ SampleInterval ‘ миллисекунд.

Встроенный светодиод (вывод 13) является индикатором состояния осциллографа: (1) включен, непрерывный режим или развертка в «ждущем» режиме, (2) мигает, запущен «ждущий» режим, ожидает срабатывания триггера, (3) выключен, все операции приостановленны (с помощью кнопки).

Когда происходит выборка более одного сигнала, отображения сигналов могут «накладываться» или «разделяться по каналам». Когда используются каналы, напряжения на вертикальной оси не откалиброваны.

Опционально между цифровым выводом 12 и землей может быть подключена кнопка. При ее нажатии цифровая выборка и развертка останавливаются. Повторное нажатие кнопки возобновляет развертку (но с разрывом в графиках сигналов).

Порядок и цвета выводимых графиков следующие: метки времени (синий), уровень запуска (красный, если включен ждущий режим), аналоговые сигналы A0-A5, соответственно (многоцветные).

Adblock
detector