Pages: [1]   Go Down
Author Topic: measuring Vrms/AC Voltage using arduino ATmega 328  (Read 784 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I need to measure Vrms using arduino so I can display it on a LCD for my project. I'm not much familiar with arduino yet. Here I have the code for reading AC voltage.
Code:
#include <LiquidCrystal.h>


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int in0=0;
int in1=1;
int in2=2;
int out=(12, 11, 5, 4, 3, 2);
void setup() {
 
 
  lcd.begin(16, 2);
 
 
  lcd.print("output");
}

void loop() {
 

float input1=getvoltage(in2);
float output=getvoltage(out);
    float out= input1;
  lcd.setCursor(0, 1);
 
 
  lcd.print(out);
  delay(1000);
}
float getvoltage(int pin)
{
  return (analogRead(pin)-324);
}

Im planning to insert the equation Vrms = 0.707 *(Vpp/2) to display the Vrms.. Am I on the right track?
Logged

Left Coast, CA (USA)
Offline Offline
Brattain Member
*****
Karma: 361
Posts: 17294
Measurement changes behavior
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Am I on the right track?

Actualy no. It's pretty difficult to do what you are trying to do because a single analogRead() command takes just a single 'snap shot' of the value of a AC voltage where as you need to perform a lot of consecutive analogRead() statements to try and identify the highest positive peak and lowest negative peak before your formula can be applied. Also the analogRead command can only read DC voltages in the range of 0 to +5vdc where as a true AC voltage has a negative voltage for half its cycle which can damage a analog input pin.

 So you need external hardware circuitry to shift the representative AC voltage such that it's most positive and negative peaks fit within a 0-5dc range and a reading of +2.5 would represent the AC zero crossing value. Then you have to read enough points over a 16.666 milliseconds timeframe (one complete AC cycle at 60Hz) to be sure that you can identify the absolute peak values.

 This is not something the AVR chip is good at doing.

Lefty
« Last Edit: March 29, 2013, 09:51:02 am by retrolefty » Logged

Offline Offline
Edison Member
*
Karma: 58
Posts: 2078
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

This is a nice introduction, http://openenergymonitor.org/emon/buildingblocks/ac-power-arduino-maths
Logged

Pages: [1]   Go Up
Jump to: