Осциллограф на esp32 своими руками

Добавил пользователь Alex
Обновлено: 16.09.2024

Тут собраны схемы различных устройств сделанных на контроллерах Ардуино, Лазерный гравер на Ардуино, Металлоискатель на Ардуино, Метеостанция, Кодовый замок, и множество других устройств и изобретений

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

У меня возникла острая необходимость в измерительном приборе - осциллографе , а покупать его не было средств, так как данные приборы достаточно дорого стоят - цены на цифровые осциллографы с цветными дисплеями начинаются от 30 000 руб.

Я решил сделать самодельный осциллограф на Ардуино УНО и платой расширения Ардуино TFT LCD шилд с чипом
ST7781 240x320 >

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

Для создания осциллографа нам понадобится еще
Библиотека для графического дисплея Ардуино TFT LCD шилд

Скетч осциллографа на Ардуино

TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

const int LCD_WIDTH = 320;
const int LCD_HEIGHT = 240;
const int SAMPLES = 270;
const int DOTS_DIV = 30;

// Declare variables and set defaults here
// Note: only ch1 is available with Aitendo's parallel 320x240 TFT LCD
byte range0 = RANGE_MIN, ch0_mode = MODE_OFF; // CH0 включение выключение канала MODE_OFF
short ch0_off = 204;
byte range1 = RANGE_MIN, ch1_mode = MODE_ON; // CH1
short ch1_off = 204;
byte rate = 3; // sampling rate 3
byte trig_mode = TRIG_AUTO, trig_lv = 30, trig_edge = TRIG_E_UP, trig_ch = 1; // trigger settings
byte Start = 1; // Start sampling 1
byte menu = 0; // Default menu
///////////////////////////////////////////////////////////////////////////////////////////////

void setup() tft.reset();
tft.initDisplay();
tft.setRotation(3);

void CheckSW() static unsigned long Millis = 0, oMillis = 0;
unsigned long ms;
unsigned short ain = analogRead(ad_sw);
//Serial.println(ain);
return;
ms = millis();
if ((ms - Millis) 0)
rate --;
break;
case 4:
// TRIG MODE
if (trig_mode 0)
trig_mode --;
else
trig_mode = TRIG_ONE;
break;
case 7:
// RATE SLOW
if (rate 0)
range1 --;
break;
case 9:
// CH0 RANGE +
if (range0 > 0)
range0 --;
break;
case 10:
default:
// MENU SW
menu ++;
break;
>
>

