Introduction: Arduino Wattmeter - Voltage, Current and Power Consumption
A device can be utilized to measure the power consumed. This circuit can also act as a Voltmeter and Ammeter to measure voltage and current.
Supplies
Hardware Components
Arduino Uno
LCD 16 X 2
LM 358 Op-Amp
7805 Volage regulator
Potentiometer 10k ohm
0.1 µF
Resistor 10k ohm
Resistor, 20 kohm
Resistor 2.21k ohm
Resistor, 0.22 ohm
Test load
Connecting wires
Software Components:
Arduino IDE
Step 1: Working of Arduino Wattmeter
Building your own meters not only carries down the cost of testing but also provides us room to facilitate the process of testing.
Working:
From the sensor part, there are two sections that are reliable for measuring voltage and current. For measuring the voltage, a voltage divider circuit is executed using a 10KΩ and a 2.2KΩ Resistor.
With the help of these resistors, you can easily measure voltages up to 24V. These resistors also support us in taking the voltage range to 0V – 5V, which is the normal range on which Arduino works.
In order to measure the current, we have to change the current values to conventional voltage values. As per Ohm’s Law, the voltage drop across a load is proportional to the current.
Hence, a small shunt resistor is arranged with respect to the load. By estimating the voltage across this resistor, we can calculate the current. We have used LM358 Op-Amp in Non-Inverting Amplifier Mode to magnify the values provided to Arduino.
The voltage divider network for the feedback control includes a20KΩ Resistor and 1KΩ Resistor. These resistors offer a gain of approximately 21.
Learn more about IoT Course which will help you to build a Customized IoT Solutions.
Step 2: Run a Code
#include
int Read_Voltage = A1;
int Read_Current = A0;
const int rs = 2, en = 4, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
float Voltage = 0.0;
float Current = 0.0;
float Power = 0.0;
void setup()
{
lcd.begin(16, 2);
Serial.begin(9600);
lcd.print(" Arduino ");
lcd.setCursor(0, 1);
lcd.print(" Wattmeter ");
delay(2000);
lcd.clear();
}
void loop()
{
Voltage = analogRead(Read_Voltage);
Current = analogRead(Read_Current);
Voltage = Voltage * (5.0/1023.0) * 6.46;
Current = Current * (5.0/1023.0) * 0.239;
Serial.println(Voltage); Serial.println(Current);
Power = Voltage * Current;
Serial.println(Power);
lcd.setCursor(0, 0);
lcd.print("V=");
lcd.print(Voltage);
lcd.print(" ");
lcd.print("I=");
lcd.print(Current);
lcd.setCursor(0, 1);
lcd.print("P=");
lcd.print(Power);
delay(1000);
}