Осциллограф на ардуино для компьютера

▍Что же делать, если хочется большего?

Источник картинки: www.nutsvolts.comВ статье

  1. Снизили частоту АЦП – до минимально безопасной (это позволило ускориться до 100 000 выборок в секунду, с затрачиваемым временем в 1000 микросекунд);
  2. Установили повторное включение АЦП сразу после чтения данных, так как прошивка ардуино обычно сразу отключает его (это позволило ускориться до 116 000 выборок в секунду, с затрачиваемым временем в 860 микросекунд);
  3. Использовали цифровой способ сбора данных вместо аналогового и, соответственно, команды digitalRead вместо analogRead (это позволило ускориться до 232 000 выборок в секунду, с затрачиваемым временем в 424 микросекунды);
  4. Применили метод, который автор называет «подробным» и который является по сути трюком, известным под названием «разворачивание цикла» и ставит его в альтернативу использованию циклов (это позволило ускориться до 5 000 000 выборок в секунду, с затрачиваемым временем в 20 микросекунд на сбор 100 образцов).

Step 2: The Specifications

The Arduino program:

Both versions sample on Analogue port 1.

.

The data can be captured with or without a trigger.

The sampling frequency is controllable, allowing different sample periods.

Some text information is sent to the serial port and lcd screen.

The lcd screen buttons control trigger slope, sample period and sampling.

The voltage data is output as bytes in a buffer. (This is for speed)

A program is needed to capture the raw data.

1) Oscilloscope.ino

Software trigger version.

The trigger level can be specified in mV. Sampling commences when the voltage climbs above (or falls below) by more than the trigger value, between two subsequent sampled readings.

The trig level is a best fit, limited by the resolution of the a/d port.

The reference voltage can be set. (Useful if you find the «5V» line is not at 5V, or you are using a device whose reference is entirely different.)

2) OscilloscopeExt.ino

Hardware trigger version.

The trigger is hardware controlled by digital port 2.

Simply connect your input to analogue port 1 and digital port 2.

It is activated by setting a non zero, positive, trigger level.

Common Specifications

Real time Oscilloscope using interrupts.

Serial, LCD and flash memory support.

Lcd button support. (The Lcd adc port is specified by the variable lcdport)Serial Monitor set at 115200 baud.

SDCARD detected for future development.If required, the following hardware has been tested:

Data is written to a 1000 byte buffer, which when full is written to the Serial port.

Serial output format:

Zero byte (handshake)

4 bytes with the integer value of sampling frequency in milli Hertz

1000 bytes of data

Sampling can be a single event or repetative (A fast run).

In a fast run the arduino will wait for a serial response of any character for 1500 milli seconds after outputting data. If a character is received (a handshake), the Arduino will immediately gather more data. If 1500 mS is up more data is recorded, regardless.

The buttons on the LCD Keypad Shield will produce the following result:

Select — initiates a new sample (or curtails a fast run)Up — Positive edge trigger

Down — Negative edge trigger

Left — Decrease sampled period (increases Prescalar)

Right — Increase sampled period (decrease Prescalar)

Note that the LCD screen requires Analogue port 0 to allow the buttons to work.

After sampling basic information is displayed on the Lcd.

Serial Input commands:

‘again’ Initiate new data capture.

‘test’ Toggle a square wave on PM3 Square for testing.

‘trig’ Trigger level set. If 0 is sent triggering is cancelled. Non zero trigger levels produce triggering. The lcd screen buttons control whether the trigger is on a posive or negative slope.

‘run’ Repeated sampling- a fast run. No serial port text is sent during a run- only raw data.

During a fast run the sample period and edge select can be altered. A fast run is stopped using the lcd select key.

The PC Interface:

Capture raw com port oscilloscope data- from Arduino.Send text to control Arduino.

Receive text from Arduino.

Set arduino trig level and sample frequency.

Initiate sampling and fast runs.

Set voltage reference «vref» to match Arduino. Send vref to Arduino. Note that only the software oscilloscope version uses this information. (To calculate the sofware trigger level).

