Guten Abend, ich bin gerade dabei einen "Termalscanner" zu bauen, der ein Wärmebild von einem Bereich erzeugt. Die Sensorsteuerung ist soweit fertig. Irgendwie komme ich mit dem Infrarotsensor aber nicht weiter. Ich hoffe, ihr könnt mir da weiter helfen. Es handelt sich um den MLX90614. Vielleicht hat jemand sogar schon mit dem Sensor gearbeitet. Zwar findet man jede menge Quellcode zu dem Sensor, aber ich kann nichts davon 1zu1 adaptieren, da meine Zielplattform kein Arduino ist. Nutzen kann ich diese library: https://github.com/ethersex/ethersex/blob/master/hardware/i2c/master/i2c_master.c https://github.com/ethersex/ethersex/blob/master/hardware/i2c/master/i2c_master.h https://github.com/ethersex/ethersex/blob/master/hardware/i2c/master/i2c_generic.c https://github.com/ethersex/ethersex/blob/master/hardware/i2c/master/i2c_generic.h
1 | #define ADDRESS 0x5A
|
2 | |
3 | int16_t i2c_MLX90614_read_temperature() |
4 | {
|
5 | int16_t data = 0; |
6 | uint8_t data_4lsb, data_4msb; |
7 | |
8 | // Start
|
9 | if (!i2c_master_select(ADDRESS, TW_WRITE)) { return 0x00; } |
10 | |
11 | // Wait // ? hier nötig?
|
12 | if (i2c_master_transmit_with_ack() != TW_MT_DATA_ACK) { return 0x00; } |
13 | |
14 | |
15 | // Write
|
16 | TWDR = 0x07; |
17 | if (i2c_master_transmit_with_ack() != TW_MR_DATA_ACK) { return 0x00; } |
18 | |
19 | |
20 | /* select the slave in read mode */
|
21 | TWDR = (chipaddress << 1) | TW_READ; |
22 | |
23 | // Rep Start
|
24 | if (i2c_master_start() != TW_REP_START) { return 0x00; } |
25 | if (i2c_master_transmit_with_ack() != TW_MR_DATA_ACK) { return 0x00; } |
26 | |
27 | data_4lsb = TWDR; // least significant bit |
28 | |
29 | if (i2c_master_transmit() != TW_MR_DATA_NACK) { return 0x00; } |
30 | |
31 | data_4msb = TWDR; // most significant bit |
32 | if (i2c_master_transmit() != TW_MR_DATA_NACK) { return 0x00; } |
33 | |
34 | data |= data_4msb; |
35 | data |= data << 8; |
36 | data |= data_4lsb; |
37 | |
38 | i2c_master_stop(); |
39 | return data; |
40 | }
|
PS: Ich würde mein Projekt auch hier vorstellen, wenn interesse besteht :)