0% encontró este documento útil (0 votos)
75 vistas14 páginas

Codigo Arduino

El documento describe un programa para medir voltaje, corriente y resistencia usando un Arduino. Define variables y configura los pines de entrada y salida para conectar diferentes instrumentos de medición.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
75 vistas14 páginas

Codigo Arduino

El documento describe un programa para medir voltaje, corriente y resistencia usando un Arduino. Define variables y configura los pines de entrada y salida para conectar diferentes instrumentos de medición.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

float v2=5; // v2 es el voltaje maximo que puede leer el arduino que es igual a 5 voltios.

float r1; //variable de resistencia uno del divisor de tension.


float r2; //variable de resistencia dos del divisor de tension.
float res_esc1; //valor de resistencia para la primera escala para medicion de las resistencias.
float res_esc2; //valor de resistencia para la segunda escala para medicion de las resistencias.
float res_esc3; //valor de resistencia para la tercera escala para medicion de las resistencias.
int opcion=0; //la variable opcion esta habilitado para la eleccion de etapas o inociar del
programa.
int salir=0; //se usara para salir del programa.
int escala=0; //la variable escala es para la eleccion de escalas.
int etapa=0; //la variable etapa es para la eleccion de etapas.
//----------------------- FIJAMOS LOS PULSADORES-----------------------------
int buton_v=1;
int buton_a=1;
int buton_r=1;
//---------------------------------------------------------------------------
void setup()
{
Serial.begin(9600);
//-------------CONFIGURAMOS LOS PINES DE ENTRADA Y SALIDA ----------------
pinMode(5, INPUT); // Configuramos el pin 5 como, entrada para OHMETRO
pinMode(6, INPUT); // Configuramos el pin 6 como, entrada para AMPERIMETRO
pinMode(7, INPUT); // Configuramos el pin 7 como, entrada para VOLTIMETRO
pinMode(3,OUTPUT); // Configuramos el pin 3 como, salida para GND AMPERIMETRO
pinMode(4,OUTPUT); // Configuramos el pin 4 como, salida para GND VOLTIMETRO
pinMode(8,OUTPUT); // Configuramos el pin 8 como, salida para OHMETRO 1ra escala
pinMode(9,OUTPUT); // Configuramos el pin 9 como, salida para OHMETRO 2da escala
pinMode(10,OUTPUT); // Configuramos el pin 10 como, salida para OHMETRO 3ra escala
pinMode(11,OUTPUT); // Configuramos el pin 11 como, salida para VOLT_AMP 3ra escala
pinMode(12,OUTPUT); // Configuramos el pin 12 como, salida para VOLT_AMP 2da escala
pinMode(13,OUTPUT); // Configuramos el pin 13 como, salida para VOLT_AMP 1ra escala
//------------------------------------------------------------------------
}
void loop()
{
//_______________________________Asignando valores alos
pines________________________
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);

