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

 
 
> stm8l discovery температурный сенсор, измерянное значение на заводе
Kalyan
сообщение Jul 8 2012, 16:22
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 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;
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
Artem_Petrik
сообщение Jul 8 2012, 16:27
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006



наверно volatile char нужно. даже volatile int.
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Jul 8 2012, 16:31
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Цитата
наверно volatile char нужно. даже volatile int.


Делал и так. Все равно 0хFFFF.
Go to the top of the page
 
+Quote Post
Artem_Petrik
сообщение Jul 8 2012, 17:15
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006



Вчитался, все же volaile char, сохранен только младший байт. т.е. читать правильней так:
Код
u16 temp_=0x600 | VREFINT;

Для проверки стоит листинг посмореть, во что оно там компилится.
В эррате по этому поводу ничего нет, так что должно работать. Жаль проверить не на чем, одни stm8s-ки.
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Jul 8 2012, 18:07
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Код
Вчитался, все же volaile char, сохранен только младший байт. т.е. читать правильней так

На сколько я понял по этому адресу и есть только один байт. а старшая часть равняется 3. Тоесть мне нужно только один байт.
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Jul 8 2012, 19:48
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 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. wacko.gif
всетаки наверное 1,62 это в мВ/К
отнимаю 370-273=97 С wacko.gif в принципе тоже многовато.

Реально ли такое значение или я ошибся в формуле? всетаки написано что датчик меряет тампературу устройства. Интересно этот датчик как переферия контроллера или на плате установлен? Но всеже 100 градусов мне не верится.. ((

Сообщение отредактировал Kalyan - Jul 8 2012, 19:49
Go to the top of the page
 
+Quote Post
Dejmos
сообщение Jul 8 2012, 20:09
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 4-11-11
Из: Смоленск
Пользователь №: 68 137



Сейчас посмотрел на своей 8L - да, там в памяти одни FF'ы.
Вообще в даташите сказано что там результат работы ADC, не надо ли его запустить сначала?


--------------------
* работаю так, что лошади оборачиваются *
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Jul 8 2012, 20:25
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Код
Вообще в даташите сказано что там результат работы ADC, не надо ли его запустить сначала?

Вы имеете ввиду сконфигурировать на измерение температурного канала, запустить преобразование и посмотреть в пямять?
Все равно там FF остаются.
Вы пробовали пользоваться этим датчиком? Сколько он вам показывает при комнатной-летней температуре? А то у меня получилось около 100 градусов! sad.gif
Go to the top of the page
 
+Quote Post
Dejmos
сообщение Jul 8 2012, 20:41
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 4-11-11
Из: Смоленск
Пользователь №: 68 137



Не пробовал, только сейчас заинтересовался. Переписал функцию измерения VRef из примера IAR для STM8L (Просто заменил каналы VRef на TempSensor), ADC_GetConversionValue дает 677. Для нынешней комнатной температуры - вполне может быть. (если формула не та или не так поняли. Проще будет с двумя значениями температуры измерить и посмотреть, но мне сейчас греть и охлаждать лень как-то).
А даташит сейчас посмотрел, на 0х4910 - это же вроде Factory conversion registers, т.е. не результат, а просто калибровочные данные?

Сообщение отредактировал Dejmos - Jul 8 2012, 20:44


--------------------
* работаю так, что лошади оборачиваются *
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Jul 8 2012, 20:49
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Код
ADC_GetConversionValue дает 677. Для нынешней комнатной температуры - вполне может быть.


(677*3,6)/4096=0,6

(600/1,62)-273.15=97 С ???
Go to the top of the page
 
+Quote Post
Dejmos
сообщение Jul 8 2012, 20:56
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 4-11-11
Из: Смоленск
Пользователь №: 68 137



Мдя, туплю уже.
Ну что пока можно сказать - видимо на заводе эти камни никто не измерял, соответственно придется мерять самим по паре известных температур.


--------------------
* работаю так, что лошади оборачиваются *
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Jul 8 2012, 21:14
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Я эксперементировал с временем выборки. В даташите сказано что она должнеа быть 10 мкс. Я это считал так. Тактовая частота контроллера 16 МГц. 1/16=0.0625
10/0.0625=160. Тоесть это если делитель для АЦП не трогать то надо установить время выборки 160 тактов. Но здесь и получаются вот такие запредельные температуры.
Я поставил 16 циклов и температура вышла около 40 градусов, что в принципе более на правду похоже.

Как точно пощитать сколько надо циклов задать в настройках чтоб получить время выборки 10 мкс?
Go to the top of the page
 
+Quote Post
ZiB
сообщение Jul 9 2012, 09:43
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 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В).
Используя эти две точки, можно получить наклон и смещение характеристики, что должно повысить точность преобразования.
Go to the top of the page
 
+Quote Post
Dejmos
сообщение Jul 10 2012, 05:38
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 4-11-11
Из: Смоленск
Пользователь №: 68 137



Тогда получается что 677 - вполне адекватное значение. Оно в итоге у меня и получалось при любом времени выборки.
Но, так как на 8LDiscovery по адресу 0x4911 находятся FF'ы (интересно почему), для расчета температуры придется измерять 2 точки.


--------------------
* работаю так, что лошади оборачиваются *
Go to the top of the page
 
+Quote Post
ZiB
сообщение Jul 10 2012, 05:57
Сообщение #15


Частый гость
**

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



Возможно вы неправильно "читате" ?
Используйте утилиту для отладки STMStudio (http://www.st.com/internet/evalboard/product/251373.jsp).
Только не используйте её для мониторинга ОЗУ и Флеш-памяти ОДНОВРЕМЕННО! Дает сбой, я не уверен, что разработчики знают об ошибке.
Go to the top of the page
 
+Quote Post

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

 


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


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