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

 
 
 
Reply to this topicStart new topic
> термодатчик в F411, SiLabs C8051F411
AndreyS
сообщение Mar 4 2011, 16:04
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Добрый день.

Работаю с процом F411, включаю внутреннее АЦП на порт температурного датчика (мукс 0x18) и получаю код (в среднем 0x0200), который после расчетов (параметры взяты из даташита) с использованием смещения 0.9в и коэф передачи 0.00295в/градус получаю -210 градусов цельсия.
Само собой, что цифра врет.
Думал что врут настройки АЦП. Но по другим каналам (внешним входам) соответствующие напряжения, поданные на вход АЦП (т.е. после пересчета напряжений получаю соответствующие ед. АЦП). Решил измерить VDD, включил соответственно мукс на 0x19 и получил соответственно 0x0FFF, что и должно быть. Думал что не включил сам датчик (в регистр REF0CN пишу 0x17), решил записать в REF0CN 0x13 (т.е. по даташиту его выключить). Получил на этом канале значения в пределах 0x0008 (т.е. реально выключился). Вернул все обратно (т.е. включил REF0CN=0x17). И цифра опять в том же пределе 0x0200 ед АЦП.

Подскажите пожалуйста формулу пересчета ед АЦП в температуру с конкретными значениями констант и если она такая же как и у меня, то как мне добиться правильного значения термодатчика в ед АЦП?

Формула:

T=((adc_dat.U_temp_dat*ADC_Vref/ADC_razr)-ADC_offeset_temp)/ADC_slope_temp;

adc_dat.U_temp_dat - значение канала в ед АЦП
ADC_Vref - 2.2 (величина ИОН)
ADC_razr - 2^12 (4096)
ADC_offeset_temp - 0.9
ADC_slope_temp - 0.00295

PS условия измерений - комнатная температура (отлаживаю прогу). Не ожидал споткнуться на этом месте. Корректная работа термодатчика нужна в проекте.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
O.L.
сообщение Mar 6 2011, 06:41
Сообщение #2


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

Группа: Свой
Сообщений: 96
Регистрация: 10-06-05
Из: Новосибирск
Пользователь №: 5 890



Цитата(AndreyS @ Mar 4 2011, 22:04) *
Работаю с процом F411, включаю внутреннее АЦП на порт температурного датчика (мукс 0x18) и получаю код (в среднем 0x0200), который после расчетов (параметры взяты из даташита) с использованием смещения 0.9в и коэф передачи 0.00295в/градус получаю -210 градусов цельсия.


У SiLABS-ов. есть странности с версиями кристаллов. 900 mV это может быть смещение при температуре 0 градусов на кристалле, и при температуре +25 градусов.
А вот почему Ваш контроллер показывает значение 255 мВ при комнатной температуре, понять и разобраться можете только Вы сами. Возможно не правильно выбрано опорное напряжение для АЦП. В качестве примера, скажем при напряжении 3.3 Вольта Ваши 0х0200 превращаются 412 мВ. Или не совсем корректно происходит получение данных из модуля АЦП, например из за малого времени установления сигнала на входе.
Вот в этом топике обсуждают похожую проблему, но значение АЦП там более "жизненные" - http://www.cygnal.org/ubb/Forum2/HTML/000596.html
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Mar 30 2011, 11:13
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(O.L. @ Mar 6 2011, 10:41) *


Добрый день.

O.L. большое спасибо за ответ. Вашу ссылку читал еще раньше, но там как раз ответа на первый вопрос и не поступило (тишина)

Что я проделал.
Взял EK на F411 и залил туда свою прошивку. Результат получил точно такой же (т.е. те же 0x200 +/- сколько то единиц). Взял пример работы с АПЦ для этого контроллера и он заработал нормально (правильно, ну или правдоподобно). При сравнении кода, выяснил что за неточность работы с температурным датчиком (именно с ним, так как данные оцифрованные с других каналов, совпали с тем что на них выставлено) ответственен бит BURSTEN в регистре ADC0CN. И это при том что АЦП перед этим я принудительно включаю битом AD0EN и только потом выставляю бит запуска AD0BUSY (АЦП настроено именно на запуск вручную). Как только в инициализации сбросил бит BURSTEN, то цифры стали правдоподобными (получается что этот бит связан с работой температурного датчика).

Вот такая петрушка. Может кому пригодится.

Удачи


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Mar 31 2011, 11:36
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Добрый день всем.

Еще поковырял температурный датчик. Тот вывод который я сделал относился в первую очередь к частоте преобразования Гц (у меня частота преобразования 2.7 МГц и на ней он опять не заработал должным образом).

Выяснилось, что (видимо так и есть) температурный датчик состоит из слаботочного источника тока и большого (по сопротивлению) терморезистора, тогда при подключении АЦП (в этот момент входная емкость АЦП полностью разряжена) происходит медленный рост конечного напряжения на терморезисторе. Короче, при включении посттрекинг тайма на максимум (т.е. 16 тактов, при частоте преобразования АЦП 2.7 МГц) только тогда пошли данные правдоподобные. Если оставить 8 тактов, то значения врут.
Можно просто прикинуть на пальцах и получается что минимальное время оцифровки термодатчика не менее 12мкС (2.7МГц / (15 тактов преобразования АЦП + 18 тактов трекинга= 33 такта) получаем 81 кГц).

Если взять все максимальные смещения на температурный датчик и Vref, то температура может отличаться от температуры измеренной термопарой (правда это будет адитивная погрешность) на 15 градусов, получается, что без калибровки не обойтись (хотел иметь погрешность 5 и не калиброваться).

Вот теперь по этому вопросу все sm.gif


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
редактор
сообщение Apr 15 2011, 12:09
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Я с силабовскими АЦП обычно работаю по такому алгоритму.
Завожу таймер на 1 мс, по которому запускается преобразование АЦП. Затем в прерывании по АЦП после считывания результата выставляю следующий канал. Таким образом время до следующего преобразования получается (1мс - время преобразования).
Для заряда емкости АЦП этого в большинстве случаев достаточно.
Но это работает если не надо проводить "синхронных" измерений двух или более каналов.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post

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

 


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


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