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