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

How to Make a Mini Oscilloscope at Home Using Arduino Nano © GPL3+

Make your own mini oscilloscope at home. It’s simple and easy to do!

In this video, I will show you how to make your own mini oscilloscope at home. It’s simple and easy to make.its not my own code i just make tutorial for you guys. For the purpose of making this project, I had depended on the third party source code, which link is given below. If you have any question or suggestion, please feel free to comment in my youtube video and please don’t forget to like and subscribe to my YouTube channel .

  • Arduino Nano
  • SSD1306 OLED display
  • 1N4148
  • Microswitch
  • 104 capacitor
  • Resistors: 100Ω, 12k, 120k, 510k

What is oscilloscope?

An ‘oscilloscope’, previously called an ‘oscillograph’, and informally known as a scope or o-scope , CRO (for cathode-ray oscilloscope), or DSO (for the more modern digital storage oscilloscope), is a type of electronic test instrument that graphically displays varying signal [voltages], usually as a two-dimensional plot of one or more signals as a function of time. Other signals (such as sound or vibration) can be converted to voltages and displayed.

Oscilloscopes display the change of an electrical signal over time, with voltage and time as the Y- and X-axes, respectively, on a calibrated scale. The waveform can then be analyzed for properties such as amplitude, frequency, rise time, time interval, distortion, and others. Modern digital instruments may calculate and display these properties directly. Originally, calculation of these values required manually measuring the waveform against the scales built into the screen of the instrument.

Schematics for the project

Note: Make sure all the connections in your circuit are exactly the same as in schematics.

Источник

Осциллограф реального времени на Arduino

Осциллограф – это один из самых необходимых инструментов для всех электронщиков. Он используется для определения формы колебания, уровней напряжения, частоты, шума и других параметров сигнала. Его часто используют для отладки работы или ремонта какого-нибудь электронного устройства. К сожалению, современные осциллографы могут достаточно дорого стоить – примерно $45-$100 за осциллографы, которые могут выполнять только базовые функции, а более продвинутые версии этих устройств могут стоит более $150.

В этом проекте мы рассмотрим создание на основе платы Arduino 4-х канального осциллографа, способного выполнять все основные функции данного устройства и при этом отличающегося невысокой стоимостью изготовления. Осциллограмма будет показываться на экране компьютера – для ее построения будет использоваться программа на языке Python. Также на нашем сайте вы можете посмотреть проект осциллографа на основе платы Arduino с выводом изображения на ЖК дисплей.

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

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

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

Необходимые компоненты

