Side-Quest Frequenzmessung
Beim Kalibrieren musste ich nun doch etwas genauer vorgehen. Ich habe nun ein Messgerät getüddelt und kann die folgneden Werte für den EWM bekanntgeben:
13:48:59.993 -> Messung für 5 Sek auf Stufe: 1
13:49:04.998 -> Stufe: 1
13:49:05.032 -> RPM xa = 2508
13:49:05.032 -> RPM xb = 2520
13:49:05.032 -> RPM ya = 2508
13:49:05.067 -> RPM yb = 2520
13:49:05.067 -> Erwarte Eingabe der Leistungsstufe um nächste Messung zu starten
13:49:09.996 -> Messung für 5 Sek auf Stufe: 2
13:49:14.987 -> Stufe: 2
13:49:14.987 -> RPM xa = 3144
13:49:15.024 -> RPM xb = 3144
13:49:15.024 -> RPM ya = 3144
13:49:15.058 -> RPM yb = 3144
13:49:15.058 -> Erwarte Eingabe der Leistungsstufe um nächste Messung zu starten
13:49:19.554 -> Messung für 5 Sek auf Stufe: 3
13:49:24.563 -> Stufe: 3
13:49:24.596 -> RPM xa = 3672
13:49:24.596 -> RPM xb = 3672
13:49:24.596 -> RPM ya = 3672
13:49:24.634 -> RPM yb = 3672
13:49:24.634 -> Erwarte Eingabe der Leistungsstufe um nächste Messung zu starten
13:49:28.552 -> Messung für 5 Sek auf Stufe: 4
13:49:33.548 -> Stufe: 4
13:49:33.548 -> RPM xa = 4200
13:49:33.586 -> RPM xb = 4188
13:49:33.586 -> RPM ya = 4212
13:49:33.619 -> RPM yb = 4200
13:49:33.619 -> Erwarte Eingabe der Leistungsstufe um nächste Messung zu starten
13:49:38.345 -> Messung für 5 Sek auf Stufe: 5
13:49:43.322 -> Stufe: 5
13:49:43.356 -> RPM xa = 4980
13:49:43.356 -> RPM xb = 4980
13:49:43.390 -> RPM ya = 4980
13:49:43.390 -> RPM yb = 4992
13:49:43.423 -> Erwarte Eingabe der Leistungsstufe um nächste Messung zu starten
13:49:48.318 -> Messung für 5 Sek auf Stufe: 6
13:49:53.307 -> Stufe: 6
13:49:53.340 -> RPM xa = 5616
13:49:53.340 -> RPM xb = 5628
13:49:53.377 -> RPM ya = 5616
13:49:53.377 -> RPM yb = 5604
13:49:53.411 -> Erwarte Eingabe der Leistungsstufe um nächste Messung zu starten
Es werden 4 Richtungswechsel parallel gemessen und alle auf eine Minute gerechnet. Dabei sollte die Abweichung nach Möglichkeit nicht höher als +/- 12 sein. (Bei 5 Sekunden wäre das ein Messfehler von +/- 1 hochgerechnet auf 60 Skunden)
Das Messgerät ist einfach nachzubauen. Benötigt wird ein Arduino, ein MPU6050, 3-D Drucker, Kabel, Lötkolben. Ich würde mich freuen wenn mal jemand einen Original Hitachi messen könnte.
Hier kommt die Software:
#include <Arduino.h>
#include <TinyMPU6050.h>
MPU6050 mpu (Wire);
void setup() {
// Initialization
mpu.Initialize();
// Calibration
Serial.begin(9600);
Serial.println("=====================================");
Serial.println("Starting calibration...");
mpu.Calibrate();
Serial.println("Calibration complete!");
Serial.println("Erwarte Eingabe der Leistungsstufe um Messung zu starten");
}
void getRPM (char Stufe) {
Serial.print("Messung für 5 Sek auf Stufe: ");
Serial.println(Stufe);
int countxa = 0;
int countxb = 0;
int countya = 0;
int countyb = 0;
int lastx = mpu.GetRawAccX();
int lasty = mpu.GetRawAccY();
unsigned long zeitStart = millis();
unsigned int rpm = 0;
while(zeitStart + 5000 > millis()) {
mpu.Execute();
if(lastx < 0 && mpu.GetRawAccX() > 0) countxa++;
if(lastx > 0 && mpu.GetRawAccX() < 0) countxb++;
if(lasty < 0 && mpu.GetRawAccY() > 0) countya++;
if(lasty > 0 && mpu.GetRawAccY() < 0) countyb++;
lastx = mpu.GetRawAccX();
lasty = mpu.GetRawAccY();
}
Serial.print("Stufe: ");
Serial.println(Stufe);
Serial.print("RPM xa = ");
Serial.println(countxa * 12);
Serial.print("RPM xb = ");
Serial.println(countxb * 12);
Serial.print("RPM ya = ");
Serial.println(countya * 12);
Serial.print("RPM yb = ");
Serial.println(countyb * 12);
Serial.println("Erwarte Eingabe der Leistungsstufe um nächste Messung zu starten");
}
/*
* Loop
*/
void loop() {
while (Serial.available()>0){
char Stufe = Serial.read();
if (Stufe != '\n') getRPM(Stufe);
}
delay(100); // 100ms sec delay
}