Comment Bitte beachten Sie:
  • Alle Autoren akzeptieren mit dem Upload ihres Werkes die PhySX-Nutzungsbedingungen !
  • Sämtliche urheberrechtlich geschützte Medien, d.h. nicht-selbst erstellte Bilder, Medien und Videos werden kommentarlos gelöscht!

Pony Plot

Aus PhySX - Physikalische Schulexperimente Wiki
Zur Navigation springen Zur Suche springen
Pony Plot
Pony.PNG

Das Leben ist ein Ponyhof.

Kurzbeschreibung
Pony Plot ist ein Plotter für Arduino
Kategorien
Digitales Messen
Einordnung in den Lehrplan
Geeignet für: alle
Sonstiges
Durchführungsform Demoexperiment, Schüler*innen-Experiment
Anzahl Experimente in dieser Unterkategorie 1
Anspruch des Aufbaus leicht
Informationen
Name: Boczianowski, Pyras, Streicher
Kontakt: @
Uni: Humboldt-Universität zu Berlin
This box: view  talk  edit  

Pony Plot ist ein Plotter für Arduino. Alleinstellungsmerkmal ist, dass die Konfiguaration des Graphen (Skalierung, Achsenbeschriftung, usw.) vom Arduino an den PC übergeben werden. Damit muss ausschließlich der Programmcode des Arduinos an die jeweilige Messung angepasst werden. Pony Plot bleibt unberührt. Dies vereinfacht die Handhabung z. B. für Schülerinnen und Schüler bei der Programmierung eines Experiments wesentlich. Außerdem ist es so möglich, unterschiedliche Arduino-Experimente vorzubereiten, die mit der Verbindung zum PC die Achsenbeschriftung etc. festlegt, wie man es von kommerziellen Systemen gewöhnt ist.

Didaktischer Kommentar

Diagramme spielen im Physikunterricht eine große Rolle. Zwar existieren für Arduino und Co. Plotter in Hülle und Fülle, z. B. Arduino IDE. Diese genügen jedoch nicht den Ansprüchen des Physikunterrichts, weil insbesondere (gut lesbare) Achsenbeschriftungen mit physikalischen Einheiten häufig fehlen. Gerade für Demonstationsexperimente sind diese jedoch für die Kommunikation über die dargestellte Messung wichtig. Auch sind automatische Skalierungen der Achsen im Physikunterricht mitunter irritierend, wenngleich sie für andere Klientel hilfreich ist. Pony Plot ist auf die Bedürfnisse des Physikunterrichts zugeschnitten. Die Beschriftungen sind kontraststark und mit großer Schrift und Messpunkte farbig ausgeführt. So sind sie auch im hellen Klassenzimmer bei Beamer-Projektionen erkennbar.


Anleitung

Handhabung

