Offline
Newbie
Karma: 0
Posts: 8
|
 |
« on: December 07, 2012, 10:20:18 am » |
Tengo 2 resistencias NTC y LDR y estos codigos: int valorldr = 5; int pinldr = 5;
void setup(){ Serial.begin(9600); int valorldr = analogRead(pinldr); int lluminositatV = (valorldr * 5 / 1023); }
void loop(){ int valorldr = analogRead(pinldr); Serial.println("Luz:"); Serial.println( valorldr );
int luminosidadV = (valorldr * 5 / 1023); Serial.println("Luminosidad en voltioss del divisor de tension. "); Serial.println(luminosidadV); delay(2000);
} int sensorTemp = 5; int Temperatura = analogRead(sensorTemp); int TemperaturaV = (Temperatura * (5 / 1023));
void setup() { Serial.begin(9600); int sensorTemp = 5; int Temperatura = analogRead(sensorTemp); int TemperaturaV = (Temperatura * (5 / 1023)); }
void loop(){ Temperatura = analogRead(sensorTemp); Serial.println("Temperatura leida [ de 0 a 1023] "); Serial.println(Temperatura); TemperaturaV = Temperatura * 5 / 1023 ; Serial.println("Temperatura en voltios del divisor de tension. "); Serial.println(TemperaturaV); delay(2000);
} En la LDR si le acerco el flash del movil Luz baja a 850 mas o menos. La NTC no consigo que se mueva. No se si el codigo esta bien.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #1 on: December 07, 2012, 10:37:28 am » |
Otra pregunta, he seguido esta guia ( http://www.hacktronics.com/Tutorials/arduino-character-lcd-tutorial.html) y todo me funciona bien. Si el pin 13 siempre envia 5 V (HIGH) a la LCD puedo conectar la LCD a 5V del arduino directamente? Necesito una resistencia?
|
|
|
|
« Last Edit: December 07, 2012, 10:50:41 am by DaviidPR »
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 29
|
 |
« Reply #2 on: December 07, 2012, 02:51:29 pm » |
Hola DaviidPR yo tambien soy bastante nuevo en esto la verdad, pero creo que la forma de escribir el codigo no es la correcta (espero que no te moleste), podrias mirar los ejemplos que vienen en el IDE, de los ejemplos analogicos. Te he escrito como lo haría yo el programa pero no se si es lo que quieres, con lo que te he puesto te dara el valor del NTC y del LDR, pero no se cual es la conversion q tienes que usar, he utilizado la que tu has puesto en tu código (el valor obtenido x 5 y todo / 1023). Espero haberte ayudado aunque sea solo un poco, yo no he probado el codigo, pruebalo. Si no te sirve todo, espero que te servira parte. Un saludo a todos. Fermg int ntc=A0; // declaras el ntd int ldr=A1; int valor_ntc=0; // variable para guardar el dato del NTC int valor_ldr=0; // variable para guardar el dato del LDR
void setup() { Serial.begin(9600); // abrimos la comunicación Serial pinMode(ntc,INPUT); // esto realmente no hace falta pero yo siempre lo pongo pinMode(ldr,INPUT); // no hace falta por ser un aentrada analógica. }
void loop() { valor_ntc= analogRead(ntc); // guardamos el valor del NTC en una variable Serial.write("Temperatura: "); // escribimos por serial Serial.write((valor_ntc*5)/1023); // calculamos el valor del NTC valor_ldr = analogRead(ldr); // Guardamos el valor del LDR Serial.write("Luz :"); Serial.write((valor_ldr*5)/1023); delay(1000); // esperamos para no saturar el serial }
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #3 on: December 07, 2012, 04:54:55 pm » |
Gracias, yo diria que ahora funciona, he acomodado los pins a como yo los tengo conectados en lugar de Serial.write he puesto Serieal.println para que me escriba cada cosa en una linea distinta y quedó asi: int ntc = 5; // declaras el ntd int ldr = 0; int valor_ntc=0; // variable para guardar el dato del NTC int valor_ldr=0; // variable para guardar el dato del LDR
void setup() { Serial.begin(9600); // abrimos la comunicación Serial pinMode(ntc,INPUT); pinMode(ldr,INPUT); }
void loop() { valor_ntc= analogRead(ntc); // guardamos el valor del NTC en una variable Serial.println("Temperatura: "); // escribimos por serial Serial.println((valor_ntc*5)/1023); // calculamos el valor del NTC valor_ldr = analogRead(ldr); // Guardamos el valor del LDR Serial.println("Luz :"); Serial.println((valor_ldr*5)/1023); delay(1000); // esperamos para no saturar el serial }
lo conecto todo y el serial monitor muestra esto: Temperatura: 4 (supongo que a temperatura ambiente) Luz : 0(con la luz actual)
Y Temperatura: 4 (supongo que a temperatura ambiente) Luz : 2(con el dedo encima de la resistencia)
La NTC me da 10kΩ en un vaso con hielo y 1800 Ω en agua caliente sabeis como convertir esos numeros a grados celsius y a porcentaje de luminosidad?
|
|
|
|
« Last Edit: December 07, 2012, 05:05:25 pm by DaviidPR »
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 29
|
 |
« Reply #4 on: December 07, 2012, 06:00:06 pm » |
Hola de nuevo,me alegro poderte haber ayudado, mi pregunta es para que quieres cambiar la luz me refiero a multiplicar por 5 y todo eso? es que no para q te vale, lee el valor del LDR y ya esta no? quiero decir de 0-1023 y listo, y pruebas dandole con una luz directa q valor te da y luego tapandolo el otro valor y con eso juegas para poder hacer lo q quieras.
un saludo
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #5 on: December 07, 2012, 07:03:12 pm » |
He leido en un trabajo que : A continuación vemos otra variable(luminosidadV = luminosidad * 5 / 1023), que esta viene precedida por un cálculo. Cómo hemos visto anteriormente en el punto 4.1.1., hemos hablado que el *Arduino tiene un funcionamiento de *cero a cinco voltios. Para medir estos voltios lee este voltaje y lo transforma en un número comprendido entre el 0 y 1023. Por lo tanto, como queremos leer el voltaje utilizamos la siguiente fórmula:
Voltaje= (lectura arduino*5)/1023
Así pues nos mostrará el voltaje y lo asignaremos a la variable *lluminositatV. Luego hace lo mismo para la resistencia NTC. Gracias por la ayuda 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 29
|
 |
« Reply #6 on: December 08, 2012, 03:32:46 am » |
Para que quieres leer el voltage? Es que la verdad no lo entiendo muy bien, con el dato que te da el analogRead (0-1023) ya puedes hacer lo que quieras o por lo menos eso creo yo, si comentas que es lo que quieres hacer te podríamos ayudar un poco mejor.
un saludo
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #7 on: December 08, 2012, 07:08:09 am » |
tengo esto  con la NTC y la LDR y el Vout conectado a 2 entradas analogicas lo que quiero conseguir es que arduino lea los valores los transforme en temperatura y porcentaje de luminosidad y los muestre por una pantalla LCD
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #8 on: December 08, 2012, 08:44:43 am » |
Por si a alguien le sirve: http://miqueridopinwino.blogspot.com.es/2012/07/como-utilizar-un-termistor-o-sensor-de.htmlEl codigo que da me a funcionado, pero en lugar de tener : (Ground) ---- (10k-Resister) -------|------- (Thermistor) ---- (+5v) | Analog Pin 0 Yo tenia la resistencia y el termistor cambiados y me leia 33ºC normal y -90ºC cuando le daba con la estufa, pensaba que daba igual el orden pero puesto como en el esquema los datos son mas realistas. Ahora solo necesito ver como pasar la luz a un porcentaje.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 29
|
 |
« Reply #9 on: December 08, 2012, 09:24:53 am » |
Hola para que te de la temperatura solo tienes que aplicar la for,ula que tenias puesta o eso es lo que pone en el ejemplo de Arduino Academy o Arduteka ahora mismo, es el valor de Vout = Vin/1023*la lectura de la entrada analógica, y el LDR no se como se hace, pero lo que quieres es sacarlo por el LCD no? pues solo tienes que poner lcd.print() y listo , y si lo quieres poner en algún otro sitio que no sea en el comienzo de la pantalla lo único que tienes que hacer es ponet set.cursor(0,0) y listo. el 0,0 son el primer numero las filas 0-1 y el segundo las columnas. 0-15, bueno según que LCD tengas claro pensando que tienes un 16 x 2.
un saludo
Fermg
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 29
|
 |
« Reply #10 on: December 08, 2012, 09:31:18 am » |
hola de nuevo se me ocurre que para el porcentaje de luz porque no haces un mapeo del valor? me explico si sabes cual es el valor maximo que te da Ej 1023 y el minimo 125 por decir algo porque no mapeasel valor con la opcion map y ya esta no? si te da 1023 sera el 100% y si te da 125 sera el 0% y el resto te lo mapeara.
haber si te vale pero yo mucho más no te voy a poder ayudar porque mucho más no se, lo más seguro es que aprendamos los dos.
valor_ldr = map(valor_ldr, 125,1023, 0 ,100).
entonces lo que te saldra el porcentaje no?
espero servirte de ayuda y no volverte loco.
Fermg
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #11 on: December 08, 2012, 10:47:53 am » |
Me vale muchas gracias  Una ultima cosa , he seguido esta guia ( http://www.hacktronics.com/Tutorials/arduino-character-lcd-tutorial.html) y todo me funciona bien. Si el pin 13 siempre envia 5 V (HIGH) a la LCD puedo conectar la LCD a 5V del arduino directamente? Necesito una resistencia? esque tengo entendido que el pin 13 llevaba una resistencia integrada o algo parecido.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 29
|
 |
« Reply #12 on: December 08, 2012, 11:02:22 am » |
Aupa, yo lo tengo conectado directamente a los 5v cómo dices tú, y funciona bien, espero q pongas una foto para ver como queda ok?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 1
Posts: 72
|
 |
« Reply #13 on: December 10, 2012, 03:53:07 am » |
DaviidPR, lo que tienes esta bien para ver que funciona, pero para pasar esos valores a unidades estandar tienes que trabajar un poco aún el código.
La luz no puede medirse de 0 a 100%. 0% damos por hecho que es oscuridad total (Cosa que por otro caso es imposible), pero que valor seria 100%? una bombilla? un halógeno? la luz del sol?. Para eso tienes que buscar documentación sobre el LDR que estás usando y convertir los valores del sensor en unidades conocidas, lumenes, luxes, candelas, etc....
Y para la temperatura lo mismo, hay que pasarla a grados Kelvin, Fahrenheit, Celsius.... Pero en el caso de una NTC no es tan sencillo como escalar los valores ya que los valores recibidos no son lineares. Tienes que buscar documentación por el foro. Busca como "NTC arduino", ademas creo que en el Playground hay varios ejemplos. Si no te aclaras, pregunta.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 2
Posts: 21
|
 |
« Reply #14 on: December 13, 2012, 06:07:12 pm » |
|
|
|
|
|
Logged
|
Fácil, sencillo y para toda la familia.
|
|
|
|
|