Setting the voltage reference displays the voltage more accurately than working with the default 5V level.

Graph incoming data against time.

Available scales:

raw 0-255

0V to 5V

-2.5 to +2.5V

-5 to +5V

-9 to +9V

Graph time axis calculated from received sampling frequency.

Data can be sampled once or repeatedly.

During repeated sampling:

X axis scaling can be frozen to maintain comparison positions

The entire graph can be frozen.

Output readings to a data file (see scopedata.txt)

Calculate data frequency based on-

1) positive edges around the average of the data maximum and data minimum voltage

.

Clipboard copy of graph and data info-screen.

jpg image file of oscilloscope display.

Printer output of oscilloscope display.

Zoom option in graph.

Junk wait setting to trash spurious startup characters from Arduino.

Timeout setting to cease capture when comport stops receiving characters.

Set serial baud rate.

The application locks position when capturing-

this ensures that the interrupts that would occur can not slow down the sampling.

Last settings saved.

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

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

Количество выборок

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

Автотриггер

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


Индикаторы на осциллографе

Счетчик частоты

Измерение частоты стартует с 300 Гц, а максимальная достигает 1 кГц. Вся информация выдается на экране в отдельном окошке. Кроме этого программно переменные можно отрегулировать и определить количество необходимых входов, но не более 6.

Выбор диапазона напряжения

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

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

Общие принципы работы проекта

Наш проект состоит из двух основных частей:

  1. Конвертер данных.
  2. Плоттер.

Осциллограф, по своей сути, должен формировать визуальное отображение аналогового сигнала, поданного на его вход. Для осуществления этого мы сначала должны преобразовать сигнал из аналоговой в цифровую форму и затем построить его график. Для этого мы будем использовать один из имеющихся в плате Arduino аналогово-цифровых преобразователей (АЦП). После проведения преобразования в цифровую форму сигнал передается через последовательный порт связи в компьютер, где специальное программное обеспечение, написанное на языке Python, будет строить его график на экране компьютера.

Настройка изделий

После сборки USB-осциллографа, на последнем этапе нужно прошить чип памяти EEPROM flash 24LC64. Для этого:

Перед запуском осциллоскопа на основе внешнего аудиоадаптера проделать следующие действия:

Устройство готово к работе.

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

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

Готовые изделия перед включением обязательно заземлить

Соблюдать осторожность при подаче сигнала на порт звукового адаптера

Источник

▍Возможности

analogRead()подробнееИсточник картинки — www.robotclass.ruИсточник картинки — www.robotclass.ruопорного напряженияDEFAULTINTERNALINTERNAL1V1INTERNAL2V56EXTERNALчастоте дискретизацииЧастота дискретизацииКак следует из теоремы Котельниковаещеданному источникупоказаны здесьодного из авторовСледующий автортакая картинаТаким образом, подытожим всё вышесказанное:согласно источникуединицы милливольтТеперь, ознакомившись с общими основами, проанализируем, что собирают различные авторы в направлении создания своего осциллографа на базе ардуино.Вариант 1Автор картинки: amansinghaljpr

  • 10 бит, частота дискретизации — стандартная (если с высоким разрешением, до: 9,6 кГц);
  • Состоит из 5 деталей;

Вариант 2Источник картинки: www.randomnerdtutorials.com

  • 10 бит, частота дискретизации — стандартная (если с высоким разрешением, до: 9,6 кГц);
  • Состоит из 8 деталей, требуется среда Processing;

Вариант 3Автор картинки: loboat

  • 10 бит, частота дискретизации 150 Гц – 15 кГц;
  • Состоит из 32 деталей;

