|
stm8l discovery температурный сенсор, измерянное значение на заводе |
|
|
|
Jul 8 2012, 16:22
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656

|
Добрый вечер! Я хочю поиграться с температурным сенсоросм что встроен в stm8l discovery плату. В рефмануале написано что на заводе измеряно выходное напряжение с этого датчика с розрешением АЦП 12 бит и сохранено по адресу TS_Factory_CONV_V90 (один байт, а старшая часть =6). В даташите на контроллер нашел вот этот адрес TS_Factory_CONV_V90=0х4910. В самом отладчике посмотрел да и считывал тоже, но данные по этому адресу =0хFF. В рефмануале также написано что таким же способом измеряно и внутренне опрорное напряжение и тоже сохранено по адресу VREFINT_Factory_CONV=0х4911. У меня это значение тоже равняется 0хFF. У всех так? или я может чт-то с памятью перепутал. Мне что-то не верится чтоб эти велечины были одинаковые. значения с памяти считывал вот так: Код #define VREFINT (* (char *) 0x4911) u16 temp_=VREFINT;
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Jul 8 2012, 16:31
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656

|
Цитата наверно volatile char нужно. даже volatile int. Делал и так. Все равно 0хFFFF.
|
|
|
|
|
Jul 8 2012, 17:15
|
Местный
  
Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006

|
Вчитался, все же volaile char, сохранен только младший байт. т.е. читать правильней так: Код u16 temp_=0x600 | VREFINT; Для проверки стоит листинг посмореть, во что оно там компилится. В эррате по этому поводу ничего нет, так что должно работать. Жаль проверить не на чем, одни stm8s-ки.
|
|
|
|
|
Jul 8 2012, 18:07
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656

|
Код Вчитался, все же volaile char, сохранен только младший байт. т.е. читать правильней так На сколько я понял по этому адресу и есть только один байт. а старшая часть равняется 3. Тоесть мне нужно только один байт.
|
|
|
|
|
Jul 8 2012, 19:48
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656

|
Померял температуру датчиком. АЦП использовал 12 бит. Получил значение 0х2А1. Если перещитать в напряжене то это гдето 0,6 В. В рефмануале приводится формула по которой щитать : Т[C]=(VSENSE/AvgSlope)-273.15. и AvgSlope должно быть в V/°K но в даташите на контроллер дается число 1,62 в мВ/С. И тогда получается 600/1,62=370. всетаки наверное 1,62 это в мВ/К отнимаю 370-273=97 С  в принципе тоже многовато. Реально ли такое значение или я ошибся в формуле? всетаки написано что датчик меряет тампературу устройства. Интересно этот датчик как переферия контроллера или на плате установлен? Но всеже 100 градусов мне не верится.. ((
Сообщение отредактировал Kalyan - Jul 8 2012, 19:49
|
|
|
|
|
Jul 8 2012, 20:25
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656

|
Код Вообще в даташите сказано что там результат работы ADC, не надо ли его запустить сначала? Вы имеете ввиду сконфигурировать на измерение температурного канала, запустить преобразование и посмотреть в пямять? Все равно там FF остаются. Вы пробовали пользоваться этим датчиком? Сколько он вам показывает при комнатной-летней температуре? А то у меня получилось около 100 градусов!
|
|
|
|
|
Jul 8 2012, 20:49
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656

|
Код ADC_GetConversionValue дает 677. Для нынешней комнатной температуры - вполне может быть. (677*3,6)/4096=0,6 (600/1,62)-273.15=97 С ???
|
|
|
|
|
Jul 9 2012, 09:43
|

Частый гость
 
Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109

|
Насколько я понял имеется один байт со значением TS_Factory_CONV_V90, предпологается, что старшая часть равна 0x03. Данное значение получено при напряжении питания 3-+10мВ (опорном) и температуре 90-+5 градусов Цельсия. У STM8L151K6 данное значение расположено по адресу 0x004911, в моем мк это значение равно 0x43. Следовательн имеем 0x0343=835, что при указанном опорном около 0,611 В. Если я правильно понял, то далее нам нужно получить второю точку, для этого необходимо получить значение при температуре 25 градусов Цельсия. У меня получилось 0x26C=620, т.е. 0,498В (опорное у меня 3,29В). Используя эти две точки, можно получить наклон и смещение характеристики, что должно повысить точность преобразования.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|