Oscyloskop wysokich częstotliwości (009; 23.07.2009; arduino, processing)
Projekt ten powstał, aby umożliwić pomiary napięcia przez Arduino bez konieczności zmian kodu Arduino dla różnych, szczególnie wysokich częstotliwości.
Zasada działania projektu przedstawia się następująco:
Kod do Arduino wygląda następująco:
int ProbkowanieUS = 10000; //[Hz] domyślne
int Przerwa = 30000; //[s] domyślne
boolean Start = false;
void setup()
{
Serial.begin(115200);
pinMode(13, OUTPUT);
}
void loop()
{
if (Serial.available()>0)
{
delay(500);
ProbkowanieUS=(10000/Serial.read());
delay(500);
Przerwa = (1000*Serial.read());
Start = true;
}
else
{
delay(500);
}
if (Start ==true)
{
delay(2000);
Serial.flush();
digitalWrite(13, HIGH);
for(int i=1 ; i<=500;i++)
{
Serial.print(analogRead(0)/4, BYTE);
delayMicroseconds(ProbkowanieUS-132);
}
digitalWrite(13, LOW);
Start = false;
delay(Przerwa);
Serial.flush();
}
}
Kod do Processingu:
import processing.serial.*;
Serial Arduino;
int X=40;
int Y;
int CzestotliwoscProbkowania = 1; //[*100Hz] max. 7500Hz
int Przerwa = 10; //[s]
float T = 5/float(CzestotliwoscProbkowania);
void setup()
{
Arduino = new Serial(this,"COM4", 115200);
size(580, 316);
background(200);
stroke(0);
rect(40,30,500,255);
PFont font;
font = loadFont("ArialMT-16.vlw");
textFont(font);
fill(0);
text("5V",18,37);
text("0V",18,290);
text("0s",36,302);
text(str(T),532,302);
}
void draw()
{
if (Arduino.available() > 0)
{
Y = int(285-Arduino.read());
stroke(255,0,0);
point(X,Y);
X++;
}
else
{
delay(Przerwa*1000 - 4000);
Arduino.write(byte(CzestotliwoscProbkowania));
Arduino.write(byte(Przerwa));
X=40;
background(200);
stroke(0);
fill(255);
rect(40,30,500,255);
fill(0);
text("5V",18,37);
text("0V",18,292);
text("0s",36,302);
text(str(T),532,302);
}
}
Uwaga: maksymalna możliwa do uzyskania częstotliwość próbkowania wynosi 7500Hz. Testu częstotliwości próbkowania dokonać możemy podając na wejście przebieg zmienny o znanej częstotliwości, np. podany z wyjścia PWM Arduino (połączenie przez rezystory).
Przykładowe przebiegi:

Zastosowane w artykule programy:
OscyloskopHFarduino.pde,
OscyloskoHFprocessing.pde.
Pobierz ten artykuł w formacie pdf: PDF