Предлагаю свой вариант цифрового термометра с двумя датчиками температуры.
Устройство выполнено на микроконтроллере ATmega8-16PU и двух датчиков с интерфейсом 1-wire, фирмы «Dallas Semiconductor» типа DS18B20 или DS1822. Устройство используется в домашних целях, один из его датчиков устанавливается на улице, другой в помещении. Индикация значений температуры осуществляется двумя сдвоенными светодиодными 7-сегментными индикаторами с общим катодом. (например, DC56-11GWA, или подобные), расположенными друг над другом.
Знак «минус» индицируется отдельным светодиодом.
Чтобы не было заморочек со считыванием 64 разрядного идентификационного кода датчика и определения, какой из них уличный, а какой комнатный, датчики подключены к разным ножкам МК, а не висят на одной шине 1-wire. Подключение уличного датчика удобно выполнить с помощью разъема, например типа stereo-джек 3,5мм.
При включении устройства, если датчик не подключен, или не исправен на соответствующих индикаторах высвечиваются символы [—]. Обновление показаний температуры происходит приблизительно каждую секунду.
Как показала практика, датчикам типа DS1822 свойственно завышать температуру на 2-3 градуса.
Для компенсации этого в EEPROM контроллера можно записать поправочные коэффициенты, для каждого из датчиков. По адресу 0x00010 записывается коэффициент для датчика находящегося в помещении, а по адресу 0x00011 находящегося на улице. Коэффициент высчитывается по следующему алгоритму: за нулевую поправку берется цифра 0x80, и если Вам необходимо внести поправку, в минус 2 градуса, то от 0x80 нужно будет отнять 2 и записать полученный результат в соответствующую ячейку EEPROM (Например: 0x80 – 2=0x7E).
Для поправки в сторону увеличения температуры необходимо будет к числу 0x80 прибавить необходимый коэффициент, см. рис. Если в соответствующих ячейках EEPROM код 0xFF или 0x80, поправочный коэффициент не учитывается.
Микроконтроллер работает от внутреннего RC-генератора, на частоте 8 МГц, кварцевый резонатор не требуется. Для работы микроконтроллера в таком режиме, нужно запрограммировать необходимые Fuse-биты, в соответствии с ниже следующим рисунком.
Для питания устройства используется малогабаритный импульсный, стабилизированный источник питания с напряжением 5В и током 250мА.
Поскольку схема устройства довольно проста, печатная плата не разрабатывалась, устройство было смонтировано на макетной плате.
Скачать прошивку, проект в CodeVisionAVR, Proteus и в P-CAD вы можете ниже
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
DD1 | МК AVR 8-бит | ATmega8 | 1 | |||
DD2 | Датчик температуры | DS18B20 | 1 | |||
VT1-VT4 | Биполярный транзистор | КТ3102 | 4 | |||
C1, C3 | Конденсатор | 0.1 мкФ | 2 | |||
C2 | Конденсатор электролитический | 47 мкФ 10В | 1 | |||
R1 | Резистор | 10 кОм | 1 | |||
R2-R7 | Резистор | 4.7 кОм | 6 | |||
VD1, VD2 | Светодиод | 2 | ||||
HG1, HG2 | Семисегментный индикатор | ОК | 2 | |||