Skillnad mellan versioner av "Grove - Electricity Sensor"
(2 mellanliggande versioner av samma användare visas inte) | |||
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]] | ||
+ | [[Category:Grove-Sensor]] | ||
+ | |||
+ | [[Category:Kna-Wiki]] |
Nuvarande version från 4 februari 2021 kl. 07.26
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")