Hola a todos, bueno os comento que es lo que me pasa haber si alguién tiene el mismo problema, tengo varios sensores conectados a 3 puertos analogicos, concretamente A0,A1 y A6.
cuando realizo las lecturas, me da valores incorrrectos, ¿que creis que pasa?, os pongo el código para que lo miréis.
int i = 0;
int vcc = 0;
int vout = 0;
int tempepcb = 0;
void setup() {
/CONFIGURACION DE LOS PPUERTOS ANAOGICOS/
analogReference(DEFAULT);
pinMode (A0, INPUT);
pinMode (A1, INPUT);
pinMode (A6, INPUT);
}
void loop() {
delay(900);
medidas();
Serial.print(vcc); Serial.print("\t");
Serial.print(vout); Serial.print("\t");
Serial.println(tempepcb);
delay(90);
}
void medidas() {
switch (i) {
case 1:
vcc = analogRead(A0);
i++;
delay(10);
break;
case 2:
vout = analogRead(A1);
i = 0;
delay(10);
break;
default:
tempepcb = analogRead(A6);
delay(10);
i++;
}
}
muchas gracisa
pinMode (A0, INPUT);
pinMode (A1, INPUT);
pinMode (A6, INPUT);
define esos pines como entradas digitales
no lo tienes que poner para usar como entradas analógicas
ya lo hice, pero los errores siguen igual, es decir:
a1=1023
a0=870
a6=400
cuando los valores de a0 y a6 deben de ser mucho menores, es decir a6 lee la temperatura de un lm355, no debe superar los 400mv eso sería 100 en dec.
Primero no estas leyendo temperatura sino un valor analogico digital que en el caso de tu arduino va entre 0 y 1023.
Entocnes esas lecturas estan bien. Te falta trabajo, eso quiere decir, que las conviertas en lo que esperas leer.
El lm355 no lee 400mV sino 400 entre 0 y 1023. 400 cuentas.
1023 es 5V
400 es x
x = 5 * 400/1023= 1.955.
EDITADO: El lm335 entrega 10mV/°K asi que luego te digo como convertirlo.
La ecuación que puse en el codigo es para el LM35.
Aca esta
tempK = analogRead(EL que corresponda) * 0.004882812 * 100; //Se lee la temperatura en Kelvin
tempC = tempK - 273.15;
El sensor A1 esta leyendo 5V no se que es al igual que el A0 que 870 que con la misma conversión es
5*870/1023=4.25V
Te modifico el código
int i = 0;
float vcc, vout, tempepcb;
void setup() {
/*CONFIGURACION DE LOS PPUERTOS ANAOGICOS*/
analogReference(DEFAULT); // no hace falta ponerlo
Serial.begin(9600); // esto no se porque faltaba pero es indispensable
}
void loop() {
delay(1000);
medidas();
Serial.print(vcc); Serial.print("\t");
Serial.print(vout); Serial.print("\t");
Serial.println(tempepcb);
}
void medidas() {
vcc = 5*analogRead(A0)/1023;
vout = 5*analogRead(A1)/1023;
tempepcb = analogRead(0) * 0.4882812 -273.15; //Se lee la temperatura en celcius
}
Hola a todos,
la verdad que el fallo es bastante tonto, bueno cosas que te lían y culpas al código. La patilla AVcc no estaba haciendo contacto bien con la tensión.
En la conversión del LM35 creo que es algo así:
analogRead(A)5.00100/1023;
de hecho 5.00*100/1023=0.48876, ésta temperatura es en ºC.
Las otras medidas es para leer la temperatura de una PT100, a0 lee la tensión de alimentación y a1 lee en el divisor de tesión, para seguir la función que s emuestra en:
http://openenergymonitor.org/emon/buildingblocks/rtd-temperature-sensing
de ahí saco la resistencia que después convierto en temperatura.
Muchas gracias por vuestras pronta respuestas.
cuando los valores de a0 y a6 deben de ser mucho menores, es decir a6 lee la temperatura de un lm355, no debe superar los 400mv eso sería 100 en dec.
Pusiste LM355 no LM35 y yo no se porque busqué LM335. Veo que ni uno ni otro.