Auswertung von Messwerten mit dem hier vorhandenen Online-Grafikprogramm


An den Abb. 1 und 2 ist erkennbar, in welcher Form die Programme für das CASSY und Arduino die Wertepaare „Zeit;Messsignal“ ausgeben.


Abb.1

CASSY

Abb. 2

serieller Monitor von Arduino

Im Tabellenfenster des Grafikprogramms darf unter der Tabelle keine infolge eines Zeilenwechsels gebildet Leerzeile stehen !

Achtung: Damit die Messwerte, wie in der Abb. 2 sichtbar angezeigt werden, muss das Uhrensymbol im Fenster „Serieller Monitor“ angeklickt werden.

Alle CASSY-Messwerte können auf ein Mal kopiert und anschließend in das Eingabefenster der Grafikprogramms eingefügt werden. Dies ist auch mit dem zu Arduino passenden Messprogramm „Coolterm“ (CoolTerm - Free download and software reviews - CNET Download ) möglich, welches als Freeware aus dem Internet heruntergeladen werden kann. Es ist erheblich leistungsfähiger als das zu Arduino gehörende Programm zur Erfassung der Messwerte.  Bei Anwendung des Arduino - Programms können nur 20 Messwertepaare direkt übertragen werden.

Damit das hier vorliegende Grafikprogramm die Arduinowerte als zu Arduino gehörig erkennt, muss im Fenster des Programms diesen Werten ein ar (ohne Zeilenwechsel) angefügt werden. Wird zusätzlich noch ein I (groß) mit einer Zahl angefügt z. B. I0,001, dann wird neben dem Diagramm der Messwerte noch die zugehörige Integralfunktion dargestellt. Mit 0,001 wird das Integral multipliziert z.B. dann, wenn die Zeiten in Millisekunden angegeben sind.

Mit dem Anklicken dieser Zeile wird eine Tabelle von Messwerten angezeigt, die mit dem CASSY aufgenommen wurden. Werden diese Messwerte in das dafür vorgesehene Eingabefenster des Grafikprogramms eingefügt, dann werden sie nach „START“ in einem Diagramm dargestellt und außerdem wird der Graph der gehörigen Integralfunktion gezeichnet.

Mit dem Grafikprogramm kann geprüft werden , ob die Diagramme der Messwerte durch mathematische Funktionen dargestellt werden können.

Beispiel:

In Abb. 3 sichtbare violette Diagramm wurde mit den Werten erstellt die mit dem CASSY von LD-DIDACTIC während der Schwingung eines Federpendels erfasst wurden. Das rote Diagramm stellt die zugehörige Integralfunktion dar. Mit Hilfe des Grafikprogramms wurde dem violetten Diagramm der rote Graph zu y= -0,98*sin(2*pi/0,930*x+pi/2) angepasst (siehe Abb.4).



Abb.3



Abb.4



Die folgenden Zeilen bilden das zur Aufnahme der Schwingung verwendete Messprogramm. Soll der serielle Monitor von Arduino die Messwerte (Zeit in Millisekunden, Spannung in Volt) in einer Tabelle ausgegeben (siehe Abb.2), dann müssen die Printbefehle 3, 4, 5, 7, 8, 9, 10, 11, 12 deaktiviert und die Befehle 1 und 6 aktiviert werden. Nach Aufruf des seriellen Plotters zur Darstellung der Werte in einem Diagramm muss Value 1 (Serial.print(nil – tt)) im Plotterfenster abgeschaltet werden.

int eingang = A0;  //Eingang A0

float Wer = 0;  //Spannung an A0, 10-bit-Wert 0-1024

float w = 1;  //Mittelungszeit zur Bestimmung von Wer= n, der Spannung zwischen A0 und dem Mittelabgriff des Potentiometers, wenn die Eingangsspannung 0 ist.

float v = 0;  //Mittelungszeit während der Messung

float wi = 0;  

float n = 0;  

int m = 0;  // m steht für die Zahl der Messwerte, aus denen ein Mittelwert gebildet werden soll.

long tt = 0;  //Startzeit (Millis())

long nil = 0;  // Millis()

float d = 0;


void setup() {


  Serial.begin(9600);

  tt = millis();


  do  // Hier wird n bestimmt,der Mittelwert aus m Messwerten.

  {

    Wer = analogRead(eingang) + Wer;

    ++m;

    nil = millis();


  } while (nil - tt < w);

  n = Wer / m;

}


//--------------------------------------


void loop() {


  m = 0;

  Wer = 0;

  wi = 0;


  do  //Mittelwertbildung aus m Messwerten

  {

    Wer = analogRead(eingang);

    wi = Wer - n + wi;

    ++m;

    nil = millis();

  } while (nil - tt < v);


  delay(50);  //zur Verminderung der Messfrequenz

  wi = (wi / m) * 5 / 1024;  // Das linke wi steht für die Ausgangsspannung des Integrators. 5V entspricht 1024

  //Serial.print(",");//1

  Serial.println(wi);//2

   Serial.print(",");//3

  Serial.print(0);//4

  Serial.print(",");//5

  d = 0.04 * sin(2 * 3.1416 * (nil - tt) / 1000) / abs(sin(2 * 3.1416 * (nil - tt) / 1000));  //zur Darstellung einer Zeitskala

  //Serial.print(nil – tt);//6

  Serial.print(-2.5+d);//7

  Serial.print(",");//8

  Serial.print(-2.5-d);//9 Der Abstand zwischen den zu -2,5 und +2,5 gehörenden Linien ist gleich 10/12 von der Höhe des Diagrammfeldes

  Serial.print(",");//10

  Serial.print(2.5); //11 

  Serial.println(",");//12

}