MLX90614 IR Temperatur sensor I2C

  • Hallo Zusammen,


    ich habe an meinen PI einen GY-906 welcher einen Melexis MLX 90616 Temperatur Sensor hat angeschlossen. Das Auslesen des Sensors funktioniert mittlerweile wunderbar. Nun möchte ich, da ich mehrere Sensoren benötige die Adresse des Sensors von 0x5a ändern. Leider habe ich keinen Erfolg. Ich habe schon zahlreiche Foren durchwühlt und Samples ausprobiert ... leider klappt nicht ....


    bin dankbar für jeden Denkansatz !


    Gruß


    Klaus


    anbei mein Python Code :


    [font="Menlo"]#!/usr/bin/env python3[/font]
    [font="Menlo"]# ACHTUNG :[/font]
    [font="Menlo"]#[/font]
    [font="Menlo"]# sudo su -c 'echo "Y" > /sys/module/i2c_bcm2708/parameters/combined'[/font]
    [font="Menlo"]#[/font]
    [font="Menlo"]# muss ausgeführt werden, sonnst liefert derSensor keine Daten[/font]
    [font="Menlo"]#[/font]


    [font="Menlo"]import time[/font]
    [font="Menlo"]from Adafruit_I2C import Adafruit_I2C[/font]



    [font="Menlo"]Sensor = Adafruit_I2C(0x5A , 1, False)[/font]


    [font="Menlo"]temp = Sensor.readS16(0x06) * .02 - 273.15[/font]
    [font="Menlo"]print (" Ambient : ")[/font]
    [font="Menlo"]print ( round(temp, 3) )[/font]


    [font="Menlo"]temp = Sensor.readS16(0x07) * .02 - 273.15[/font]
    [font="Menlo"]print (" Object : ")[/font]
    [font="Menlo"]print ( round(temp, 3) )[/font]


    [font="Menlo"]# Versuch Addresse zu Ändern ....[/font]


    [font="Menlo"]Sensor.writeRaw8(0x2E)[/font]
    [font="Menlo"]Sensor.writeRaw8(0x00)[/font]
    [font="Menlo"]Sensor.writeRaw8(0x00)[/font]
    [font="Menlo"]Sensor.writeRaw8(0x2F)[/font]

  • > bin dankbar für jeden Denkansatz !
    Ganz einfach: das Datenblatt lesen.


    Die Adresse wird in einem EEPROM gespeichert und kann geschrieben werden.


  • > bin dankbar für jeden Denkansatz !
    Ganz einfach: das Datenblatt lesen.


    Die Adresse wird in einem EEPROM gespeichert und kann geschrieben werden.


    Das ist nicht wirklich hilfreich, denn das Datenblatt habe ich natürlich angeschaut... Hast hast du es geschafft, die Adresse zu ändern ? Wenn Ja, dann wäre ich Dir Dankbar, wenn du mir einen Hinweis geben könntest ...


    Danke !


    Gruß


    Klaus

  • > Hast hast du es geschafft, die Adresse zu ändern ?
    Nein, das habe ich nicht, weil ich keinen solchen Sensor habe.


    Aber ich habe das Datenblatt gelesen, weil ich wissen wollte was das fuer ein Sensor ist und wie man die Adresse einstellen koennte.


    Ich finde es recht ausfuehrlich und glaube es muesste zu machen sein.


    Was passiert bei Schreiben auf die angegebene Adresse ? (Die Checksumme muss natuerlich stimmen, sonst uebernimmt der Chip die Daten wohl nicht)

  • Jetzt hat es geklappt !!!!


    jedoch bin ich etwas verwirrt, da ich das crc8 byte noch anfügen musste ...
    ich dachte der bus.pec= true schreibt das crc8 byte ...laut Beschreibung, die ich gefunden habe:


    Packet Error Checking (PEC)
    ===========================
    Packet Error Checking was introduced in Revision 1.1 of the specification.


    PEC adds a CRC-8 error-checking byte to transfers using it, immediately
    before the terminating STOP.



    Neuer Code:


    print("Adr: 0x%02X" %bus.read_word_data(0x00, 0x2E))
    bus.pec = True
    data = [0x00, 0x00, 0x6F]
    bus.write_i2c_block_data(0x00, 0x2E, data)
    time.sleep(0.005)


    data = [0x5A, 0x00, 0xE1]
    bus.write_i2c_block_data(0x00, 0x2E, data)
    time.sleep(0.005)
    print("Adr: 0x%02X" %bus.read_word_data(0x00, 0x2E))
    bus.pec = False