Вариант 4Автор картинки: Peter Balch

  • 8 бит, частота дискретизации до 500 кГц (однако автор рекомендует использовать не более 250 кГц, так как иначе все показатели сливаются в сплошную полосу и трудно рассмотреть);
  • Состоит из 15 деталей;
  • в режиме измерения аналогового сигнала;
  • в режиме измерения цифрового сигнала;
  • как частотомер;
  • вольтметр;
  • От 0 В до 5 В;
  • От -0,55 В до + 0,55 В;
  • От 0 В до 5 В;
  • От -0,55 В до + 0,55 В;
  • От -117 мВ до + 117 мВ;
  • От -25 мВ до + 25 мВ;
  • Цифровые диапазоны (для замеров прямоугольных сигналов);
  • 31250/1 = 31250 Гц;
  • 31250/8 = 3906 Гц;
  • 31250/32 = 977 Гц;
  • 31250/64 = 488 Гц;
  • 31250/128 = 244 Гц;
  • 31250/256 = 122 Гц;
  • 31250/1024 = 31 Гц;

Ещё одна версияАвтор картинки: CaffeinomaneАвтор картинок: Caffeinomane

Настройка изделий

После сборки USB-осциллографа, на последнем этапе нужно прошить чип памяти EEPROM flash 24LC64. Для этого:

  1. Скачать и установить на компьютер приложение Cypress Suite.
  2. Запустить программу и перейти в меню EZ Console.
  3. Нажать на надпись «LG EEPROM».
  4. Появится окно с файлом прошивки. Выбрать его и запустить клавишей Enter.
  5. Если появилась ошибка «Error», запустить операцию прошивки снова.
  6. После успешного окончания процесса должна появиться надпись «Done». Осциллограф готов к работе.

Перед запуском осциллоскопа на основе внешнего аудиоадаптера проделать следующие действия:

  1. Сохранить файлы miniscope.exe, miniscope.ini и miniscope.log из скачанного архива в отдельной папке. Открыть miniscope.exe.
  2. После запуска программы, зайти в настройки и произвести действия, показанные на рисунках.
  3. Для проверки работоспособности подать тестовый сигнал. Должна появиться синусоида.

Устройство готово к работе.

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

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

Готовые изделия перед включением обязательно заземлить

Соблюдать осторожность при подаче сигнала на порт звукового адаптера

Step 8: Project Developments

The 20 MHZ oscilloscope uses the tlc5510a and a 2K fifo (IDT7203L12TPG). By using a 2K fifo I am able to trigger by downloading all the data to the mega and then processing the trigger point in memory. Once found, I upload the subsequent 1000 values to the PC. Triggering is therefore rock solid. I have edge and level triggering on either voltage slope. A simple potentiometer is used to set the trig point.

By applying 20 MHz clock through a SN74LS393N Dual 4-stage Binary counter I can range down to 0.078 MHz. I am using the adc chip in the 4V reference mode.

I have three input options.

1) «Direct» with a 4V3 zenner as protection. Useful if external buffering is to be used.

2) AC, with a simple 2u2 tantalium and 1K pot to set the mid voltage and a 4V3 zenner.

3) Buffered, with the input dropped across 4 matched 22K resistors. This produces equal attenuations. The drop is passed through the excellent NE5534P 10MHz low noise op amp, configured as a follower… and then to a 4V3 zenner. This produces input ranges of 0 to 4, 5.33, 8 and 16V.

Please refer to the data sheets should you wish to create a similar project!

At higher frequencies the board design must consider grounding and stage separation.

With a well structured PCB design and suitable (expensive) op amps for signal conditioning, higher frequencies are possible….

Конструктор осциллографа: модель DSO138

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

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

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

Перед монтажом нужно ознакомиться с содержимым упаковки: плата, экран, щуп, все нужные радиодетали, инструкция для сборки и принципиальная схема.

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

На выходе должен получиться прибор с такими характеристиками:

  • Напряжение на входе: DC 9V;
  • Максимальное напряжение на входе: 50 Vpp (1:1 щуп)
  • Потребляемый ток 120 мА;
  • Полоса сигнала: 0-200KHz;
  • Чувствительность: электронное смещение с опцией вертикальной регулировки 10 мВ / дел — 5В / Div (1 — 2 — 5);
  • Дискретная частота: 1 Msps;
  • Сопротивление на входе: 1 MОм;
  • Временной интервал: 10 мкс / Div — 50s / Div (1 — 2 — 5);
  • Точность замеров: 12 бит.

