Buenas noches.
He comprado este sensor para poder tomar medidas de temperatura.
El problema es que me retorna un error el cual siempre me devuelve 1037.55 como temperatura del objeto.
He leido por ahi que es un error.
Lo tengo conectado a un arduino nano al cual tambien tengo conectado un emisor bluetooth.
¿A que se debe que siempre obtenga el mismo valor?
El codigo es bien simple.
#include <Wire.h>
#include <Adafruit_MLX90614.h>
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
char val = 'F';
int ciclo = 300;
char inicio = 'F';
void setup() {
Serial.begin(9600);
mlx.begin();
}
void loop() {
if( Serial.available() ) {
val = Serial.read();
if (val == 'S'){
for ( int i = 0;i <= ciclo; i++){
Serial.println(i);
while(val != 'N'){
val = Serial.read();
delay(100);
}
val='S';
}
}
val ='F';
Serial.println('F');
delay (100);
}
}
Y me da la sensacion que el problema no viene de el.
Hola @zepjau con este 5 post en casi 5 hilos y ninguno terminado. Vienes tiras una pregunta y no editas porque nunca has leído las normas ni respondes. Bueno, no voy a responder a esta consulta hasta que prestes atención y des razones de tus consultas inconclusas. Si alguien quiere responder. es libre.
Lo primero, mis disculpas.
No es mi intencion saltarme las normas.
Si sigo haciendo algo incorrecto, ahora mismo no sé en que me he equivocado salvo el codigo.
Si, gracias.
Estas pruebas ya las he realizado y he probado todo tipo de opciones (que he visto) incluso leyendo algo por ahi he alimentado el circuito con un powerbank para ver si era ese el problema.
He probado tambien pasar un proceso de escaneo de I2c para ver si averiguaba la direccion y ha sido ahora que observo que no ve la placa o por lo menos eso me dice.
La placa que he probado es GY-906 y es esta la que me da problemas.
Hi,
Con esta placa tienes que tener mucho cuidado. Algunos vendedores dicen que es de 5 voltios y no es cierto. Las especificacciones del sensor dice que usa 3.3 voltios. El modulo que tu usas es de 3 voltios, Algunas viene con reguladores y puedes usarlos con 5 voltios. Si no tiene reguladores entonces solamente las puedes alimentar con 3.3 voltios sino se vas a danar el modulo. Algunas vienen con el addres de 76 o 77. Como ya corristes el programa que te dice el address entonces el problema puede ser los pines que estas usando para comunicarte. Recuerda que si usas el arduino tienes que tener los pines que suplan 3.3 voltios. Si usas uno que los pines son de 5 voltios necesitas usar un divisor usando resistencias. Por ultimo trata la libreria de #include <SparkFunMLX90614.h> . Esta es la que yo uso en mis modulos y no he tenido problemas. Pero primero tienes que determinar porque el programa que te da el address no trabaja.
Si, casi seguro que me lo he cargado.
Lo puse a 5 v ya que el vendedor asi lo indicaba 3.3 - 5 v.
Crei que tenia un regulador en la misma placa por eso actué asi.
Yo tengo el mismo problema y creo que es por la conexión en bus IIC con el sensor de temperatura, yo tengo conectado el sensor con una pantalla oled 128x64 y el error no me aparece hasta que comienzo a dibujar en la pantalla
Hi,
El sensor de IR que usas es un modulo o es el sensor solamente. Si es un modulo algunos vienen con las resistencias de 4.7K en el SDA y en el SCL ya instaldas.Los que no las tienen se las tienes que instalar externamente.
Si retiro la pantalla, imprime bien la temperatura,
tauro0221:
Hi,
El sensor de IR que usas es un modulo o es el sensor solamente. Si es un modulo algunos vienen con las resistencias de 4.7K en el SDA y en el SCL ya instaldas.Los que no las tienen se las tienes que instalar externamente.
Hi,
Que pasa si remueve el sensor y corre la pantalla sola. Otra cosa haz corrido la routina que busca los address de los modulos que estan conectados en el I2C. Correla para ver cual son los address de ambos.
La pantalla funciona bien con o sin el sensor, es decir, dibuja , ya use el script para verificar las direcciones y funciono bien (sensor 0x5A y pantalla 0x3C * 2 => 0x78 )
el código que uso es el siguiente:
reescribí la parte que hacia la librería de adafruit (sensor) para verificar
Hi,
Sugerencia porque en vez de usar la instrucion wire no usas para leer la temperatura del objeto en C result = mlx.readObjectTempC().
Si quires leer la temperatura ambiental en C entonces usas
result = mlx.readAmbientTempC().
A mi me ocurria lo mismo con el módulo GY-906 y parece que he dado con una solución:
Observé que si intercambiaba SDA y SCL (colocandolos al revés) y luego volvía a conectarlos correctamente el dispositivo comenzaba a leer las temperaturas correctamente. Eso si, hasta que quitas la alimentación y ya deja de funcionar. La solución automatizada que he tomado ha sido poner en LOW los pines A4 y A5 (SDA y SCL respectivamente) y meter un delay de 100 ms despues.
Si alguien sabe la explicación a esto, estaría bien. Dejo el sketch:
#include <Wire.h> #include <Adafruit_MLX90614.h>
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
void setup() {
Serial.begin(9600);
// añadido para que funciones el sensor de temperatura JLSM
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
digitalWrite(A4,LOW);
digitalWrite(A5,LOW);
delay(100);
///////////////////////////////////////////////////////JLSM
Hi,
Una pregunta si no me equivoco el modulo no tiene resistencia de pullup en la senales de SDAy SCK. Hay que anadirle las resistencia de 4k7 a ambas senales.La salida de las senales son lo que se conoce como "open collector" segund las especificaciones del fabricante.