Skillnad mellan versioner av "Grove - Electricity Sensor"

Från Karlskrona Makerspace Wiki
Hoppa till: navigering, sök
 
Rad 1: Rad 1:
 +
[[Fil:Grove-Electricity-Sensor.jpg|200px|thumb|right|Grove - Electricity Sensor]]
 +
Elektricitetssensormodulen kan omvandla stor AC till liten amplitud. Du kan använda den för att testa stor växelström upp till 5A.
  
 +
== Kompatibilitet ==
  
  
Mer information: http://wiki.seeedstudio.com/Grove-Electricity_Sensor/
+
== Port ==
  
 +
 +
== Exempelkod ==
 +
=== Arduino ===
 +
<syntaxhighlight lang="C++" line>
 +
#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;
 +
    }
 +
</syntaxhighlight>
 +
 +
=== Raspberry Pi ===
 +
<syntaxhighlight lang="Python" line>
 +
import time
 +
import grovepi
 +
 +
# Connect the Grove Electricity Sensor to analog port A0
 +
# SIG,NC,NC,GND
 +
sensor = 0
 +
 +
grovepi.pinMode(sensor,"INPUT")
 +
 +
# Vcc of the grove interface is normally 5v
 +
grove_vcc = 5
 +
 +
while True:
 +
  try:
 +
      # Get sensor value
 +
      sensor_value = grovepi.analogRead(sensor)
 +
 +
      # Calculate amplitude current (mA)
 +
      amplitude_current = (float)(sensor_value / 1024 * grove_vcc / 800 * 2000000)
 +
 +
      # Calculate effective value (mA)
 +
      effective_value = amplitude_current / 1.414
 +
 +
      # minimum_current = 1 / 1024 * grove_vcc / 800 * 2000000 / 1.414 = 8.6(mA)
 +
      # Only for sinusoidal alternating current
 +
 +
      print("sensor_value", sensor_value)
 +
      print("The amplitude of the current is", amplitude_current, "mA")
 +
      print("The effective value of the current is", effective_value, "mA")
 +
      time.sleep(1)
 +
 +
  except IOError:
 +
      print ("Error")
 +
</syntaxhighlight>
 +
 +
== Mer information ==
 +
http://wiki.seeedstudio.com/Grove-Electricity_Sensor/
  
  
 
[[Category:Grove]]
 
[[Category:Grove]]

Versionen från 29 oktober 2018 kl. 09.27

Grove - Electricity Sensor

Elektricitetssensormodulen kan omvandla stor AC till liten amplitud. Du kan använda den för att testa stor växelström upp till 5A.

Kompatibilitet

Port

Exempelkod

Arduino

#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;
    }

Raspberry Pi

import time
import grovepi

# Connect the Grove Electricity Sensor to analog port A0
# SIG,NC,NC,GND
sensor = 0

grovepi.pinMode(sensor,"INPUT")

# Vcc of the grove interface is normally 5v
grove_vcc = 5

while True:
  try:
      # Get sensor value
      sensor_value = grovepi.analogRead(sensor)

      # Calculate amplitude current (mA)
      amplitude_current = (float)(sensor_value / 1024 * grove_vcc / 800 * 2000000)

      # Calculate effective value (mA)
      effective_value = amplitude_current / 1.414

      # minimum_current = 1 / 1024 * grove_vcc / 800 * 2000000 / 1.414 = 8.6(mA)
      # Only for sinusoidal alternating current

      print("sensor_value", sensor_value)
      print("The amplitude of the current is", amplitude_current, "mA")
      print("The effective value of the current is", effective_value, "mA")
      time.sleep(1)

  except IOError:
      print ("Error")

Mer information

http://wiki.seeedstudio.com/Grove-Electricity_Sensor/