Термометър с DS18B20
и 3-digit 7-segment LED дисплей
/kn34pc.com/конструкции/...
За контрол на едно помещение в студения зимен период се нуждаех от индикация на
стайната температура. Предвид денонощната работа на устройството, добре би било
индикацията да е видима и без друго осветление. Термометър със 7-сегментен LED
дисплей ми се стори най-подходящ.
Вариантът със закупуване на готов термометър ми е твърде примамлив (най-вече
заради "нищо-неправенето": даваш парите и получаваш
,
вкл. и нищожната цена), но чакането при транспорта често е определящо.
А и за мен (образно казано): при самоделна изработка устройствата (особено ако
са в дългогодишна експлоатация) като че ли придобиват "душа"
- работата на устройството те радва по един особен начин и по-различно
възприемаш информацията, която то предоставя.
Та речено-сторено: реших да си сглобя просто термометърче с Arduino, LED дисплей
и температурен датчик, без настройки, без меню, без бутони. Само термометър.
С помощта на мои по-предишни експерименти със събрани от интернет библиотеки към
Arduino (за управление на датчик DS18B20 и 7-сегментни LED индикатори) и няколко
свободни часа писане, кодът на термометърчето беше готов.
Arduino sketch:
arduino_temp.zip
Използвани библиотеки:
- управление на дисплея: със SevSeg Library, Dean
Reading, 2017
- управление на темп. датчик DS18B20: с OneWire Library, Jim
Studt, 2007
Следваха няколко дни тестове, сравняване на 3 датчика от различни доставчици,
сравняване показания с още 5 различни термометъра. Точността на DS18B20 ме
удовлетворява, като 12-битовия изход ми позволи отчитане на градуси до десети
(разбира се: с "едно наум" за точността, според справочните данни).
Опресняване на дисплея: през 66 ms / разряд, по таймерно прекъсване. Подготовка и
измерване на температурата: през 2500 ms. Изменението на температурата е инертен
процес, така че опресняването на показанията оставих през (2,5 + 2,5)s. Така и самонагряването е минимално.
Не съм тествал индикацията в отрицателната област на изменение на температурата,
но до -9,9°C би трябвало да е нормално, а по-надолу по температура: заради знак
"-" (минус) в заетия първи разряд, показанието ще е в "единици градуси".
Печатна платка не съм правил. Компонентите свързах на експериментална платка с
отвори. Платката е монтирана в подходящ корпус, с отвор за дисплея зад прозрачна
стена, а DS18B20 е изнесен извън на задната страна на кутийката.
За 5V захранване може да се използва и стабилизатора на Arduino-платката, но
предпочитам външен. Достатъчен е захранващ адаптер с висока експлоатационна
надеждност, напр. от стар GSM-апарат или компютърен модем.
При напрежение 5V консумацията на ток е около 30 mA.
73! До следващия проект
.
LZ2WSG, KN34PC
25 януари 2019 година