Перейти к содержанию
    

stm8l discovery температурный сенсор

Добрый вечер! Я хочю поиграться с температурным сенсоросм что встроен в 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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

u16 temp_=0x600 | VREFINT;

Для проверки стоит листинг посмореть, во что оно там компилится.

В эррате по этому поводу ничего нет, так что должно работать. Жаль проверить не на чем, одни stm8s-ки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

На сколько я понял по этому адресу и есть только один байт. а старшая часть равняется 3. Тоесть мне нужно только один байт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Померял температуру датчиком. АЦП использовал 12 бит. Получил значение 0х2А1. Если перещитать в напряжене то это гдето 0,6 В. В рефмануале приводится формула по которой щитать : Т[C]=(VSENSE/AvgSlope)-273.15. и AvgSlope должно быть в V/°K но в даташите на контроллер дается число 1,62 в мВ/С. И тогда получается 600/1,62=370. :wacko:

всетаки наверное 1,62 это в мВ/К

отнимаю 370-273=97 С :wacko: в принципе тоже многовато.

 

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

Изменено пользователем Kalyan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас посмотрел на своей 8L - да, там в памяти одни FF'ы.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Вы имеете ввиду сконфигурировать на измерение температурного канала, запустить преобразование и посмотреть в пямять?

Все равно там FF остаются.

Вы пробовали пользоваться этим датчиком? Сколько он вам показывает при комнатной-летней температуре? А то у меня получилось около 100 градусов! :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А даташит сейчас посмотрел, на 0х4910 - это же вроде Factory conversion registers, т.е. не результат, а просто калибровочные данные?

Изменено пользователем Dejmos

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

(600/1,62)-273.15=97 С ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мдя, туплю уже.

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я эксперементировал с временем выборки. В даташите сказано что она должнеа быть 10 мкс. Я это считал так. Тактовая частота контроллера 16 МГц. 1/16=0.0625

10/0.0625=160. Тоесть это если делитель для АЦП не трогать то надо установить время выборки 160 тактов. Но здесь и получаются вот такие запредельные температуры.

Я поставил 16 циклов и температура вышла около 40 градусов, что в принципе более на правду похоже.

 

Как точно пощитать сколько надо циклов задать в настройках чтоб получить время выборки 10 мкс?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я понял имеется один байт со значением TS_Factory_CONV_V90, предпологается, что старшая часть равна 0x03.

Данное значение получено при напряжении питания 3-+10мВ (опорном) и температуре 90-+5 градусов Цельсия.

У STM8L151K6 данное значение расположено по адресу 0x004911, в моем мк это значение равно 0x43.

Следовательн имеем 0x0343=835, что при указанном опорном около 0,611 В.

Если я правильно понял, то далее нам нужно получить второю точку, для этого необходимо получить значение при температуре 25 градусов Цельсия.

У меня получилось 0x26C=620, т.е. 0,498В (опорное у меня 3,29В).

Используя эти две точки, можно получить наклон и смещение характеристики, что должно повысить точность преобразования.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда получается что 677 - вполне адекватное значение. Оно в итоге у меня и получалось при любом времени выборки.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно вы неправильно "читате" ?

Используйте утилиту для отладки STMStudio (http://www.st.com/internet/evalboard/product/251373.jsp).

Только не используйте её для мониторинга ОЗУ и Флеш-памяти ОДНОВРЕМЕННО! Дает сбой, я не уверен, что разработчики знают об ошибке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...