void SendData() Serial.print(Rates[rate]);
Serial.println("/div (30 samples)");
for (int i=0; i > 10;
a = a>=(LCD_HEIGHT+1) ? LCD_HEIGHT : a;
if (mode == MODE_INV)
return LCD_HEIGHT - a;
return a;
>


if (trig_mode != TRIG_SCAN) unsigned long st = millis();
byte oad;
if (trig_ch == 0)
oad = adRead(ad_ch0, ch0_mode, ch0_off);
else
oad = adRead(ad_ch1, ch1_mode, ch1_off);
for (;;) byte ad;
if (trig_ch == 0)
ad = adRead(ad_ch0, ch0_mode, ch0_off);
else
ad = adRead(ad_ch1, ch1_mode, ch1_off);

Сигнал 300 мВ снятый при помощи miniscope v4:

Осциллограммы в miniscope v4

Общая стоимость компонентов не превысила 10$.

Принципиальная схема USB-осциллографа:

Принципиальная схема USB-осциллографа

Печатная плата - односторонняя, размер 66мм x 36мм.

Печатная плата

Печатная плата

Среда разработки

Для разработки miniscope v2 необходимо было выбрать среду разработки для STM микроконтроллеров. В этом файле лежат примеры проекта для IAR, Keil, RIDE, HiTop и TrueSTUDIO. К сожалению, не один из них мне не подошел. RIDE и HiTop требуют покупки лицензии через 7 дней. Пробные версии IAR и Keil имеют ограничение на размер кода и забирают очень много дискового пространства. То же самое с TrueSTUDIO.

В результате я выбрал CooCox, дистрибутив которого весит 115 МБ и около ~ 800 МБ после установки и распространяется бесплатно.

Прошивка микроконтроллера

На плате нет JTAG/SWD разъема, так как прошивка должна быть загружена по UART. Чтобы войти в режим загрузки, нажмите и удерживайте кнопку BOOT при нажатии кнопки RESET. Программа STM "Flash Loader Demo" без проблем работает с USB-UART переходником. Нормальное напряжение на выводах микроконтроллера 5В, поэтому можно использовать 5 или 3.3В RS232-UART/USB-UART переходник.

Кнопка RESET может быть удалена - микроконтроллер переходит в режим загрузки при нажатой кнопке BOOT если USB подключен.

Так как USB подключено без 1.5 кОм подтягивающих резисторов, его необходимо заново подключить после прошивки.

Проект для тестирования микроконтроллера и зуммер: stm32scopeTest.7z

Советы по передаче данных по USB

Используйте CDC в качестве шаблона. Есть две конечных точки BULK. Для повышения скорости CDC потребуются небольшие изменения.
1. Уменьшите значение VCOMPORT_IN_FRAME_INTERVAL. Я не уверен, что значение = 1 подходит при двунаправленной передаче, поэтому я поставил значение = 2.
2. Увеличение значения USART_RX_DATA_SIZE. Я использовал 8192 байт (2 х 4 Кб), но я думаю, что существенной разницы при использовании 4096 байт.
3. Изменение Handle_USBAsynchXfer, т.к. он не будет передавать данные, если USART_Rx_Buffer будет полный. Таким образом, после каждого номера SOF будет отправлен максимальный по номеру байт.

Убедитесь, что на ПК приложение постоянно готово к приему данных. Убедитесь, что приоритет чтения для него выше, чем у других приложений. Я использовал libusb, поэтому я использовал сочетания usb_submit_async / usb_reap_async для задания очереди запросов чтения.

Я не интересовался высокой скорость передачи данных с ПК, поэтому у меня нет советов по этому поводу. Miniscope v2c оправляет данные на ПК с максимально возможной скоростью. Данные отправляемые с ПК незначительны (ID запроса, изменение аналогового усиления).

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

Купить на Aliexpress

Схема электрическая принципиальная

В общем-то она не поменялась с того времени, ток чутка подправил.

Печатная плата

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


Была выписана из Китая, подробнее в статье о заказе плат в китайских конторах.


А вот так это должно выглядеть:


Компоненты


Новая крутая плата. Известная синяя пилюля ( Blue Pill ), но теперь с разъемом USB Type-C, как вы это любите (очевидно вдохновением была MiniF4 STM32F411CE6).


Стоит она дороже, но это того стоит.


Гнездо BNC (bayonet Neill-Concelman) самое простое (говённое кстати ).


Миниатюрные диоды поверхностного монтажа можно найти платах люминесцентных ламп.


Получившаяся приставка


Подключение прошло успешно

Раньше это выглядело не очень, а теперь просто класс :


Подключать и отключать удобно:


Прошивка

С помощью программатора-отладчика ST-LINK V2

Его можно сделать, но проще приобрести. Используется программы STM32CubeProgrammer:


Далее распаковать архив в любую папку.

2) Подключить STLINK к синей пилюле и его через USB к ПК или телефону:


Если была ранее произведена прошивка, то перед подключением зажать кнопку сброса ( NRST) и после подключения отпустить. Нажать Connect, подключение должно пройти успешно (в случае необходимости обновить прошивку стлинка)


3) Нажать Open File и выбрать нужную прошивку.


4) Всё завершено:


С помощью USB-TTL преобразователя

Многим будет проще прошить МК использую обычный USB-COM преобразователь и телефон.

1) Подключить преобразователь так:

RX PA9
TX PA10
5V 5V
GND GND


2) Перед подачей питания на плате установить перемычки так, а если кнопка, то зажать BOOT перед подключением питания.



Ещё фото


Подключение к телефону и калибровка

Теперь благодаря использованию разъема USB Type-C


можно подключать осциллограф к телефону напрямую с помощью кабеля USB-C—USB-C без всяких переходников!


Необходимо приложение HScope, урезанная демонстрационная версия бесплатна, для каждого осциллографа своя лицензия, например, HS101 стояло 7$.


Теперь можно удобно подключать щупы:


но для используемого гнезда BNC не все подошли (средний не втыкается):


Сначала желательно провести калибровку нуля. Просто замыкаем контакты щупов и в разделе Calibration жмём Calib Zero Lvl -> Continue:


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


Использование щупов с делителем


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


Теперь с делителем можно подавать до 200 В:


Проверка работы

Сначала опыт с LC-контуром:


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


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


При увеличении сопротивления частота среза уменьшается, то де самое можно сделать программно, там есть настройки ФНЧ и ФВЧ.


Но что еще интересней, нажав на кубик можно провести Быстрое Преобразование Фурье:


