21

Drehwinkelsensor

[Seeed Studio Grove - Rotary Angle Sensor]

Der Drehwinkelsensor kann den Drehwinkel seiner Drehachse bestimmen. Dafür besteht der Sensor aus einem Drehpotentiometer, das abhängig des Drehwinkels die Widerstandsverhältnisse zwischen seinen Anschlüssen verändert. Durch die bereits integrierte Verschaltung als Spannungsteiler gibt das Modul an seinem Anschluss eine analoge Spannung direkt abhängig vom Drehwinkel aus. Der Sensor kann direkt oder mithilfe des Grove Shields an einen analogen Pin am Arduino angeschlossen werden.

Eine der häufigsten Anwendungen eines Drehwinkelsensors (oder Drehpotentiometers) ist die Nutzung des Sensors als Drehknopf und damit als Eingabe. Mit einem solchen Drehknopf kann so beispielsweise die Helligkeit einer Leuchte oder die Geschwindigkeit eines Motors eingestellt werden.

Alle weiteren Hintergrundinformationen sowie ein Beispielaufbau und alle notwendigen Programmbibliotheken sind auf dem offiziellen Wiki (bisher nur in englischer Sprache) von Seeed Studio zusammengefasst. Zusätzlich findet man über alle gängigen Suchmaschinen durch die Eingabe der genauen Komponentenbezeichnungen entsprechende Projektbeispiele und Tutorials.

// In diesem Beispielcode verstellt der Grove Drehwinkelsensor je nach Drehwinkel die Helligkeit der Grove LED
/*macro definitions of Rotary angle sensor and LED pin*/

#define ROTARY_ANGLE_SENSOR A0
#define LED 3  //the Grove - LED is connected to PWM pin D3 of Arduino
#define ADC_REF 5 //reference voltage of ADC is 5v.If the Vcc switch on the seeeduino
                    //board switches to 3V3, the ADC_REF should be 3.3
#define GROVE_VCC 5 //VCC of the grove interface is normally 5v
#define FULL_ANGLE 300 //full value of the rotary angle is 300 degrees

void setup()
{
    Serial.begin(9600);
    pinMode(ROTARY_ANGLE_SENSOR, INPUT);
    pinMode(LED,OUTPUT);   
}

void loop()
{   
    float voltage;
    int sensor_value = analogRead(ROTARY_ANGLE_SENSOR);
    voltage = (float)sensor_value*ADC_REF/1023;
    float degrees = (voltage*FULL_ANGLE)/GROVE_VCC;
    Serial.println("The angle between the mark and the starting position:");
    Serial.println(degrees);

    int brightness;
    brightness = map(degrees, 0, FULL_ANGLE, 0, 255);
    analogWrite(LED,brightness);
    delay(500);
}

 

Wichtige Links für die ersten Schritte:

Projektbeispiele:

Weiterführende Hintergrundinformationen:

ZU ALLEN MATERIALIEN