Аппаратное обеспечение

  1. Плата Arduino Uno (или любая другая) (купить на AliExpress).
  2. Фоторезистор (купить на AliExpress).
  3. Резистор 10 кОм (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

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

1. Arduino IDE
2. Python
3. Python Libraries: Pyserial, Matplotlib, Drawnow

Работа схемы

Схема осциллографа на основе платы Arduino представлена на следующем рисунке.

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

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

Объяснение кода программы

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

Объяснение программы для Python

Для нашего проекта мы будем использовать следующие библиотеки Python: drawnow, Matplotlib и Pyserial. Библиотека Pyserial позволяет нам считывать данные из последовательного порта связи, Matplotlib обеспечивает нам возможность построения графиков, а drawnow дает нам возможность рисовать эти графики в режиме реального времени. Более подробно об использовании языка Python вместе с Arduino вы можете прочитать в следующей статье.

Существует несколько способов установки этих библиотек, самый простой из них – это через pip. Pip может быть установлен из командной строки в windows или linux. PIP поставляется вместе с пакетом python3 поэтому при установке вам просто нужно отметить галочкой нужную опцию чтобы он установился.

После того как pip будет установлен можно начинать установку всех других необходимых нам библиотек. Если у вас windows, то откройте командную строку, в linux’е откройте терминал и введите там следующую команду:

Источник

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Простой осциллограф на Arduino своими руками

Хотите самостоятельно сделать дешевый осциллограф, который удовлетворял основные потребности в плане измерения электрических величин? Это возможно благодаря плате Arduino. На основе Arduino можно собрать простой осциллограф для ПК, который по себестоимости будет менее $5.

Характеристики и особенности самодельного осциллографа на Arduino:

  • 50000 выборок в секунду (можно довести до 110000, но тогда сигнал будет очень зашумленным)
  • Автотриггер
  • Счетчик частоты
  • Достаточно точные показания напряжения (в зависимости от точности резисторов, используемых для делителей напряжения)
  • Дополнительно можно выбрать диапазон напряжения: 5В, 6.6В, 10В, 20В

Компоненты для осциллографа:

  • Arduino Leonardo или Arduino Micro
  • Два зажима типа крокодил
  • Конденсатор 0.1 мкФ (опционально)
  • Стабилитрон 5.1В (опционально)
  • ПК с установленным компилятором языка Processing

Также дополнительно для делителей напряжения (если вы хотите измерять напряжение выше 5 В) потребуется:

  • Два двухполюсных переключателя
  • Два резистора 3 КОм
  • Два резистора 1.5 КОм
  • Один резистор 1 КОм
  • Небольшая макетная плата

Если вам нужно измерять только напряжение до 5 В, то можете не подключать делители напряжения, а контакты щупов подключить непосредственно на землю и на аналоговый порт A1 на плате Arduino. Тогда вам придется немного изменить код. В коде для Arduino поменяйте:

В коде для processing поменяйте:

Скетч для Arduino и код на processing:

Схема осциллографа на Arduino с делителями напряжения:

В левой стороне схемы расположен делитель напряжения с коэффициентом 1:4. То есть к нему можно подключать напряжение да 20 В.

Справа расположен делитель напряжения, переключающийся между линиями 5 В и опорного напряжения (Aref). Вы можете использовать переключатели для установки диапазона измерения: 5В, 6.64В, 10В или 20В. Второй контакт каждого переключателя соединяется с цифровым входом Arduino (D3 и D4). Это работает следующим образом. Если программа настроена на работу с опорным напряжением, АЦП сравнивает напряжение аналоговых входов с Aref вместо 5В. Например, мы измеряем 5 В, тогда напряжение на A1 будет 5В/4=1.25 В. Если оба переключателя разомкнуты, то напряжение на Aref будет 5В, АЦП прочитает 1.25/5=25%. Если первый переключатель разомкнут, а второй замкнут, напряжение на Aref будет 2.5В, АЦП прочитает 1.25/2.5=50%. Если первый переключатель замкнут, а второй разомкнут, напряжение на Aref будет 1.66В, АЦП прочитает 1.25/1.66=75%. Если оба переключателя замкнуты, напряжение на Aref будет 1.25В, АЦП прочитает 1.25/1.25=100%.

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

Если аналоговое опорное напряжение выбрано внутреннее (по умолчанию), и вы подводите напряжение питания к AREF, то это может вывести из строя Arduino.

Аналоговые входы не могут работать с отрицательным напряжением.

Не превышайте напряжения 5 В непосредственно на выводах Arduino.

Источник

Калининград & ХОББИ

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

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

-=dp=- » 10 май 2015, 10:39

Всем здрасти

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

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

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

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

-=dp=- » 10 май 2015, 10:47

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

Скетч и библиотеки работают в версии Arduino IDE 1.5.7
которую нужно скачать тут https://drive.google.com/open?id=1AKu5w . R2cHC3H8Yo

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

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

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

#define txtLINE0 0
#define txtLINE1 16
#define txtLINE2 30
#define txtLINE3 46

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

int sensorValue = 0;
const int ad_sw = 3; // Analog 3 pin for switches
const int ad_ch0 = 4; // Analog 4 pin for channel 0
const int ad_ch1 = 5; // Analog 5 pin for channel 1
const unsigned long VREF[] = <150, 300, 750, 1500, 3000>; // reference voltage 5.0V -> 150 : 1V/div range (100mV/dot)
// It means 5.0 * DOTS_DIV = 150. Use 4.9 if reference voltage is 4.9[V]
// -> 300 : 0.5V/div
// -> 750 : 0.2V/div
// ->1500 : 100mV/div
// -> 3000 : 50mV/div
const int MILLIVOL_per_dot[] = <33, 17, 6, 3, 2>; // mV/dot
const int MODE_ON = 0;
const int MODE_INV = 1;
const int MODE_OFF = 2;
const char *Modes[] = <" NORM", " INV", " OFF">;
const int TRIG_AUTO = 0;
const int TRIG_NORM = 1;
const int TRIG_SCAN = 2;
const int TRIG_ONE = 3;
const char *TRIG_Modes[] = <" Auto", " Norm", " Scan", " One">;
const int TRIG_E_UP = 0;
const int TRIG_E_DN = 1;
#define RATE_MIN 0
#define RATE_MAX 13
const char *Rates[] = <"F1-1", "F1-2 ", "F2 ", "5ms", "10ms", "20ms", "50ms", "0.1s", "0.2s", "0.5s", "1s", "2s", "5s", "10s">;
#define RANGE_MIN 0
#define RANGE_MAX 4
const char *Ranges[] = <"1V ", "0.5V", "0.2V", "0.1V", "50mV">;
unsigned long startMillis;
byte data[4][SAMPLES]; // keep twice of the number of channels to make it a double buffer
byte sample=0; // index for double buffer

// Declare variables and set defaults here
// Note: only ch1 is available with Aitendo’s parallel 320×240 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);

Источник

Adblock
detector