Skillnad mellan versioner av "Grove - Electricity Sensor"
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 == | ||
− | + | == 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
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")