Термометр на основе цифрового датчика TMP275

Florin

Недавно я заказал у TI несколько образцов, среди которых был цифровой датчик температуры TMP275. Вот цитата из описания датчика:

TMP275 – двухпроводной датчик температуры с последовательным интерфейсом, обеспечивающий точность измерений 0.5°С. Датчик выпускается в корпусах MSOP-8 или SO-8. TMP275 способен измерять температуру с разрешением 0.0625°C, совместим с шиной SMBus и позволяет подключать до 8 устройств на одну шину. Он идеален для распределенного измерения температуры во множестве приложений. TMP275 рассчитан на измерение температуры в диапазоне от −40°C до +125°C.

Вебинар «Необычное в обычном. Сравнительный анализ современных решений Recom» (27.01.2022)


Кликните для увеличения

Интерфейс I2C – один из простейших способов для извлечения результатов измерений из TMP275. Я разработал схему, имеющую все необходимые компоненты: датчик, мозг на ATmega8 и некоторые другие детали, необходимые для отображения информации и питания схемы. Дисплей сделан на четырех 7-сегментных светодиодных индикаторах CA56-12GWA от Kingbright. Для управления дисплеем я использовал PNP транзисторы, подключив их к общим анодам индикаторов, к катодам подключил резисторы, чтобы ограничить ток через выводы контроллера. Ток через транзисторы не ограничен, поэтому индикаторы дисплея всегда светятся одинаково, независимо от того, сколько сегментов включено.

Термометр на основе цифрового датчика  TMP275

Устройство я решил сделать портативным и запитал его от 9 вольтовой батарейки, поэтому мне понадобился стабилизатор напряжения. Выбор пал на старый добрый 7805.

Протокол I2C широко распространен, и в сети можно найти для него множество различных библиотек. Я выбрал библиотеку от Peter Fleury, поскольку она очень хорошо документирована. Из внешних компонентов для датчика TMP275 нужен только конденсатор между VCC и GND, и два подтягивающих резистора на линиях SDA и SCL.

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

 i2c_start_wait(sensor+I2C_WRITE);	// установить адрес устройства и режим записи
 i2c_write(0x0);			// записать регистр указатель 00000000,
                                        //    чтобы выбрать регистр температуры
 i2c_rep_start(sensor+I2C_READ);	// установить адрес устройства и режим чтения
 temp_high=i2c_readAck();		// считать старший байт температуры
 temp_low=i2c_readNak();		// считать младший байт температуры

Считанное с датчика значение температуры отображается на 4-разрядном дисплее. Для этого я написал дисплейный макрос, который вычисляет числа и выводит их на дисплей. По существу это программное мультиплексирование. Я даже тестировал устройство измерением отрицательных температур, поместив датчик в холодильник. Показания, которые я сравнивал с другим термометром, были корректными.

youritronics.com

 

Перевод: [IMG]/i/Image/wand.gif[/IMG] по заказу РадиоЛоцман

На английском языке: TMP275 digital sensor thermometer

Изготовление 1-4 слойных печатных плат за $2

ADIN2111 — простой в использовании двухпортовый Ethernet 10BASE-T1L коммутатор от Analog Devices
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя