реклама на сайте
подробности

 
 
> Проблема с чтением температуры из LSM303AGR, Странные значения температуры
jur
сообщение Apr 24 2018, 06:41
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



Приветствую!

Случилось мне познакомиться с датчиком LSM303AGR. Для экспериментов мы купили платку STEVAL-MKI172V1, очень удобно.

Присоединил к микроконтроллеру, соединил все это с PC и начал ковыряться. Надо сказать, документация на это дело совершенно безобразная... Что дока на микросхему, что Application Note.

В конце концов я это дело запустил, акселерометр с магнетометром прочитал, читаю температуру. А вот тут начинаются странности. Вот что написано в даташите на микросхему:

4.5 Temperature sensor
The LSM303AGR is supplied with an internal temperature sensor. Temperature data
can be enabled by setting the TEMP_EN[1:0] bits to ‘1’ in the TEMP_CFG_REG_A (1Fh)
register.

To retrieve the temperature sensor data the BDU bit in CTRL_REG4_A (23h)
must be set to ‘1’. Both the OUT_TEMP_L_A (0Ch), OUT_TEMP_H_A (0Dh)
registers must be read.

Temperature data is stored inside OUT_TEMP_H as two’s complement data in 8-bit format
left-justified.

Далее в таблице Table 4. Temperature sensor characteristics написано, что формат данных 1 digit/°C. Запускаю считывание тепмературы. Вручную, нажимая кнопку в моем тестовом приложении. Смотрю на считанные данные. И вот что я вижу (адрес регистра 0x8C - это OUT_TEMP_L_A но с добавленным старшим битом автоинкремента, чтобы можно было прочитать два байта подряд):

Код
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 00 FF
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 00 FF
--- Тут я прикоснулся пальцем к микросхеме
I2C Read:  dev_address 0x19, reg_address 0x8C, data: C0 01
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 00 03
I2C Read:  dev_address 0x19, reg_address 0x8C, data: C0 03
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 00 04
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 80 04
I2C Read:  dev_address 0x19, reg_address 0x8C, data: C0 04
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 00 05
--- Тут я палец убрал, микросхема начала остывать
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 00 04
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 00 03
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 80 02
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 40 02
I2C Read:  dev_address 0x19, reg_address 0x8C, data: C0 01
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 80 01
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 00 01
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 80 00
I2C Read:  dev_address 0x19, reg_address 0x8C, data: 80 00
I2C Read:  dev_address 0x19, reg_address 0x8C, data: C0 FF
I2C Read:  dev_address 0x19, reg_address 0x8C, data: C0 FF

Вот что странно. Почему-то младший байт тоже заметно и согласованно меняется. А ведь в документации английским по белому написано: "Temperature data is stored inside OUT_TEMP_H". Так как же понимать полученные результаты? И почему, елки палки, температура держится в районе 0 градусов?! Поверьте, я работаю в помещении, температура примерно 22-23 градуса, а никак не нулевая или -1!

Друзья, помогите разобраться, пожалуйста!

Спасибо!


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 15:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01355 секунд с 7
ELECTRONIX ©2004-2016