miércoles, 2 de agosto de 2017

Amperimetro

Código:
#include <LiquidCrystal.h> // Incluye la Libreria LiquidCrystal
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Crea un Objeto LC. Parametros: (rs, enable, d4, d5, d6, d7)
float sensibilidad=0.100;//valor dado por el fabricante 5A=0.185, 20A=100, 30A=66
//variables universales
float v;
float ruido=0.040;
int selector=8,i;
//variables para directa
float salida, intensidad;
int rango=500;
//variables para alterna
float reposo=2.5;
float pico=0;
float redelectrica = 120;

void setup(){
  pinMode(selector,INPUT);//swithc de seleccion
  lcd.begin(16,2); // Inicializa la interface para el LCD screen, and determina sus dimensiones (ancho y alto) del display
  lcd.print("  INICIO");
  delay(1000);
}


void loop(){

  if(digitalRead(selector)==true){
    directa();
  }
  else if(digitalRead(selector)==false){
    voltaje();
    alterna();
  }
  //****SECCION PARA IMPRIMIR VALORES****
}
void voltaje(){
  v = analogRead(A0)*(5.0/1023.0);//calculo de Voltaje con señal analoga 1023 con referencia a 5v
}

void directa(){
  for(i=0;i<=rango;i++){
      voltaje();
      intensidad=intensidad+(v-2.5)/sensibilidad;//v-2.5/sensibilidad =i(amps)
    }
  intensidad=intensidad/rango;//se calcula un promedio a las mediciones en rangos de 25
  salida=intensidad;
  if(salida<=ruido)salida=0;
  lcd.clear(); // Limpia la pantalla
  lcd.print("    Directa");
  lcd.setCursor(0,1);
  lcd.print(salida,3);
  delay(250);
}

void alterna(){
  long tiempo=millis();
  float maxima;
  float minima;
  while(millis()-tiempo<500){
    voltaje();
    intensidad=0.9*intensidad+0.1*((v-reposo)/sensibilidad);
    if(intensidad>maxima)maxima=intensidad;
    if(intensidad<minima)minima=intensidad;
    salida=((maxima-minima)/2);
    if(salida<=ruido)salida=0;
  }
  lcd.clear(); // Limpia la pantalla
  lcd.print("    Alterna");
  lcd.setCursor(0,1);
  lcd.print(salida,3);
  delay(300);
}


Diagrama de sensor y switch pulldown

El diagrama del lcd véanlo en el blog del display anexado en el vídeo
https://www.youtube.com/watch?v=R-CRIthB7ZY



2 comentarios:

  1. Amigo esta muy buena la info, pero me gustaría saber si puedo medir voltaje y corriente en DC mismo tiempo con un solo arduino, no quisiera dañar la tarjeta ya que estaría leyendo ambas entradas análogas al tiempo; esto con el fin de poder hacer un medidor de Resistencias, el cual lee la entrada de voltaje y la de corriente y posteriormente calcula el valor de resistencia. Esto si seria viable ???

    ResponderBorrar