8 человек сделали этот проект!

  • Смотрите еще 4

Вы сделали этот проект? Поделитесь этим с нами!

44 обсуждения

2 дня назад

Как я могу принять сигнал от осциллографа до Arduino?

Вопрос 4 недели назад

Какая самая высокая частота, которую можно собрать?

5 недель назад

Вот способ использования старого аналогового осциллографа с веб-камерой, чтобы получить функции типа цифрового запоминающего осциллографа (по крайней мере, базовый DSO функции): http://www.fadstoobsessions.com/Downloads-Products/Webcam-Oscilloscope.phpСсылка на YouTube для демонстрации возможностей. https://www.youtube.com/watch?v=Df9Vid53Hg8

8 недель назад

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

2 месяца назад

Я сделал то, что вы сказали выше … но я не получаю вывод в ide.can u plzz, объясните, как вы взаимодействовали с aurdino и обработкой 3. Мы делаем тот же проект, вы можете помочь мне plzz ….

Ответить 2 месяца назад

Вы сделали Шаг 6? Вы должны настроить последовательный режим, щелкнув мышью на «выбрать последовательный» (com1, com2, …) и щелкнув «выбрать скорость» (115200), а затем нажмите «выкл», чтобы изменить его на «вкл».

2 месяца назад

Хорошая работа. Есть ли способ увеличить размер окна и все масштабировать?

Ответить 2 месяца назад

Да. Вы должны изменить команду «size (660, 700)», которая находится в «void setup () {..}» в программе «Обработка».Как и в случае использования абсолютных пикселей, вы должны изменить всю информацию о каждом объекте (кнопка, циферблат, флажок и т. Д.)

Ответить 2 месяца назад

Bro. !!! У вас есть выход .. если это так, вы можете объяснить мне, как это работает …. Я сделал те же и точные шаги, но я не получаю вывод …

4 месяца назад

Большое спасибо! Работает как шарм! Именно то, что я искал.

4 месяца назад

Спасибо, работает отлично!

5 месяцев назад

Привет, Отличный проект Спасибо 🙂

6 месяцев назад

это то, что я ищу! прекрасная работа! но, к сожалению, область не находит мой правильный последовательный порт.Я использую Ubuntu. В Arduino IDE всегда отображается «/ dev / ttyS0» и, если Arduino подключен к «/ dev / ttyUSB0» (… USB1)Есть ли решение для этого?

Ответить 6 месяцев назад

Если вы подключите Arduino после запуска программы, вы должны щелчок на «обновить», чтобы получить новые подключения, и после нажмите на имя подключения «/ dev / ..», чтобы показать новые подключения

Ответить 6 месяцев назад

Я установлю Linux, чтобы проверить проблему!Спасибо!

6 месяцев назад

с предварительно скомпилированной версией 1.3 теперь она работает отлично! я думаю, что для обработки файлов тоже нужно обновить до 1.3

Ответить 6 месяцев назад

6 месяцев назад

#включают TimerOne.h: нет такого файла или каталогаошибка

Ответить 6 месяцев назад

Сделали ли вы шаг 2 (Шаг 2: установите IDE Arduino и библиотеку TimerOne.h)?

7 месяцев назад

Step 5: Out-Putting the Data

The Void loop routine performs the following functions

1) If writeit is true:

  • calculates the observed time period, correcting for micro time rollover
  • outputs the buffer bufa
  • calculates frequency in KiloHertz
  • outputs buffer bufinfo, with a handshke zero byte and the frequency in milliHertz
  • enables the lcd port so that the buttons can be read
  • Switches off the test pulse on pw3
  • Outputs text details to the serial port if showdetails is true (set false by a fast run)
  • sets flag writeit to false and hasdata to true

The data is sent in two concurrent sections

  • a) A 5 byte header buffer with zero, followed by 4 bytes which is the frequency in milliHz. Sending in milliHertz increases the accuracy of the conveyed frequency value.
  • b) 1000 bytes of raw data, each in the range 0 to 255.

2) If hasdata is true

  • check the lcd buttons
  • if a fast run is active, look for a handshake character from the pc (or 1.5s timeout) and get more data
  • check for serial input commands

LCD Buttons

The input is received by the subroutine buttoncheck.

The lcd buttons are read from analogue port 0.

Each button produces a voltage within a certain range of values

The left button, for instance lies in the range 400 to 599

  • Select — initiates a new sample (or curtails a fast run)
  • Up — Positive edge trigger
  • Down — Negative edge trigger
  • Left — Decrease sampled period (increases Prescalar)
  • Right — Increase sampled period (decrease Prescalar)

Serial Input Data

The input is received by the subroutine commandcheck.

‘test’ toggles a square wave on testpin (= digital port 3), using the flag pwtoggle.

pinMode(testpin,OUTPUT);if (pwtoggle==false) analogWrite(testpin, 0);

if (pwtoggle) analogWrite(testpin,127);

This is very useful. Simply connect digital port 3 to analogue 1, directly.

‘trig’ sets the trigger level. In the software triggered version the trigger variable is used mathematically to set the triggering level. In the hardware version it simply toggles triggering.

‘again’ produces a one off sample

‘run’ produces a fast repeated sample

‘vref’ sets the voltage reference value. (Only used by the software triggered oscilloscope to interpret trigger level.)

Как это будет использоваться?

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

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

Конечно, в данном случае рассматривается относительно примитивное устройство. Но если у вас нет возможности, к примеру, использовать USB-осциллограф (приставка к компьютеру), то в таком случае его применение вполне оптимально.

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

Step 7: Building a Simple Buffer Box for Analogue Input

There are many possible ways to pre-condition the voltage

Here are three simple Input conditioners for your oscilloscope:

  1. Voltage follower
  2. Bipolar +-9V to 0-5V converter
  3. A.C. coupler

The follower needs to be

  • Fast
  • High bandwidth
  • Low noise
  • High Input impedance
  • Low Output impedance

It has a simple dc offset circuit- make sure you trim the 100K pot to set the output voltage to zero for an input of zero.

I used a balanced +-9V supply. However +-6V would give enough headroom to provide an output of 5V. The absolute maximum is +- 22V.

The bipolar converter allows for a signal which is below zero to be measured by the analogue port, which can not be taken below zero.

This bipolar converter is interesting. In the past I have designed these with an op amp, precision voltage reference and lots of trim pots. This design was inspired by an article which was supported by Ronald Michallick of Linear Applications. He suggested using a three resistor bridge and supplied an excel spreadsheet to design it.

If you need a different range of input voltages use the spreadsheet to get your own resistor values.

Setup the two 1k trim pots with an accurate resistance meter so that the upper and lower resistors meet the design specification.

Some points to note:

a) The arduino «5V» level may not be accurate. Alter the spreadsheet b2-b3 values if you want strict accuracy.

b) Reducing +-9V to 0-5V is a voltage drop of 18 to 5.

one digit of our oscilloscope is 5*1000*1/255 = 19.6mV.

An input change of 18*19.6/5 will cause a change in the analogue port.

That is 70.6mV. So relatively coarse voltage changes are observed (with 71mV jumps).

The A.C. coupler is very straightforward. The DC bias is set at the midpoint of our analogue port voltage (5V).

No external DC will transfer across the 10uF capacitor. This circuit works well with a microphone pre-amp.

To setup this circuit connect to the arduino, Use the raw data scale on the pc software. Grab the port data and trim the 100K pot so that the input is 127. Or use a voltmeter and set to «5V»/2.

The circuits are all straight forward to build on one piece of Copper stripboard.

I suggest a socket for the op amp.

Putting the circuits in a box is useful, The separate outputs can be inter-connected as needs arise.

Note the 0.1inch connectors on the side of my box so that standard Arduino header leads can be used.

Check your circuits before testing. All responsibility for the use of this article rests with you.

Let me know when you get it working.