Paso 7: Haciendo el circuito
Para el cálculo de potencia y energía que necesita dos parámetros. Voltaje y corriente de carga. Nuestra fuente de utilidad es de 220V AC y suficiente para que una descarga eléctrica. La medición se puede hacer con seguridad (no requerir ningún trabajo de alta tensión) mediante el uso de un transformador o adaptador de corriente AC a AC. El transformador proporciona aislamiento entre la alta y baja tensión.
Sensor de voltaje (transformador de AC/AC)
Adaptadores de corriente AC a AC o transformador puede venir en muchas clasificaciones de diferente tensión. Lo primero que es importante conocer es la clasificación de voltaje del adaptador. He utilizado un 220V a 12V transformador de medición del voltaje.
La señal de salida del transformador es una forma de onda sinusoidal cerca. Si tienes un 12V adaptador de corriente (RMS) debe ocurrir el pico de la señal positiva a + 16.97V y el pico de señal negativa deben ocurrir en - 16.97V. Sin embargo debido a la regulación de voltaje pobres con este tipo de adaptador cuando el adaptador está sin carga (como en este caso) la salida es a menudo alrededor de 14V-16V (RMS) dando un pico de tensión de alrededor de 19V-23V. La tensión de salida del transformador es proporcional a la tensión de entrada.
El acondicionamiento de señales electrónica (Arduino, Edison) necesita convertir la salida del adaptador a una forma de onda que tiene un pico positivo que está a menos de 5V y un pico negativo que es más que 0V y así tenemos que
- 1) escala abajo la forma de onda y
- 2) añadir un offset por lo que no hay ningún componente negativo.
La forma de onda puede ser reducido usando un divisor de tensión conectado en las terminales de los adaptadores y el desplazamiento (bias) se puede Agregar usando una fuente de voltaje creada por otro divisor de tensión conectado a través de la alimentación de Arduino que se muestra en la figura siguiente.
Resistencias R2 y R1 forman el divisor de voltaje que escala hacia abajo el adaptador de voltaje de CA y resistencias R3 y R4 proporcionan el sesgo de la tensión. C1 condensador proporciona una trayectoria de baja impedancia a tierra de la señal de a.c.. R1 y R2 deben ser elegidos para dar una pico-voltaje de salida de alrededor de 1V, para un adaptador de AC-AC con un 9V AC que RMS de salida que una combinación de resistor de 10k para la R1 y 100k R2 daría una salida conveniente:
#include <IoTkit.h> // include IoTkit.h to use the Intel IoT Kit #include <Ethernet.h> // must be included to use IoTkit #include <aJSON.h> #include <LiquidCrystal.h> // create an object of the IoTkit class IoTkit iotkit; const int vSensorPin = A0; const int cSensorPin = A1; const int numberOfSamples = 3000; int sampleV, sampleC; float voltageV, voltageC; float instVoltage, instCurrent; float sumI, sumV, sumP; float realPower, apparentPower,reactivePower; float powerFactor, voltageRMS, currentRMS; unsigned long last_kWhTime, kWhTime; float kiloWattHour = 0.0; // RS, EN, D4, D5, D6, D7 LiquidCrystal lcd(7, 6, 2, 3, 4, 5); void setup() { // put your setup code here, to run once: pinMode(7, OUTPUT); // not needed for arduino pinMode(6, OUTPUT); // but must set as output for Edison LCD library pinMode(5, OUTPUT); pinMode(4, OUTPUT); pinMode(3, OUTPUT); pinMode(2, OUTPUT); iotkit.begin(); lcd.begin(20, 4); lcd.setCursor(0, 1); } void loop() { // put your main code here, to run repeatedly: calculatePower(); displayPower(); sendToCloud(); delay(2000); } void calculatePower(){ for(int i=0; i<numberOfSamples; i++){ sampleV = analogRead(vSensorPin); sampleC = analogRead(cSensorPin); voltageC = sampleC*5.0/1023.0; voltageV = sampleV*5.0/1023.0; instCurrent = (voltageC-2.5)/0.66; instVoltage = (voltageV-2.46)*7.8; sumV += instVoltage * instVoltage; sumI += instCurrent * instCurrent; sumP += abs(instVoltage * instCurrent); } voltageRMS = sqrt(sumV / numberOfSamples); currentRMS = sqrt(sumI / numberOfSamples); realPower = sumP / numberOfSamples; apparentPower = voltageRMS * currentRMS; powerFactor = realPower / apparentPower; reactivePower = sqrt(apparentPower * apparentPower - realPower * realPower); last_kWhTime = kWhTime; kWhTime = millis(); kiloWattHour += (realPower / 1000) * ((kWhTime - last_kWhTime) / 3600000.0); sumV = 0; sumI = 0; sumP = 0; } void displayPower(){ lcd.clear(); lcd.setCursor(0,0); //col,row lcd.print("Voltage: "); lcd.print((int)voltageRMS); lcd.print("V "); lcd.print("Current: "); lcd.print(currentRMS); lcd.print("A"); lcd.setCursor(0,1); lcd.print("Power: "); lcd.print(realPower); lcd.print("W "); lcd.print("pf: "); lcd.print(powerFactor); lcd.setCursor(0,2); lcd.print("VAR: "); lcd.print(reactivePower); lcd.print("VAR "); lcd.print("VA: "); lcd.print(apparentPower); lcd.print("VA"); lcd.setCursor(0,3); lcd.print("Energy used: "); lcd.print(kiloWattHour); lcd.print("KWH"); } void sendToCloud(){ iotkit.send("voltage", voltageRMS); iotkit.send("current", currentRMS); iotkit.send("realpower", realPower); iotkit.send("powerfactor", powerFactor); iotkit.send("reactivepower", reactivePower); iotkit.send("apparentpower", apparentPower); iotkit.send("energy", kiloWattHour); }
El sesgo de voltaje proporcionado por R3 y R4 debe ser tensión de alimentación la mitad de la Arduino y así que R3 y R4 deben ser iguales. Resistencia más alta disminuye el consumo de energía. Usé 100 resistencias de k para R3 y R4.
Como el Edison está funcionando a 5V la forma de onda resultante del circuito tiene un pico positivo de 2, 5V + 1.15V = 3. 65V y pico negativo de 1.35V satisfacer los requerimientos de voltaje de entrada analógico de Edison y dejando mucho espacio por lo que no existe riesgo de sobre o bajo voltaje.
Si desea información detallada sobre cómo calcular los valores óptimos para los componentes que las tolerancias de componentes en cuenta, esta página podría ayudarte.
Sensor de corriente
Hay varios métodos disponibles para detección de flujo de corriente en un sistema. Uso de resistencias shunt, transformadores de corriente y el uso de sensores de efecto Hall son algunos métodos disponibles. En este instructable usé ACS712 Allegro sensor de medición actual. Allegro ACS712 sensor opera según el principio de efecto Hall y puede ser utilizado para medición de corriente AC y DC. No hay necesidad de circuitos auxiliares para este sensor es una inmensa ventaja sobre los otros métodos disponibles.
Se trata de un dispositivo de medición bidireccional, y por lo tanto esto puede ser utilizado para detección de corriente AC y DC. El ACS712 sensor está diseñado para tres actuales gamas 5A, 20A y 30A. El sensor consiste en un circuito integrado que funciona según el principio de efecto Hall. Este IC genera un voltaje proporcional a la corriente que fluye en el circuito. Breakout Junta de sensores de corriente se basa en este dispositivo también está disponible en el mercado y hacen tu vida más fácil.
Interfaz con Edison Arduino Breakout
En la figura siguiente muestra la conexión del sensor ACS712 a la Arduino Base de Edison.
Diagrama del circuito completo, tablero de conexión, archivos de proyecto de fritzing y hoja de datos del sensor se unen. Conecte todos los componentes en consecuencia.
Conexión del LCD
Conectar LCD a Edison según el diagrama del circuito. El diagrama de conexión se da a continuación. Conecte una resistencia de 330 ohm al pin de LED + LCD. Pin de vo de LCD debe conectarse un resistor variable si desea controlar el contraste de la pantalla o puede conectarse a tierra para el máximo contraste.
Siguiente