Auf dem PC wird Pony Plot gestartet. Dies geschieht durch den Start der .exe-Datei. Java ist auf dem PC erforderlich.(https://www.java.com).
Alternative bzw. unter Linux und Mac OS X lässt Pony Plot in der Processing Umgebung ausführen (https://processing.org/download/). Für Pony Plot müssen die Libraries gicentre von Wood und Slingsby und controlP5 von Schlegel installiert werden. Zu finden unter Sketch:Library importieren:Lirary hinzufügen:Filter. Unter Datei:Exportieren kann anschließend eine .exe-Datei erstellt werden, die auf dem gewählten System lauffähig ist.

Pony Plot sucht nach der zuletzt aufgetauchte serielle Schnittstelle auf dem PC und liest die vom Arduino übermittelten Konfigurationen für die grafische Darstellung ein. Die Messung startet je nach Programmierung des Arduino automatisch, über einen physikalischen Taster an einem Port des Arduinos oder auch über einen Klick in das Farbfeld der Legende des Graphen. Die Aufnahme mehrerer Messung in unterschiedlichen Farben ist so mit Pony Plot möglich. Siehe Abbildung 1.

Grafik PonyPlot.png

Abb.1: Kennlinien unterschiedlicher elektronischer Bauteile dargestellt in Pony Plot: Glühlampe, rote LED, blaue LED, Widerstand

Konfiguration

Der Arduino übergibt beim Start (Reset bzw. Verbindungsaufbau an der seriellen Schnittstelle) die Konfiguration an Pony Plot über die serielle Schnittstelle. Festgelegt werden folgende Parameter (Version 0.4.7):

  • Titel des Diagramms
  • Untertitel
  • Skalierung der Achsen (Minima und Maxima)
  • Zahlenformat insb. Nachkommastellen
  • Achsenbeschriftung
  • Anzahl der übertagenen Messpunkte pro Messung
  • Farbe des Graphen
  • Legende mit Startbutton in unterschiedlichen Farben

Download

Der Programmcode Pony Plot ist Open Source (xxx Lizenz, Autor: Ferdinand Streicher ) und verwendet die Libraries gicentre von Wood und Slingsby (xxx Lizenz) und controlP5 von Schlegel (xxx Lizenz).
Pony Plot, Version 0.6.6, zur Ausführung in Processing: Datei:Ponyplot.zip
Pony Plot, Version 0.6.6, als ausführbare Datei für Windows (erfordert Java, 5MB) Datei:Ponyplot.windows64.zip
Pony Plot, Version 0.6.6, als ausführbare Datei für Windows (inklusive Java, 100MB) (in Kürze)

Code

void setup() {
  Serial.begin(9600);
  
  Serial.println();
  Serial.println(F("start:"));
  //Serial.println(F("title:UI-Kennlinien"));
  //Serial.println(F("subtitle:Showing magic"));
  Serial.println(F("setMaxY:20"));
  Serial.println(F("setMinY:0"));
  Serial.println(F("setMinX:0"));
  Serial.println(F("setMaxX:5"));
  Serial.println(F("setYFormat:#.###"));
  Serial.println(F("setXFormat:#.#"));
  Serial.println(F("setXAxisLabel:Spannung in Volt"));
  Serial.println(F("setYAxisLabel:Strom in Milliampere"));
  Serial.println(F("setPointColor:0,50,255"));
  Serial.println(F("setXDataLength:256"));
  
  Serial.println(F("button:B:Blaue LED:0,0,255"));
  Serial.println(F("button:R:Rote LED:255,0,0"));
  Serial.println(F("button:L:Gluehlampe:34,127,48"));
  Serial.println(F("button:r:Widerstand:0,0,0"));
  
  pinMode(11,OUTPUT); // PWM out
  pinMode(3,OUTPUT);  // PWM out
  pinMode(A0,INPUT);  // analog input
  pinMode(A1,INPUT);  // analog input
  TCCR2A = B10100011; //schnelle PWM an A and B
  TCCR2B = B00000001; //Keine Voreinstellung für Timer2
}

float Rseries=100;

void measure(byte val, byte nrep) {
  unsigned int v0=0;
  unsigned int v1=0;
  OCR2A=val;
  OCR2B=val;
  delay(30);
  for(byte i=0; i<nrep; i++){
    v0+=analogRead(A0);
    v1+=analogRead(A1);
    delay(5);
  }
  float volt0 = 5.0 * v0 / 1024.0 /nrep;
  float volt1 = 5.0 * v1 / 1024.0 /nrep;
  float ampere = 1000.0*(volt0-volt1)/Rseries;
  if (ampere<=0) ampere = 0;

  Serial.print(volt1);
  Serial.print(" ");
  Serial.println(ampere);
}

char command=0;
void loop() {
  if (command!=0) {
    switch (command) {
      case 'R' : // Rote LED
        Serial.println(F("activeGraph:0"));
        Serial.println(F("setPointColor:255,0,0"));
        Serial.println(F("setLineWidth:0"));
        break;
      case 'B' : // Blaue LED
        Serial.println(F("activeGraph:2"));
        Serial.println(F("setPointColor:0,0,255"));
        Serial.println(F("setLineWidth:0"));
        break;
      case 'L' : // Glühlampe
        Serial.println(F("activeGraph:5"));
        Serial.println(F("setPointColor:34,127,48"));
        Serial.println(F("setLineWidth:0"));
        break;
      case 'r' : // Widerstand
        Serial.println(F("activeGraph:6"));
        Serial.println(F("setPointColor:0,0,0"));
        Serial.println(F("setLineWidth:0"));
        break;
    }
    // starte eigentliche Messung 256 Messpunkte von 0...255
    for (int i=0;i<256;i++) {
      measure(i,32);
    }
    command =0;
  }
  // Lese Kommando von der seriellen Schnittstelle
  if(Serial.available()){
    command=Serial.read();
  } 
}