Advertisement
Electgpl

ARDUINO - Medidor de Potencia AC

Jan 18th, 2017
412
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.35 KB | None | 0 0
  1. #include <math.h>
  2. #include <LiquidCrystal.h>
  3. LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //( RS, EN, d4, d5, d6, d7)
  4. #define CONST_CORRIENTE 2
  5. #define CONST_TENSION   530
  6. int i, adcZ=0;
  7. float adc1=0, valorMax1=0, adc2=0, valorMax2=0;
  8. float tension, corriente, potencia;
  9. void setup(){
  10.    lcd.begin(16, 2);
  11.    lcd.clear();
  12. }
  13. void loop(){
  14.    do{
  15.       adcZ=analogRead(A0)-512;
  16.       delayMicroseconds(20);
  17.    }while(adcZ<10);
  18.    for(i=0;i<500;i++){
  19.       adc1=(analogRead(A0)*5.0/1023.0)-2.5;
  20.       delayMicroseconds(33);
  21.       valorMax1=adc1*adc1+valorMax1;
  22.       adc2=(analogRead(A1)*5.0/1023.0)-2.5;
  23.       delayMicroseconds(33);
  24.       valorMax2=adc2*adc2+valorMax2;
  25.    }  
  26.    tension=sqrt(valorMax1/500)*CONST_TENSION;
  27.    corriente=sqrt(valorMax2/500)*CONST_CORRIENTE;
  28.    potencia=tension*corriente;
  29.    delay(2000);
  30.    if(tension<50.0||corriente<0.03){
  31.       lcd.setCursor(0,0);
  32.       lcd.print("     W:000.0    ");
  33.       lcd.setCursor(0,1);
  34.       lcd.print("V:000.0   A:0.00");
  35.    }else{
  36.       lcd.setCursor(5,0);
  37.       lcd.print("W:");
  38.       lcd.setCursor(7,0);
  39.       lcd.print(potencia);
  40.       lcd.setCursor(0,1);
  41.       lcd.print("V:");
  42.       lcd.setCursor(2,1);
  43.       lcd.print(tension);
  44.       lcd.setCursor(10,1);
  45.       lcd.print("A:");
  46.       lcd.setCursor(12,1);
  47.       lcd.print(corriente);
  48.    }
  49.    valorMax1=0;
  50.    valorMax2=0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement