Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Температурный датчик ATxmega
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
KIG
Добрый день.

Пытаюсь измерить температуру с помощью температурного датчика встроенного в ATxmega. Запускаю одиночное преобразование АЦП и на выходе получаю цифру 39 в десятичном формате. Что это за цифра? Температура или код который необходимо умножить на коэффициент чтобы получить температуру? В интернете написано, что необходимо использовать байты из сигнатурного кода производителя. Куда их нужно загрузить? В калибровочные регистры АЦП?
ILYAUL
Цитата
и на выходе получаю цифру 39 в десятичном формате

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

Еще вопрос: Кто-нибудь измерял внутренний сигнал Vcc/10??
bob1
Цитата(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. кусок кода выложили бы..
KIG
Цитата(bob1 @ Jul 27 2011, 16:20) *
1.Вычисляю по формуле T=A*АЦП+B. При 85гр у нас значение есть. Измеряете при33 гр. Вычисляете коэф. А и В.
2. кусок кода выложили бы..


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

1. Для линейной зависимости коэффициенты А и Б измеряются один раз и не должны меняться во всем температурном диапазоне (легко проверяется)
2. При 85 вы имеете не А и Б, а показания АЦП. Чтобы вычислить А и Б, стоит измерить показания при другой известной температуре, а потом решить простейшую систему из двух линейных уравнений! Не на xmeg'е, а на бумаге. Потом занесите полученные коэффициенты в EEPROM, чтобы можно было подстроить в случае ошибки. В общем-то это же было написано по-английски в цитате из AVR1300. Не стоит надеяться на фабричную калибровку, а все проверить самому.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.