Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Hola como va?
Necesito usar 2 sensores mlx90614 mediante i2c, el problema es que no se como cambiarle de direccion a uno de ellos.
Alguien sabe como hacerlo? Estoy usando un arduino nano. Gracias.
Fíjate si no hay una librería especifica para ese sensor. La secuencia de inicializacion (que podes ver como la armo el fabricante ya que esta en el datasheet) es algo retorcida por lo que sospecho que hacerla vía programa sin una librería adecuada es medio para volverse loco...Hola. No soy ingeniero electronico, ni tecnico electronico, soy solo un hobbista, me doy bastanate maña con la electronica, pero la verdad que no tanto como para comprender el datasheet de ese sensor, es por eso que estot haciendo esta consulta. Se que la direccion para el protocolo i2c se encuentra en la memoria eeprom interna del sensor, y para cambiar la direccion tengo que poder escribir en ese lugar de memoria cambiando el valor almacenado por defecto.
Todo lo que estube leyendo conduce a que tengo que usar la libreria wire.h de arduino, he usado wire.write() para tratara de modificarla pero no he podido. Esto lo comprobe utilizando i2c_scanner, la direccion del sensor nunca me cambio.
Alguien podria facilitarme el codigo para hacerlo?
Wire.beginTransmission(0x5A);
Wire.write(0x2E);
delay(10);
Wire.write(0x0000); ; <--- No se como lo tomara el compilador proque es un dato de 16 bits.
delay(10);
Wire.write(0x5B);
delay(10);
...
...
Etc
Falta un ultimo paso que es verificar la lectura, me llamo la atención que el fabricante lo indica explicitamente. Ya se que normalmente no es necesario verificar la lectura de una EEPROM, solo me llamo la atención que el fabricante indique ese ultimo paso (no se olviden de Murphi)...Leí muy por arriba las hojas de datos y falta, al menos, un paso. Primero hay que iniciar la comunicación apuntando a la dirección del dispositivo (este paso esta bien aunque, en teoría, esta mal la dirección porque la dirección por defecto es 0x5A si no leí mal), luego hay que enviarle el comando para indicarle que se quiere acceder a la EEPROM (este paso falta y se calcula así: 001X XXXX -donde X representa la dirección EEPROM que se quiere leer/escribir, en tu caso la que apunta a la dirección del dispositivo -0x0E- que vendría a juntarse como 0x2E) y ahí si, escribir 0x00 para borrar la EEPROM y decirle que grabe el nuevo dato.
Código:Wire.beginTransmission(0x5A); Wire.write(0x2E); delay(10); Wire.write(0x0000); ; <--- No se como lo tomara el compilador proque es un dato de 16 bits. delay(10); Wire.write(0x5B); delay(10); ... ... Etc
Falta un ultimo paso que es verificar la lectura, me llamo la atención que el fabricante lo indica explicitamente. Ya se que normalmente no es necesario verificar la lectura de una EEPROM, solo me llamo la atención que el fabricante indique ese ultimo paso (no se olviden de Murphi)...
A mi me hizo mucho ruido el paso 7
Quitar totalmente la alimentación para asegurarse que la próxima vez que se alimente haya cambiado dicha dirección.
Salu2.-
Quizá internamente no tiene un sistema de reseteo para tomar la nueva dirección. Igual las hojas de datos aclaran explícitamente que esos sensores no tienen detección de colisión por lo que hay que cambiarle la dirección fuera del circuito ya que no pueden haber dos o mas con una misma dirección lo que forzaría a removerles la alimentación, en caso de que haya mas de uno, una vez cambiada la dirección.