//____________________________________________________________________________
_______
if(Serial.available()>0){
opcion = Serial.read();
}
delay(5);
//----------declarando variables------------------
float entrada,vout,Vint,error,aux=0,leer_para_res,in; //in = intensidad
//------------condicionando el programa-----------
buton_v=digitalRead(7);
buton_a=digitalRead(6);
buton_r=digitalRead(5);
delay(10);
if(buton_v==0 || buton_a==0 || buton_r==0){
opcion='i';
delay(10);
}
if(opcion=='i')
{

if(buton_v==0 || buton_a==0 || buton_r==0)


{
if(buton_v==0){
opcion='3';
}
if(buton_a==0){
opcion='6';
}
if(buton_r==0){
opcion='9';
}
}
Serial.println("MULTIMETR0");
delay(1000);
Serial.println("Saludos");
delay(1000);
while(opcion=='i')
{
if(Serial.available()>0)
{
opcion = Serial.read();
}
Serial.println("Iniciado..");
delay(500);
}
// ******** ETAPAS ****** ETAPAS ****** ETAPAS ****** ETAPAS ****** ETAPAS
****** ETAPAS ****** ETAPAS ****** ETAPAS ******
while(opcion!='f')
{
if(Serial.available()>0)
{
opcion = Serial.read();
}
delay(5);
//**************************** VOLTIMETRO ****** VOLTIMETRO ******
VOLTIMETRO ****************************
if(opcion=='1' || opcion=='2' || opcion=='3') //condicionamos para la etapa de
voltimetro
{
while(opcion=='1' || opcion=='2' || opcion=='3')
{
if(Serial.available()>0)
{
opcion = Serial.read();
}
escala=opcion;
//--------------------1ra escala 10 voltios ---------------------
if(escala=='1')
{
//____________________activando el relay_____________________
digitalWrite(3,HIGH); //activa GND para el amperimetro
digitalWrite(4,LOW); //activa GND para el voltimetro
digitalWrite(8,LOW); //activa 1ra escala del OHMETRO 2400 Ohm
digitalWrite(9,LOW); //activa 2da escala del OHMETRO 24K Ohm
digitalWrite(10,LOW); //activa 3ra escala del OHMETRO 2M Ohm
digitalWrite(11,LOW); //activa 3ra escala del VOLTIMETRO 45V
digitalWrite(12,LOW); //activa 2da escala del VOLTIMETRO 20V
digitalWrite(13,HIGH); //activa 1ra escala del VOLTIMETRO 10V
//___________________________________________________________
buton_v=digitalRead(7);
buton_a=digitalRead(6);
buton_r=digitalRead(5);
if(buton_v==0){
opcion='3';
}
if(buton_a==0){
opcion='6';
}
if(buton_r==0){
opcion='9';
}
//___________________________________________________________
//___________________________________________________________
r1=1000;
r2=1000;
for(int i=1;i<=1000;i++)
{
entrada=analogRead(0);
vout=(entrada*v2)/1024;
Vint=(vout/r2)*(r1+r2);
error=Vint*0.008;
Vint=error+Vint;
aux=aux+Vint;
}
Vint=aux/1000;
aux=0;
if(Vint>0.20)
{
Serial.print(Vint);
Serial.println(" V");
delay(500);
}
else
{
Serial.println("0.00 V");
}
}
//--------------------2da escala 20 voltios ---------------------
if(escala=='2')
{
//____________________activando el relay_____________________
digitalWrite(3,HIGH); //activa GND para el amperimetro
digitalWrite(4,LOW); //activa GND para el voltimetro
digitalWrite(8,LOW); //activa 1ra escala del OHMETRO 2400 Ohm
digitalWrite(9,LOW); //activa 2da escala del OHMETRO 24K Ohm
digitalWrite(10,LOW); //activa 3ra escala del OHMETRO 2M Ohm
digitalWrite(11,LOW); //activa 3ra escala del VOLTIMETRO 45V
digitalWrite(12,HIGH); //activa 2da escala del VOLTIMETRO 20V
digitalWrite(13,LOW); //activa 1ra escala del VOLTIMETRO 10V
//___________________________________________________________
buton_v=digitalRead(7);
buton_a=digitalRead(6);
buton_r=digitalRead(5);
if(buton_v==0){
opcion='3';
}
if(buton_a==0){
opcion='6';
}
if(buton_r==0){
opcion='9';
}
//___________________________________________________________
//___________________________________________________________
r1=3300;
r2=1000;
for(int i=1;i<=1000;i++)
{
entrada=analogRead(0);
vout=(entrada*v2)/1024;
Vint=(vout/r2)*(r1+r2);
error=Vint*0.0263;
Vint=error+Vint;
aux=aux+Vint;
}
Vint=aux/1000;
aux=0;
if(Vint>0.20)
{
Serial.print(Vint);
Serial.println(" V");
delay(500);
}
else
{
Serial.println("0.00 V");
}
}
//--------------------3ra escala 45 voltios ---------------------
if(escala=='3')
{
//____________________activando el relay_____________________
digitalWrite(3,HIGH); //activa GND para el amperimetro
digitalWrite(4,LOW); //activa GND para el voltimetro
digitalWrite(8,LOW); //activa 1ra escala del OHMETRO 2400 Ohm
digitalWrite(9,LOW); //activa 2da escala del OHMETRO 24K Ohm
digitalWrite(10,LOW); //activa 3ra escala del OHMETRO 2M Ohm
digitalWrite(11,HIGH); //activa 3ra escala del VOLTIMETRO 45V
digitalWrite(12,LOW); //activa 2da escala del VOLTIMETRO 20V
digitalWrite(13,LOW); //activa 1ra escala del VOLTIMETRO 10V
//___________________________________________________________
buton_a=digitalRead(6);
buton_r=digitalRead(5);
if(buton_a==0){
opcion='6';
}
if(buton_r==0){
opcion='9';
}
//___________________________________________________________
//___________________________________________________________
r1=8200;
r2=1000;
for(int i=1;i<=1000;i++)
{
entrada=analogRead(0);
vout=(entrada*v2)/1024;
Vint=(vout/r2)*(r1+r2);
error=Vint*0.001;
Vint=error+Vint;
aux=aux+Vint;
}
Vint=aux/1000;
aux=0;
if(Vint>0.20)
{
Serial.print(Vint);
Serial.println(" V");
delay(500);
}
else
{
Serial.println("0.00 V");
}

}
}
}
//****** FIN VOLTIMETRO ******** FIN VOLTIMETRO ******* FIN VOLTIMETRO
********* FIN VOLTIMETRO **************

//************ AMPERIMETRO ****** AMPERIMETRO ******* AMPERIMETRO


******* AMPERIMETRO ***** AMPERIMETRO ******
if(opcion=='4' || opcion=='5' || opcion=='6')
{
while(opcion=='4' || opcion=='5' || opcion=='6')
{
if(Serial.available()>0)
{
opcion = Serial.read();
}
escala=opcion;
//--------------------1ra escala 500 m Amp ---------------------
if(escala=='4')
{
//____________________activando el relay_____________________
digitalWrite(3,LOW); //activa GND para el amperimetro
digitalWrite(4,HIGH); //activa GND para el voltimetro
digitalWrite(8,LOW); //activa 1ra escala del OHMETRO 2400 Ohm
digitalWrite(9,LOW); //activa 2da escala del OHMETRO 24K Ohm
digitalWrite(10,LOW); //activa 3ra escala del OHMETRO 2M Ohm
digitalWrite(11,LOW); //activa 3ra escala del VOLTIMETRO 45V
digitalWrite(12,LOW); //activa 2da escala del VOLTIMETRO 20V
digitalWrite(13,HIGH); //activa 1ra escala del VOLTIMETRO 10V
//___________________________________________________________
buton_v=digitalRead(7);
buton_a=digitalRead(6);
buton_r=digitalRead(5);
if(buton_v==0){
opcion='3';
}
if(buton_a==0){
opcion='6';
}
if(buton_r==0){
opcion='9';
}
//___________________________________________________________
//___________________________________________________________
r1=0.408;
for(int i=1;i<=4100;i++)
{
entrada=analogRead(5);
vout=(entrada*v2)/1024;
in=(vout/r1);
aux=aux+in;
}
in=(aux/4100);
if(in*1000<26)
{
Serial.println("0.00");
delay(500);
}
else
{
if(in*1000<501)
{
Serial.print(in*1000);
Serial.println(" mA");
delay(500);
}
if(in*1000>500 && in*1000<1001)
{
opcion='5';
}
if(in*1000>1000)
{
opcion='6';
}
}
in=0;
aux=0;
error=0;
}
//--------------------2da escala 1000m Amp ---------------------
if(escala=='5')
{
//____________________activando el relay_____________________
digitalWrite(3,LOW); //activa GND para el amperimetro
digitalWrite(4,HIGH); //activa GND para el voltimetro
digitalWrite(8,LOW); //activa 1ra escala del OHMETRO 2400 Ohm
digitalWrite(9,LOW); //activa 2da escala del OHMETRO 24K Ohm
digitalWrite(10,LOW); //activa 3ra escala del OHMETRO 2M Ohm
digitalWrite(11,LOW); //activa 3ra escala del VOLTIMETRO 45V
digitalWrite(12,HIGH); //activa 2da escala del VOLTIMETRO 20V
digitalWrite(13,LOW); //activa 1ra escala del VOLTIMETRO 10V
//___________________________________________________________
buton_v=digitalRead(7);
buton_a=digitalRead(6);
buton_r=digitalRead(5);
if(buton_v==0){
opcion='3';
}
if(buton_a==0){
opcion='6';
}
if(buton_r==0){
opcion='9';
}
//___________________________________________________________
//___________________________________________________________
r1=0.405;
for(int i=1;i<=4100;i++)
{
entrada=analogRead(5);
vout=(entrada*v2)/1024;
in=(vout/r1);
aux=aux+in;
}
in=aux/4100;
if(in*1000<501)
{
opcion='4';
}
else
{
if(in*1000<1001)
{
Serial.print(in*1000);
Serial.println(" mA");
delay(500);
}
else
{
opcion='6';
}
}
in=0;
aux=0;
error=0;
}
//--------------------3ra escala 1 Amp ---------------------
if(escala=='6')
{
//____________________activando el relay_____________________
digitalWrite(3,LOW); //activa GND para el amperimetro
digitalWrite(4,HIGH); //activa GND para el voltimetro
digitalWrite(8,LOW); //activa 1ra escala del OHMETRO 2400 Ohm
digitalWrite(9,LOW); //activa 2da escala del OHMETRO 24K Ohm
digitalWrite(10,LOW); //activa 3ra escala del OHMETRO 2M Ohm
digitalWrite(11,HIGH); //activa 3ra escala del VOLTIMETRO 45V
digitalWrite(12,LOW); //activa 2da escala del VOLTIMETRO 20V
digitalWrite(13,LOW); //activa 1ra escala del VOLTIMETRO 10V
//___________________________________________________________
buton_v=digitalRead(7);
buton_r=digitalRead(5);
if(buton_v==0){
opcion='3';
}
if(buton_r==0){
opcion='9';
}
//___________________________________________________________
//___________________________________________________________
r1=0.405;
for(int i=1;i<=4100;i++)
{
entrada=analogRead(5);
vout=(entrada*v2)/1024;
in=(vout/r1);
aux=aux+in;
}
in=aux/4100;
if(in*1000<1001)
{
if(in<501)
{
opcion='4';
}
else
{
opcion='5';
}
}
else
{
if(in*1000<=3100)
{
Serial.print(in);
Serial.println(" A");
delay(500);
}
else
{
Serial.println("Max intensidad");
delay(500);
}
}
in=0;
aux=0;
error=0;
}
}
}
//****** FIN AMPERIMETRO ******** FIN AMPERIMETRO ******** FIN
AMPERIMETRO *********** FIN AMPERIMETRO ************ FIN AMPERIMETRO
*************************

//******* OHMETRO ******* OHMETRO *********** OHMETRO **********


OHMETRO *********** OHMETRO ********** OHMETRO ********* OHMETRO *********
OHMETRO *********
if(opcion=='7' || opcion=='8' || opcion=='9')
{
float entrada,vout,Vint,error,leer_para_res;
while(opcion=='7' || opcion=='8' || opcion=='9')
{
if(Serial.available()>0)
{
opcion = Serial.read();
}
escala=opcion;
//--------------------1ra escala 2400 ohm ---------------------
if(escala=='7')
{
//____________________activando el relay_____________________
digitalWrite(3,HIGH); //activa GND para el amperimetro
digitalWrite(4,HIGH); //activa GND para el voltimetro
digitalWrite(8,HIGH); //activa 1ra escala del OHMETRO 2400 Ohm
digitalWrite(9,LOW); //activa 2da escala del OHMETRO 24K Ohm
digitalWrite(10,LOW); //activa 3ra escala del OHMETRO 2M Ohm
digitalWrite(11,LOW); //activa 3ra escala del VOLTIMETRO 45V
digitalWrite(12,LOW); //activa 2da escala del VOLTIMETRO 20V
digitalWrite(13,LOW); //activa 1ra escala del VOLTIMETRO 10V
//___________________________________________________________
buton_v=digitalRead(7);
buton_a=digitalRead(6);
buton_r=digitalRead(5);
if(buton_v==0){
opcion='3';
}
if(buton_a==0){
opcion='6';
}
if(buton_r==0){
opcion='9';
}
//___________________________________________________________
//___________________________________________________________
float lectura;
float valor=0,aux=0;
float voltaje=0;
float error_res=0;
res_esc1=270;
for(int i=1;i<=3100;i++)
{
lectura=analogRead(1);
voltaje=lectura*(5.0000/1024.0000);
valor=(res_esc1/voltaje)*(5.00-voltaje);
error_res=valor*0.0148;
valor=valor-error_res;
aux=aux+valor;
}
valor=aux/3100;
// valor=valor-15;//15 es el error recibido por las interferencias
if(lectura>31) //lectura=102 por tanto voltaje=lectura*(Vint/1024) =>
voltaje=102*(5/1024)=0.498=>0.5
{//lectura>31 por razon de distorcion de señal`por los cables
if(valor<=2400)
{
Serial.print(valor);
Serial.println(" Ohm");
delay(500);
}
else
{
Serial.println("Subir escala");
delay(500);
}
}
else
{
Serial.println("0.00");
delay(500);
}
}
//--------------------2da escala 24K ohm ---------------------
if(escala=='8')
{
//____________________activando el relay_____________________
digitalWrite(3,HIGH); //activa GND para el amperimetro
digitalWrite(4,HIGH); //activa GND para el voltimetro
digitalWrite(8,LOW); //activa 1ra escala del OHMETRO 2400 Ohm
digitalWrite(9,HIGH); //activa 2da escala del OHMETRO 24K Ohm
digitalWrite(10,LOW); //activa 3ra escala del OHMETRO 2M Ohm
digitalWrite(11,LOW); //activa 3ra escala del VOLTIMETRO 45V
digitalWrite(12,LOW); //activa 2da escala del VOLTIMETRO 20V
digitalWrite(13,LOW); //activa 1ra escala del VOLTIMETRO 10V
//___________________________________________________________
buton_v=digitalRead(7);
buton_a=digitalRead(6);
buton_r=digitalRead(5);
if(buton_v==0){
opcion='3';
}
if(buton_a==0){
opcion='6';
}
if(buton_r==0){
opcion='9';
}
//___________________________________________________________
//___________________________________________________________
float lectura;
float valor,aux=0,aux_v=0;
float voltaje=0;
float error_res=0;
res_esc2=2700;
for(int i=1;i<=3100;i++){
lectura=analogRead(2);
voltaje=lectura*(5.0000/1024.0000);
valor=(res_esc2/voltaje)*(5.00-voltaje);
error_res=valor*0.0111;
valor=valor-error_res;
aux=aux+valor;
}
valor=aux/3100;
valor=valor-15;//15 es el error recibido por las interferencias
if(lectura>31) //lectura=102 por tanto voltaje=lectura*(Vint/1024) =>
voltaje=102*(5/1024)=0.498=>0.5
{//lectura>31 por razon de distorcion de señal`por los cables
if(valor<=24000)
{
Serial.print(valor/1000);
Serial.println(" KOhm");
delay(500);
}
else
{
Serial.println("Subir escala");
delay(500);
}
}
else
{
Serial.println("0.00");
delay(500);
}
}
//--------------------3ra escala 2M ohm ---------------------
if(escala=='9')
{
//____________________activando el relay_____________________
digitalWrite(3,HIGH); //activa GND para el amperimetro
digitalWrite(4,HIGH); //activa GND para el voltimetro
digitalWrite(8,LOW); //activa 1ra escala del OHMETRO 2400 Ohm
digitalWrite(9,LOW); //activa 2da escala del OHMETRO 24K Ohm
digitalWrite(10,HIGH); //activa 3ra escala del OHMETRO 2M Ohm
digitalWrite(11,LOW); //activa 3ra escala del VOLTIMETRO 45V
digitalWrite(12,LOW); //activa 2da escala del VOLTIMETRO 20V
digitalWrite(13,LOW); //activa 1ra escala del VOLTIMETRO 10V
//___________________________________________________________
buton_v=digitalRead(7);
buton_a=digitalRead(6);
if(buton_v==0){
opcion='3';
}
if(buton_a==0){
opcion='6';
}
//___________________________________________________________
//___________________________________________________________
float lectura;
float valor,aux=0;
float voltaje=0;
float error_res=0;
res_esc3=270000;
for(int i=1;i<=3100;i++){
lectura=analogRead(3);
voltaje=lectura*(5.0000/1024.0000);
valor=(res_esc3/voltaje)*(5.00-voltaje);
error_res=valor*0.0037;
valor=valor-error_res;
aux=aux+valor;
}
valor=aux/3100;
valor=valor-1465;//1465 es el error recibido por las interferencias
if(lectura>31) //lectura=102 por tanto voltaje=lectura*(Vint/1024) =>
voltaje=102*(5/1024)=0.498=>0.5
{//lectura>31 por razon de distorcion de señal`por los cables
if(valor<=2000000)
{
if(valor>=1000000)
{
Serial.print(valor/1000000);
Serial.println(" MOhm");
delay(500);
}
else
{
Serial.print(valor/1000);
Serial.println(" KOhm");
delay(500);
}

}
else
{
Serial.println("valor excedido");
delay(500);
}
}
else
{
Serial.println("0.00");
delay(500);
}
}
}
}
//***** FIN OHMETRO ******** FIN OHMETRO ******* FIN OHMETRO ********
FIN OHMETRO ********* FIN OHMETRO ********* FIN OHMETRO *******
}
//**** FIN ETAPAS ***** FIN ETAPAS ***** FIN ETAPAS ***** FIN ETAPAS ***** FIN
ETAPAS ***** FIN ETAPAS ***** FIN ETAPAS ***** FIN ETAPAS *****
}
while(opcion=='f')
{
buton_v=digitalRead(7);
buton_a=digitalRead(6);
buton_r=digitalRead(5);
delay(10);
if(buton_v==0 || buton_a==0 || buton_r==0){
opcion='i';
delay(10);
}
if(Serial.available()>0)
{
opcion = Serial.read();
}
Serial.println("Salio..");
delay(500);
}
}

También podría gustarte