Проверка на прямоугольном сигнале, это уже было:




Здесь же включается ФНЧ с разным порядком:


Ещё здесь есть возможность длительной регистрации значений напряжения ( МИН, МАКС, СРЕДНЕКВАДРАТИЧЕСКОЕ ), что также очень полезно.


Видосик

Итого

По итогу этим осликом буду пользоваться часто из-за красивого внешнего вида, относительно удобного управления и простого сохранения осциллограмм, что хорошо для демонстрации и публикации.

Да, опять блютуз версия проверена не будет (хотя HC-06 этом уже имеется), т.к. здесь как-то криво организовано подключение, да и с самими модулями могут быть проблемы.

Осциллограф своими руками

Три рабочие схемы осциллографов — на PIC18F2550, на AVR и цифрового прибора для ПК. Характеристики устройств, печатные платы, необходимые детали, инструкции по сборке своими руками и видео.

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

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

Осциллограф измеряет напряжение в пределах 0–5В, 0–2.5В и 0–1,25. Основным недостатком этого осциллографа является низкая частота дискретизации (~ 60 кГц), а также тот факт, что входы ограничены ограничениями АЦП микроконтроллера. Тем не менее, это очень хороший прибор и первым мы рассмотрим именно его схему.

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

Принципиальная схема осциллографа на PIC18F2550

Исходники и прошивку можно будет скачать ниже. Теперь давайте детальнее остановимся на каждом блоке схемы.

Схема питания осциллографа на PIC18F2550

Напряжение поступает с 9-вольтовой батареи на интегральный стабилизатор напряжения TC1262-5.0V для обеспечения стабильных 5В для питания микроконтроллера и дисплея. На выходе стоит 1мкФ конденсатор.

Схема подключения дисплея

Графический ЖК дисплей AGM1264F с разрешением 128х64 пикселей оснащен встроенными контроллером KS0108. Он имеет светодиодную подсветку и генератор отрицательного напряжения для управления.

Аналоговый вход

Аналоговый вход

Вывод A0 настроен на аналоговый вход. Обратите внимание, что сопротивление источника сигнала влияет на напряжение смещения на аналоговом входе. Максимально рекомендованное сопротивление составляет 2.5 кОм.

Микроконтроллер

Микроконтроллер

RS232 конвертер

RS232

Выводы USART должны быть подсоединены к RS-232 конвертеру для подключения к ПК для обновления прошивки. После этого он может быть отключен.

Необходимые детали для сборки осциллографа на PIC18F2550 и прошивка

Видео, как работает осциллограф на PIC18F2550:

Цифровой осциллограф RS232 для ПК

Рассмотрим простое решение для создания цифрового компьютерного осциллографа. Устройство построено на базе восьмиразрядного процессора PIC12F675.

Схема цифрового осциллографа для компьютера

Ниже представлена структурная схема осциллографа:

Структурная схема осциллографа на базе PIC

Процессор работает на частоте 20 МГц. Микроконтроллер непрерывно измеряет входное напряжение, преобразовывает его и отправляет цифровое значение на последовательный порт компьютера. Скорость передачи данных последовательного порта — 115кБит и, как показано на следующем рисунке, данные сканируются и отправляются с частотой около 7,5 кГц (134 мкс).

Передача данных по RS232

Вот принципиальная схема самого цифрового осциллографа:

Схема цифрового RS232 осциллографа

Основа схемы — микроконтроллер PIC12F675 (микросхема U2), который работает с тактовой частотой 20 МГц кристалла Y1. J1 — стандартный разъем для подключения питания в 9–12 В, которое затем стабилизируется на U1 до 5 В для питания процессора.

При необходимости можно добавить дополнительные входной аттенюатор (сплиттер), или ОУ.

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

Программное обеспечение

Для управления на Windows доступна простая программа на Visual Basic. Её можно скачать в архиве ниже.

Программа запускается сразу и ожидает появления данных на последовательном порте COM1. Слева — четыре ползунка, используемые для измерения периода и напряжения сигнала. Затем идут вкл/выкл синхронизации, поля для масштабирования или изменения значений размера выборки.

Монтаж

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

Прошивку для процессора можно скачать в конце статьи. Биты конфигурации (fuse) в процессе программирования должны быть установлены следующим образом:

Фьюзы

Вот фото готового прототипа цифрового осциллографа:

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

Окно программы

Ниже вы можете скачать исходник, прошивку и ПО для Windows.

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

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

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

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

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

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

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

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

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

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

Прошивка 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:

Читайте также: