Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС_проект2007.doc
Скачиваний:
88
Добавлен:
12.04.2015
Размер:
2.02 Mб
Скачать
      1. Сопряжение с датчиком температуры

В настоящее время широкое распространение получили интегральные датчики температуры, имеющие цифровой выходной интерфейс. Так, микросхема термометр/термостат DS1620 фирмы Dallas Sem. содержит встроенные схемы измерительного преобразователя температуры и представляет собой процессор с 3-проводным цифровым интерфейсом, состоящим из двунаправленной линии ввода/вывода данных DQ, входа сброса\RSTи входа тактированияCLK. Температура считывается из микросхемы 9-разрядным словом в двоичном дополнительном формате. Диапазон измерения составляет -55С…+125С с дискретностью 0,5С [11]. Другим, более простым и дешевым решением, является применение интегрального датчика ТМР03 фирмы Analog Devices. Его интерфейс – 1-проводной ШИМ выход, скважность которого определяет текущую температуру.

Рис.5.24. Выходной сигнал цифрового термометра ТМР03

На рис.5.24 показан временная диаграмма выходного сигнала. Выход микросхемы – открытый коллектор. Для расчета текущей измеренной температурой необходимо воспользоваться следующим соотношением:

Temp (С) = 235 – (400*Т1)/Т2

Номинальное значение Т1 составляет 10мс.

На рис.5.25 приведен вариант подключения датчика ТМР03 к микроконтроллеру. Резистор R3 является нагрузкой выхода с открытым коллектором.

Ниже приведена тестовая программа снятия данных с термодатчика. Так как программа имеет маленький размер, то она реализована в виде единого модуля. В данной программе измерение длительностей Т1 и Т2 осуществляется циклическим опросом входного порта микроконтроллера, на который подается выходная последовательность с датчика.

Рис.5.25. Подключение датчика температуры к микроконтроллеру

Рассчитаем требуемую разрядность счетчиков длительностей Т1 и Т2. Из формулы следует, что максимальная длительность Т2 составляет примерно 40 мс при 125С, минимальная – 13 мс при -55С. Длительность цикла микроконтроллераMCS51 составляет 12 периодов тактового генератора и при частоте тактового генератора 12 МГц составит: 12/(12*106) с = 1 мкс. Таким образом, максимальное число, которое может быть накоплено в цикле подсчета длительности Т2, составит: 40*10-3/(12/(12*106)) = 40000. Для хранения такого числа требуется переменная типаint (два байта). Реальная накопленная сумма будет меньше в несколько раз, так как цикл накопления состоит не из одной команды, а как минимум из четырех (проверка порта, увеличение значения переменной, пересылки между аккумулятором и переменной).

Определим далее точностные характеристики процесса вычислений, которые зависят от точности вычисления временных интервалов Т1 и Т2. Пусть цикл подсчета длительности состоит из 10 циклов микроконтроллера (примерно 4 команды), что составит 10*1мкс = 10 мкс. Тогда максимальная ошибка вычисления длительности Т2 = 13мс составит: 10*100/(13*1000) = 0,07 %. Общая ошибка вычисления Т1/Т2 не превысит 0,15 %, что в несколько раз меньше ошибки, даваемой самим датчиком: 0,5*100/125 = 0,4 %. Таким образом, можно использовать данный метод вычислений.

Данная программа может быть использована только для проверки работоспособности датчика, так как она занимает все ресурсы микроконтроллера, и он больше ничем не может заниматься. В реальной ситуации измерение временных интервалов рекомендуется осуществлять при помощи системы прерывания и модулей захвата микроконтроллера. Кроме того, использование модулей захвата позволит значительно снизить ошибки вычислений, так как счетчик подсчитывает импульсы от генератора и ошибка вычисления длительности будет равна его периоду.

/* Снятие данных с датчика температуры TMP03/04, тестовая программа */

#include <io51.h>

#define TMPPORT P3.2 /* порт для подсоединения датчика*/

void main(void)

{

unsigned int L,H,T;

H=L=0;

while (TMPPORT); /* Ожидание спада импульса */

while (!TMPPORT) L++; /* Ожидание подъема импульса */

while (TMPPORT) H++; /* Ожидание спада импульса */

/* Вычисление температуры датчика в 0,1 градуса */

T = 2350-(4000*(unsigned long)L)/H;

}

Если датчиком температуры является термосопротивление или термопара, то напряжение, снимаемое с этих датчиков, преобразуется в цифровой код при помощи АЦП. В случае с термосопротивлением, падение напряжения образуется за счет пропускания через него стабильного тока от генератора тока. Структура программы работы с АЦП мало отличается от рассмотренных структур, а реализация процедур зависит от особенностей построения конкретной микросхемы.