Працюємо з 09:00 до 19:00 без вихідних
Київ біля ТЦ Квадрат бул.Перова


Контролери Arduino можна використовувати як найпростіший осцилограф, для спостерігання за швидко-змінюваними електричними сигналами.

Завантажуємо програму Processing , після чого її встановлювати не потрібно - вона запускається з EXE-файлу.

Відкриваємо Arduino IDE та вставляємо наступний код:


#define ANALOG_IN 0
void setup() {
  Serial.begin(9600); 
  //Serial.begin(115200); 
}
void loop() {
  int val = analogRead(ANALOG_IN);                                              
  Serial.write( 0xff );                                                         
  Serial.write( (val >> 8) & 0xff );                                            
  Serial.write( val & 0xff );
}

Завантажуємо цей код в контролер Arduino.

Відкриваємо програму Processing та вставляємо в неї наступний код:

import processing.serial.*;
Serial port;  // Створення об'єкта класу Serial
int val;      // Дані, що отримуються з сом-порта
int[] values;
float zoom;
void setup() 
{
  size(1280, 480);


// Відкриваємо порт, до якого підключена плата

//контролера використовуючи швидкість (9600 bps)
  port = new Serial(this, Serial.list()[0], 9600);
  values = new int[width];
  zoom = 1.0f;
  smooth();
}
int getY(int val) {
  return (int)(height - val / 1023.0f * (height - 1));
}
int getValue() {
  int value = -1;
  while (port.available() >= 3) {
    if (port.read() == 0xff) {
      value = (port.read() << 8) | (port.read());
    }
  }
  return value;
}
void pushValue(int value) {
  for (int i=0; i<width-1; i++)
    values[i] = values[i+1];
  values[width-1] = value;
}
void drawLines() {
  stroke(255);
  
  int displayWidth = (int) (width / zoom);
  
  int k = values.length - displayWidth;
  
  int x0 = 0;
  int y0 = getY(values[k]);
  for (int i=1; i<displayWidth; i++) {
    k++;
    int x1 = (int) (i * (width-1) / (displayWidth-1));
    int y1 = getY(values[k]);
    line(x0, y0, x1, y1);
    x0 = x1;
    y0 = y1;
  }
}
void drawGrid() {
  stroke(255, 0, 0);
  line(0, height/2, width, height/2);
}
void keyReleased() {
  switch (key) {
    case '+':
      zoom *= 2.0f;
      println(zoom);
      if ( (int) (width / zoom) <= 1 )
        zoom /= 2.0f;
      break;
    case '-':
      zoom /= 2.0f;
      if (zoom < 1.0f)
        zoom *= 2.0f;
      break;
  }
}
void draw()
{
  background(0);
  drawGrid();
  val = getValue();
  if (val != -1) {
    pushValue(val);
  }
  drawLines();
}

Натискаємо кнопку пуск цієї програми та бачимо часовий графік того, що відбувається в нас на аналоговому вході A0 контролера.

Я таким чином, наприклад спостерігав, що на вихід видає модуль вимірювання напруги мережі 220В, так як на нього нема ніякої документації в інтернеті. При цьому я бачив синусоїду, але на цьому графіку нема прив'язок до часової шкали та величини сигналу. Тому важко вимірювати частоту та амплітуду цього сигналу.

Потрібно також відмітити, що COM-порт повинний бути в системі тільки один. Якщо на комп'ютері є фізичний порт COM1, то його потрібно деактивувати в диспетчері пристроїв.

Також можна збільшувати частоту дискретизації нашого осцилографа, збільшуючи швидкість СОМ-порту в контролері та в програмі Processing.

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Шестерня для зубчатого ременю на 40 зубців під вісь 8 мм

Шестерня для зубчатого ременю на 40 зубців під вісь 8 мм

Використовується для передачі та редукції обертаючого моменту від двигуна до вісі 8 ммКількість зубц..

56.80грн.

Підсилювач PAM8610 10x2Вт з регулюванням гучності та роз'ємами

Підсилювач PAM8610 10x2Вт з регулюванням гучності та роз'ємами

Стерео підсилювач звукової частоти класу D зі змінним резистором регулювання гучності, роз'ємами та ..

104.58грн.

Гайка М3 нейлонова

Гайка М3 нейлонова

Гайка чотирьохгранна під різьбу М3Підходить до нейлонових стійок та гвинтівГоловна перевага перед ме..

0.69грн.

Тестер автомобільний

Тестер автомобільний

Простий пристрій для перевірки цілістності електричного кола для автомобілістів.Показує наявність на..

72.84грн.

Датчик вологості грунту

Датчик вологості грунту

Датчик вологості грунту з дискретним та аналоговим виходомСкладається з чутливого елементу та плати ..

31.07грн.