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

 
 
> Температурный датчик ATxmega
KIG
сообщение Jul 26 2011, 06:53
Сообщение #1


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

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Добрый день.

Пытаюсь измерить температуру с помощью температурного датчика встроенного в ATxmega. Запускаю одиночное преобразование АЦП и на выходе получаю цифру 39 в десятичном формате. Что это за цифра? Температура или код который необходимо умножить на коэффициент чтобы получить температуру? В интернете написано, что необходимо использовать байты из сигнатурного кода производителя. Куда их нужно загрузить? В калибровочные регистры АЦП?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
ILYAUL
сообщение Jul 26 2011, 07:29
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
и на выходе получаю цифру 39 в десятичном формате

Вы уверены ,что в десятичном и проц укажите


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
KIG
сообщение Jul 26 2011, 07:53
Сообщение #3


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

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Цитата(ILYAUL @ Jul 26 2011, 11:29) *
Вы уверены ,что в десятичном и проц укажите


1) 39 - в десятичном формате. Atxmega192A3. Кварц 7.3728 МГц. Предделитель - 512. 8 битный знаковый режим АЦП. Опорное напряжение Vcc/1.66. У меня Vcc=2,7V. Использую однократное преобразование.

2) Еще одна проблема с измерением внутреннего сигнала Vcc/10. Параметры АЦП такие же как и в 1). Получаю код 53 в десятичном формате. Хотя напряжение питания 2,7В. Подскажите, пожалуйста, в чем моя ошибка?

Сообщение отредактировал KIG - Jul 26 2011, 08:03
Go to the top of the page
 
+Quote Post
Юрий_СВ
сообщение Jul 26 2011, 08:21
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 4-05-08
Пользователь №: 37 272



AVR1300
Цитата
The internal temperature sensor is linear. Ideally the measured value at 0°K will
correspond to a “0” result from the ADC. An approximate linear line can be made from
the 0°K to the measured value in the production. This measured production value is
stored in the signature row and the value correspond to a measurement done at 85°C
(358°K) with an accuracy of +- 5°C. The inaccuracy will result in some offset when
measuring temperatures.
The measurement stored in the signature row is done in unsigned mode with 12-bit
resolution with the internal 1V reference. The ADC setup has to be the same if this
value is going to be used in the application. The stored value can be used for a 2-
point calibration where the second point will be 0°K and the ADC value will be 0.
The best way to get accurate results is to do a 2-point calibration to get the incline of
the curve. To do a 2-point calibration, select 2 temperatures where you can do the
measurements where the temperature is known and is accurate. Do a measurement
at both temperatures with the wanted setup of the ADC (mode, sample rate,
resolution). When you have these values, you can calculate the coefficient for the
curve and you can use this in you application. The formula below can be used to
calculate the temperature change per bit:
...


Сообщение отредактировал Юрий_СВ - Jul 26 2011, 08:22
Go to the top of the page
 
+Quote Post
KIG
сообщение Jul 26 2011, 12:18
Сообщение #5


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

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Попробовал при 12 битном беззнаковом режиме АЦП, Опорное напряжение внутреннее 1В. Получил код: 2384 (в десятичном формате). Калибровочные регистры содержат цифру 2650. Зная, что АЦП имеет смещение в 200 ед кода, получаю след формулу для пересчета Цельсии: 'C=(2384-200)*358К/2650-273К=22. Температура в комнате 33 градуса. Неужели контроллер нагрелся только на 22 градуса??

Еще вопрос: Кто-нибудь измерял внутренний сигнал Vcc/10??

Сообщение отредактировал KIG - Jul 26 2011, 12:19
Go to the top of the page
 
+Quote Post
bob1
сообщение Jul 27 2011, 12:20
Сообщение #6


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

Группа: Свой
Сообщений: 82
Регистрация: 17-09-06
Пользователь №: 20 471



Цитата(KIG @ Jul 26 2011, 18:18) *
Попробовал при 12 битном беззнаковом режиме АЦП, Опорное напряжение внутреннее 1В. Получил код: 2384 (в десятичном формате). Калибровочные регистры содержат цифру 2650. Зная, что АЦП имеет смещение в 200 ед кода, получаю след формулу для пересчета Цельсии: 'C=(2384-200)*358К/2650-273К=22. Температура в комнате 33 градуса. Неужели контроллер нагрелся только на 22 градуса??

Еще вопрос: Кто-нибудь измерял внутренний сигнал Vcc/10??

1.Вычисляю по формуле T=A*АЦП+B. При 85гр у нас значение есть. Измеряете при33 гр. Вычисляете коэф. А и В.
2. кусок кода выложили бы..

Сообщение отредактировал bob1 - Jul 27 2011, 12:40
Go to the top of the page
 
+Quote Post
KIG
сообщение Aug 6 2011, 09:36
Сообщение #7


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

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Цитата(bob1 @ Jul 27 2011, 16:20) *
1.Вычисляю по формуле T=A*АЦП+B. При 85гр у нас значение есть. Измеряете при33 гр. Вычисляете коэф. А и В.
2. кусок кода выложили бы..


В описании написано, что температурный датчик имеет линейную зависимость. Отсюда вопрос: зачем вычислять коэф. А и В если они известны для 85гр? Или я что - то не так понял? Дело в том, что у меня температура может изменяться в широком диапазоне, и постоянно перемерять коэффициенты для каждого случая у меня нет возможности.
Go to the top of the page
 
+Quote Post
V_G
сообщение Aug 6 2011, 12:13
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(KIG @ Aug 6 2011, 19:36) *
В описании написано, что температурный датчик имеет линейную зависимость. Отсюда вопрос: зачем вычислять коэф. А и В если они известны для 85гр? Или я что - то не так понял? Дело в том, что у меня температура может изменяться в широком диапазоне, и постоянно перемерять коэффициенты для каждого случая у меня нет возможности.

1. Для линейной зависимости коэффициенты А и Б измеряются один раз и не должны меняться во всем температурном диапазоне (легко проверяется)
2. При 85 вы имеете не А и Б, а показания АЦП. Чтобы вычислить А и Б, стоит измерить показания при другой известной температуре, а потом решить простейшую систему из двух линейных уравнений! Не на xmeg'е, а на бумаге. Потом занесите полученные коэффициенты в EEPROM, чтобы можно было подстроить в случае ошибки. В общем-то это же было написано по-английски в цитате из AVR1300. Не стоит надеяться на фабричную калибровку, а все проверить самому.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:46
Рейтинг@Mail.ru


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