zurück


Sensoren

Das Arduino Board besitzt 6 Eingänge zur Messung einer Analogen Spannung (0 -5 V) über einen A/D Wandler (http://de.wikipedia.org/wiki/Analog-Digital-Umsetzer). Sensoren werden an diese Analog-Eingänge angeschlossen.


Sensoren können als eine Art “Fühler” gesehen werden, um bestimmte physikalische oder chemische Eigenschaften unserer Umwelt zu erfassen (http://de.wikipedia.org/wiki/Sensor). Für diesen Workshop arbeiten wir meist mit Sensoren, die je nach Messung eine Spannung zwischen 0 und 5 Volt zurückgeben. Der Arduino Code zur Messung am jeweiligen Analog-Eingang lautet:


analogRead(pinNummer);


Die A/D-Wandler des Arduino Boards realisieren diese Messung mit einer Genauigkeit von 10 Bit. Die Zahl, die die Messung zu einem bestimmten Zeitpunkt repräsentiert, kann daher im Bereich von 0 bis 1023 liegen.



Potentiometer


Ein Potentiometer ist ein einfacher Drehknopf, der über die Drehung einen Widerstand verändert, welcher über den Analog-Eingang des Arduino Boards gemessen werden kann.



potentiometer


potentiometer


Gerade beim Experimentieren mit anderen Sensoren eignet sich ein Potentiometer immer sehr gut, um den Programmablauf zu überpüfen, da er lineare Werte zwischen 0 und 1023 liefert.

Hier ein einfacher Code zum Verändern der An/Aus Geschwindigkeit der eingebauten LED auf dem Board:


/* poti to blinking LED
 *
 * set on/off speed of LED with poti
 *

 */

// LED pin
int ledPin = 13;

// potiPin
int potiPin = 2;

// poti value
int potiValue;

// this block is executed one time when programm starts
void setup(){

  // set pin modes
  pinMode(ledPin,OUTPUT);

}

// this block is executed in a loop after setup is called one time
void loop(){

  // get value of poti (value between 0 and 1023)
  potiValue = analogRead(potiPin);

  // sets LED on
  digitalWrite(ledPin,HIGH);
  // wait (ms)
  delay(potiValue);
  // sets LED off
  digitalWrite(ledPin,LOW);
  // wait (ms)
  delay(potiValue);

}




Fotowiderstand/Photoresistor (Lichtsensor)


siehe http://de.wikipedia.org/wiki/Fotowiderstand


photoresistor


photosensor




Distanzsensor (Sharp GP2D12)


siehe http://www.rn-wissen.de/index.php/Sensorarten#Sharp_GP2D12


distancesensor


Der GP2D12 Infrarot Entfernungssensor von Sharp mit Analogausgang bietet eine Reichweite von 10 – 80cm.




Bewegungssensor


motionsensor


Der Passiv-Infrarot-Sensor KC7783R – 5V erkennt Bewegungen eines menschlichen Körpers durch seine Wärmestrahlung bis zu einer Entfernung von 5m. Bei Erkennung liefert er eine Spannung von 5V.




Sensor zur Messung von elektromagnetischen Wellen (LT5534)


lt5534


Mithilfe des LT5534 und enstprechender Antenne ist es möglich elektromagnetische Wellen im Raum zu messen (z.B. WLAN, Bluetooth, GSM-Netz etc.). Hier ein einfacher Arduino Code zur Messung elektromagnetischer Wellen auf dem Board. Die Ausgabe der Meßwerte erfolgt auf der seriellen Schnittstelle:


/* LT5534 Sensor

 *
 * programm to test LT5534 Sensor to measure electromagnetic waves
 *

 */

// sensor

int peak = 0;
int sensorValue = 0;

// this block is executed one time when programm starts
void setup(){

  Serial.begin(57600);

}

// this block is executed in a loop after setup is called one time
void loop(){

  // reset peak
  peak = 0;
  // use loop to have 100 measurements
  for (int i=0; i< 100; i++) {
    // get sensor value
    sensorValue = analogRead(0);
    // check if curren sensor value is higher than peak
    if(sensorValue > peak){
      // set new peak
      peak = sensorValue;
    }
    // delay to have best measurement
    delayMicroseconds(100);
  }
  // write value to serial port
  Serial.println(peak);
  // delay (to slow down output)
  delay(10);
}




Piezosensor + Vorverstärker


piezo

preamp


Mithilfe eines Piezosensors (siehe http://de.wikipedia.org/wiki/Piezosensor) und einem Vorverstärker ist es möglich Vibrationen von Festkörpern (z.B. Fenster, Pfeiler, Wände etc.) zu messen.


Processing Code zur Viszualisierung des Piezosensors:


/*

 simple vibration visualization of piezo sensor

 */

// libraries
import processing.serial.*;
// serial connection
Serial port;
String message = null;
String elements[] = null;
// arduino
int[] sensorValues = new int[6];
// visualization
int zeroPiezo = 512;
int directionPiezo = 0; // 0=down, 1=up;
int lastPiezoValue = 0;
int peak = 0;
int valley = 0;
int amplitude = 0;

int counter;

void setup() {
  // size
  size(800, 600);
  // ellipse mode
  ellipseMode(CENTER);
  // init connection to arduino
  println("Opening: "+Serial.list()[0]);
  port = new Serial(this, Serial.list()[0], 57600);
}

void draw() {

  // clear background (blur drawing)
  fill(0,10);
  noStroke();
  rect(0,0,width,height);

  // calc peak and valley
  if(directionPiezo == 1){
    // ckeck peak
    if(sensorValues[0] < lastPiezoValue){
      peak = sensorValues[0];
      directionPiezo = 0;
    }
  }
  else{
    // ckeck peak
    if(sensorValues[0] > lastPiezoValue){
      valley = sensorValues[0];
      directionPiezo = 1;
    }
  }
  lastPiezoValue = sensorValues[0];

  // calc ampliutde
  amplitude = peak-valley;

  // draw circle
  noFill();
  stroke(255);
  ellipse(width/2, height/2, amplitude, amplitude);

}

// serial event
void serialEvent(Serial p){

  // get message till line break (ASCII > 13)
  message = port.readStringUntil(13);
  // just if there is data
  if (message != null) {
    // try catch function because of possible garbage in received data
    try {
      elements = splitTokens(message);
      // loop through sensor values
      for (int i =0; i < elements.length && i < 6; i++ ) {
        sensorValues[i] = int(elements[i]);
      }
    }
    catch (Exception e){
    }
  }

}



Schalter/Switch


Im eigentlichen Sinne ist ein Schalter kein Sensor, da er nur zwei Werte liefert (An oder Aus). Er wird auch an einem digitalen Eingang des Boards angeschlossen.


switch



switch


Hier ein einfacher Code zum An- und Ausschalten einer auf dem Board verbauten LED mit einem Taster:


/* 

 *
 * turn LED on/off using switch button
 *

 */

// LED pin
int ledPin = 13;

// switchPin
int switchPin = 8;

// this block is executed one time when programm starts
void setup(){

  // set pin modes
  pinMode(ledPin,OUTPUT);
  pinMode(switchPin,INPUT);

    // turn on pullup resistor for switch button
  digitalWrite(switchPin, HIGH);

}

// this block is executed in a loop after setup is called one time
void loop(){

  // using switch button to turn LED on/off
  digitalWrite(ledPin,digitalRead(switchPin));

}