26

Stromsensor

[Seeed Studio Grove – Electricity Sensor]

Der Stromsensor misst die Wechselstromstärke eines Kabels. Ein Stromwandler wandelt eine hohe Wechselstromstärke in eine minimale um. Durch die interne Verschaltung wird schließlich über einen analogen Anschluss eine analoge Spannung ausgegeben, die proportional zur gemessenen Stromstärke ist. Die maximal messbare Stromstärke liegt bei 5 Ampere. Der Sensor kann direkt oder mithilfe des Grove Shields an einen analogen Pin des Arduinos angeschlossen werden.

Das Modul kann beispielsweise zum Überwachen des Stromverbrauchs eines Geräts eingesetzt 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 Komponentenbezeichnung entsprechende Projektbeispiele und Tutorials.

Die genaue Bezeichnung des Stromwandlers, die bei der Suche von Beschreibungen und Anleitungen wichtig sein kann, lautet TA12-200.

/****************************************************************************/  
    //  Function: Measure the amplitude current of the alternating current and
    //            the effective current of the sinusoidal alternating current.
    //  Hardware: Grove - Electricity Sensor        
    //  Date:    Jan 19,2013
    //  by www.seeedstudio.com
    #define ELECTRICITY_SENSOR A0 // Analog input pin that sensor is attached to

    float amplitude_current;               //amplitude current
    float effective_value;       //effective current

    void setup()
    {
        Serial.begin(9600);
        pins_init();
    }
    void loop()
    {
        int sensor_max;
        sensor_max = getMaxValue();
        Serial.print("sensor_max = ");
        Serial.println(sensor_max);
        //the VCC on the Grove interface of the sensor is 5v
        amplitude_current=(float)sensor_max/1024*5/800*2000000;
        effective_value=amplitude_current/1.414;//minimum_current=1/1024*5/800*2000000/1.414=8.6(mA)
                            //Only for sinusoidal alternating current
        Serial.println("The amplitude of the current is(in mA)");
        Serial.println(amplitude_current,1);//Only one number after the decimal point
        Serial.println("The effective value of the current is(in mA)");
        Serial.println(effective_value,1);
    }
    void pins_init()
    {
        pinMode(ELECTRICITY_SENSOR, INPUT);
    }
    /*Function: Sample for 1000ms and get the maximum value from the SIG pin*/
    int getMaxValue()
    {
        int sensorValue;             //value read from the sensor
        int sensorMax = 0;
        uint32_t start_time = millis();
        while((millis()-start_time) < 1000)//sample for 1000ms
        {
            sensorValue = analogRead(ELECTRICITY_SENSOR);
            if (sensorValue > sensorMax)
            {
                /*record the maximum sensor value*/
                sensorMax = sensorValue;
            }
        }
        return sensorMax;
    }

Wichtige Links für die ersten Schritte:

Projektbeispiele:

Weiterführende Hintergrundinformationen:

ZU ALLEN MATERIALIEN