Простой термометр для дома с двумя датчиками DS18B20
Данный проект родился в процессе изучения мной принципов работы интерфейса 1-wire. Для измерения температуры в этом проекте используются широко распространенные датчики фирмы “Dallas Semiconductor” типа DS18B20. Устройство способно работать с одним или двумя датчиками. Предполагается использование термометра для домашних целей, где один датчик измеряет температуру в комнате, а второй измеряет температуру на улице. Индикация значений температуры осуществляется с помощью знакосинтезирующего ЖКИ дисплея на базе контроллера HD44780 или его аналогов. При включении устройства на дисплее высвечивается заставка “Start…”, которая появляется в виде бегущей строки, затем возможны следующие варианты:
1) если устройство не обнаружит подключенных датчиков, появится сообщение “NO SIG”;
2) если устройство обнаруживает один датчик, то на дисплее появляется сообщение вида: “T =, ”
3) если устройство обнаруживает два датчика, то на дисплее появляется сообщение вида: “Tk или y>=, ”, где k – сигнализирует о том, что идет работа с датчиком в комнате , y— сигнализирует о том, что идет работа с датчиком на улице.
На видеороликах, прилагаемых к статье, показаны описанные выше ситуации. Устройство автоматически определяет 64 разрядный код каждого датчика и различает их по первому несовпадению битов кода при последовательном сравнении, где бит 0 считается у датчика для комнаты, бит 1 считается у датчика для улицы. Таким образом, достаточно легко определить какой датчик, где должен использоваться при подключении к устройству двух датчиков и, например, искусственном подогревании одного из датчиков. Датчики в устройстве работают в 12-битном режиме. Обновление показаний температуры происходит примерно раз 845 мс. Переключатель SA1 предназначен для переключения датчиков, с которыми ведется информационный обмен. Если переключатель разомкнут, то работа ведется с датчиком в комнате, если замкнут, то с датчиком на улице. При переключении датчиков присутствует инерционность (до 845 мс.), обусловленная проверкой состояния переключателя перед подачей команды измерения.
Переключатель SA2 служит для включения подсветки ЖКИ. Резистором R2 подбирается требуемая яркость. Резистором R3 регулируется контрастность дисплея. В устройстве использован кварц на 10 МГц. Схема работоспособна, если микроконтроллер работает от внутреннего генератора 8 МГц. (При программировании фуз в обоих случаях не забываем установить CKDIV8 в лог. 1, т.е. отключить деление тактовой частоты на 8)
ЖКИ подойдет любой на контроллере HD44780 или его аналогах. В опытном образце автор использовал однострочный знакосинтезирующий ЖКИ размера 8×1 (BC0801A). У дисплеев такого формата достаточно большой размер символов, что удобно для восприятия, но их количество не позволяет одновременно выводить информацию с двух датчиков. При использовании дисплеев других форматов необходимо учитывать то, что сообщения будут выводиться в первых 8 позициях верхней строки. Проект писался на языке C. Использовался компилятор WinAvr, вызываемый в среде Avr Studio 4.
Сдвоенный цифровой термометр на ATmega8 и DS18B20
Предлагаю свой вариант цифрового термометра с двумя датчиками температуры.
Устройство выполнено на микроконтроллере 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 вы можете ниже
Сложно о простом: цифровой термометр
Предыстория После карантина захотелось потренироваться в разводке плат в Easy EDA и их изготовлению методом ЛУТ, да и особого желания делать сразу что-то сложное не было. Поэтому на роль «подопытного кролика» выступил проект цифрового термометра. К тому же это был отличный шанс попрактиковаться в написании программ для МК на C++. Немного теории Основой термометра будет терморезистор. Терморезистор — это резистор, у которого его сопротивление меняется от температуры. Терморезисторы разделяют на 2 большие группы: с положительным коэффициентом сопротивления (Сопротивление растёт от температуры) и с отрицательным (Сопротивление понижается от температуры). От типа терморезистора зависят и необходимые расчёты. Теоретический практикум Для проекта был подобран следующий терморезистор (рис. 1). Данный артефакт ещё советских времён ( штекер «СШ-5»), но несмотря на свой возраст, работает отлично.
Рисунок 1 — терморезистор Как показала быстрая проверка датчика — данный терморезистор с положительным коэффициентом сопротивления (Сопротивление растёт от температуры), что немного необычно (Большинство современных терморезисторов обладает отрицательным коэффициентом сопротивления). После первичного осмотра необходимо снять зависимость сопротивления от температуры. Для этого нам понадобится образцовый термометр и мультиметр (рис. 2).
Рисунок 2 — необходимые инструменты План замеров таков:
- Замеряем температуру и сопротивление датчика при комнатной температуре.
- Записываем результаты замеров.
- Замеряем температуру и сопротивление датчика при различной температуре (В горячей, холодной, тёплой воде и тд).
- Записываем результаты замеров.
- Повторяем пункты 3 — 4 до тех пор, пока значений будет не менее 3-х.
После снятия первичных значений необходимо их обработать.
Для этого необходимо:
- Определить ТКС (Температурный Коэффициент Сопротивления). Если ТКС < 0, то расчёты производятся по уравнению Стейнхарта-Харта, если ТКС >0, то зависимость на некотором участке диапазона близка к линейной. В моём случае ТКС > 0, а зависимость линейная (Значит терморезистор изготовлен из какого-то металла).
- Для положительного ТКС: вбиваем показания в Excel и строим график. Далее добавляем линию тренда и выводим полученное уравнение (рис. 3).
Рисунок 3 — получение прогноза температуры от сопротивления
T = 17.173R — 130.82,
где T — температура в градусах Цельсия, а R — сопротивление в килоомах. Данная функция понадобится позже, а именно при написании скетча.
P.s. Данный практикум больше служит для выяснения типа датчика, нежели для получения итоговой функции (Т.к. проще составить прямую зависимость значения АЦП от температуры).
Схема электрическая принципиальная
Рисунок 4 — схема электрическая принципиальная
Да, опять я не пользуюсь сдвиговыми регистрами или драйверами семисегментников. С другой стороны, проект простенький и поэтому особого смысла в экономии выводов ATMEGA328 я не видел. Датчик подключается в разъём H1, который вместе с резистором R1 образуют делитель напряжения. Напряжение с делителя напрямую поступает на аналоговый вывод МК. Данный узел необходим для измерения сопротивления терморезистора.
Печатная плата и 3D модель устройства
Так как изначальной идеей проекта была тренировка в разводке ПП в Easy EDA, то и делать плату мы будем в этой программе (рис. 5). Итоговый размер платы 90×63 мм.
Рисунок 5 — рисунок ПП в Easy EDA
Также для статьи была подготовлена 3D модель устройства (рис. 6).
Рисунок 6 — 3D модель устройства
Помимо большого количества дорожек и малой ширины промежутков между ними, плата ещё и двусторонняя, что доставит ещё дополнительных проблем при её изготовлении, но это нам и нужно (Изначальная цель проекта — изготовление сложной ПП в Easy EDA).
Перед печатью необходимо экспортировать плату в .pdf из программы (Верхний и нижний слои) в чёрно-белом варианте без шелкографии (Это легко настраивается в окне экспортирования (рис. 7)). Нижний слой экспортируется без изменений, а верхний зеркально!
Рисунок 7 — настройки экспортирования для верхнего слоя
Далее печатаем на лазерном принтере или несём PDFки в ближайший копицентр, где просим печать на лазерном принтере на глянцевой бумаге (Единственное, что надо учесть: Easy EDA экспортирует одну картинку на целый лист. Мне в копицентре из одиночной картинки на лист сделали лист с 4 копиями обеих сторон, но это могут делать не везде).
Изготовление печатной платы
После печати трафаретов их необходимо перенести на текстолит методом ЛУТ (Не принципиально, просто я им пользуюсь, да и многие тоже).
Небольшая инструкция по изготовлению двусторонней платы ЛУТом:
- Необходимо вырезать трафареты с запасом (по 5 мм с каждой стороны).
- Потом их необходимо совместить на просвет так, чтобы все отверстия совпали.
- Когда отверстия совпадут, скрепляем шаблоны по краям степлером (Аккуратно и не спеша). Лучше скреплять стороны по очереди, следя за отверстиями.
- После соединения шаблонов подготавливаем кусок текстолита по размерам платы и собираем «бутерброд».
- После выравнивания текстолита и шаблонов фиксируем «бутерброд» степлером.
Далее «бутерброд» необходимо разгладить с обеих сторон — тут нужен опыт, у меня так и не получается всё сделать идеально. После хорошо отмываем, так чтобы не осталось белого налёта на медном слое (Тут главное не перегреть плату при переносе рисунка утюгом, иначе налёт будет очень трудно снять), и получаем результат (рис. 8.1 и рис. 8.2).
Рисунок 8.1 — нижняя сторона ПП
Рисунок 8.2 — верхняя сторона ПП
Результат неидеален, но приемлем. Полученную «плату» кидаем в ваш любимый раствор для травления (Я пользуюсь медным купоросом) и вытравливаем плату. Потом отмываем, сверлим отверстия, паяем. Итоговый результат сборки представлен на рисунке 9.1 и рисунке 9.2.
Рисунок 9.1 — верх
Рисунок 9.2 — низ
Вспоминая о соотнесении отверстий на просвет степлером, считаю необходимым показать результат совмещения (рис. 10).
Рисунок 10 — результат совмещения слоёв
Также скажу пару слов о сборке: перед программированием МК необходимо убедится в качестве пайки и травления, иначе можно получить самые разные неприятные сюрпризы.
Практика
Когда дело доходит до практики, то начинаются проблемы с теорией. Основной причиной проблем стала плохая пайка аналогового входа МК, поэтому пришлось перелопатить весь делитель (рис. 11), чтобы понять где была проблема (Совет: Всегда проверяйте пайку мультиметром — это поможет избежать различных проблем). Поэтому все прошлые расчёты можно смело забыть (Но закон Ома забывать не советую) ;).
Рисунок 11 — окончательная схема
Изменения в схеме в основном коснулись делителя, а также был отвязан вывод AREF от +5 В. Теперь R1 притягивает пин PC0 к земле, и номинал резистора был изменён с 10 кОм до 8.1 кОм
Теперь что касается формул. Так как конфигурация делителя изменилась, а на момент отладки уже работал вывод целых чисел на дисплей, то гораздо проще и лучше стало построить график зависимости температуры от значения АЦП и спрогнозировать его (рис. 12).
Рисунок 12 — прогноз температуры от значения АЦП
Итоговой формулой для моего датчика (Напомню, он обладает положительным ТКС и имеет линейную характеристику) стало следующее выражение:
T = -0.7309*X + 378.49,
где T — температура в градусах Цельсия, а X — значение АЦП. Данная формула оказалась вполне рабочей и показания контрольного и самодельного термометров совпадают +- погрешность округления (обрезки дробной части =) ) (рис. 13).
Рисунок 13 — первое включение и тесты (Затемнение на фото вызвано высокой яркостью индикатора)
Помимо всего прочего, схему необходимо обеспечить питанием от стабильного источника напряжение, иначе показания будут «плавать».
Скетч
Помимо проблем с пайкой были ещё и проблемы с самой ATMEGA328PU: экземпляр, который я купил в радиомагазине тактируется исключительно от 1 МГц (брак какой-то), поэтому всеми любимый ардуино код пришлось переделать в гибридный вариант. Изменения в основном коснулись динамической индикации, так как при тактовой частоте 1 МГц ардуино код вызывал сильное мерцание сегментов. Поэтому пришлось писать динамическую индикацию на прямом обращении к регистрам портов (рис. 14).
Рисунок 14 — порты ATMEGA328P
У ATMEGA328P всего 3 порта: PORTB, PORTC, PORTD, из которых PORTC — аналоговый (Содержит АЦП). Как видно из рисунка 15 выводы кварца и даже «Reset» являются частью портов и могут быть сконфигурированы для работы с помощью фьюзов,как и обычные пины («Reset» трогать не советую 😉 ).
Для конфигурации порта необходимо использовать регистр DDR + «Имя порта» (B,C или D и тд.). Пример:
void setup() < DDRC = B111110; //Количество бит = количеству пинов от 0 до максимального. В данном случае: от PC0 до PC5. DDRD = B11111100; // Данный вариант аналогичен пачке pinMode(), но при этом выполняется гораздо быстрее и занимает меньше памяти. DDRB = B00111111; // Но в отличии от pinMode() данный метод не имеет защит, поэтому нужно быть внимательным. >
Нумерация битов идёт справа налево — это нужно помнить!»1″ соответствует режиму выхода, «0» — входу.
Теперь краткий экскурс по правильному управлению большим количеством пинов. Пример:
int data[4] = ; double T = 0; bool negative = false; const bool chisla[10][8] = < < 0,0,0,0,0,0,1,1 >,< 1,0,0,1,1,1,1,1 >,< 0,0,1,0,0,1,0,1 >,< 0,0,0,0,1,1,0,1 >,< 1,0,0,1,1,0,0,1 >,< 0,1,0,0,1,0,0,1 >,< 0,1,0,0,0,0,0,1 >,< 0,0,0,1,1,1,1,1 >,< 0,0,0,0,0,0,0,1 >, < 0,0,0,0,1,0,0,1 >>; void show() < for (int i = 0; i < 4; i++) < unsigned long sec = micros(); while (micros() - sec < 500) < PORTC = 32 * chisla[data[i]][0]; if ((i == 3) && negative) < PORTC = B100010; PORTD = B01111100; >else < PORTD = 4 * chisla[data[i]][1] + 8 * chisla[data[i]][2] + 16 * chisla[data[i]][3] + 32 * chisla[data[i]][4] + 64 * chisla[data[i]][5] + 128 * chisla[data[i]][6]; >PORTC |= 1 > >
Данный метод выводит значение, записанное по цифрам в массив data[]. В отличии от варианта на ардуино коде эта реализация более компактная и оптимизированная, но гораздо сложнее для понимания и отладки (Я потратил на отладку 2 дня).
И так. в массиве chisla[][] записаны коды чисел для семисегментного индикатора с общим анодом. Цикл for перебирает цифры в массиве data[] и подставляет их в один из индексов массива chisla[][], тем самым получая код нужной цифры. Далее массив из 0 и 1 необходимо преобразовать в двоичное число для регистра. На первый взгляд задача сложная, но на самом деле всё гораздо проще.
Для перевода кода цифры необходимо воспользоваться школьными познаниями в информатике: вспомнить перевод числа из десятичной системы счисления в двоичную. Умножая 0 и 1 на 2 в нужной степени мы получим необходимый двоичный код. Пример: для того чтобы «потушить» сегмент «А» необходимо на сегмент «А» подать 5В. Для этого согласно схеме необходимо подать «1» на вывод PC5, т.е. сформировать вот такое двоичное число: «B100000» или умножить 1 на 25 или на 32 (В двоичном виде 32 представляет собой как раз «B100000») =). Код на С++:
PORTC = 32 * chisla[data[i]][0];
В данном случае «0» или «1» берутся из массива chisla[][]. По такому же принципу работают и другие сегменты.
Теперь поговорим о переключении разрядов. Тут всё элементарно — побитовый сдвиг. Т.к. индикатор с общим анодом, то двигаем мы «1». Код на С++:
Цикл while в этом методе нужен для «удержания» цифры, чтобы всё случайно не смешалось во едино.
Питание
Для корректной работы АЦП вход AREF необходимо обеспечить стабильным источником опорного напряжения. Т.к. в режиме «DEFAULT» AREF притянут к AVCC, а AVCC питается у нас от 5 В, то для корректной работы АЦП необходим ИОН на 5 В. Чтобы не городить огород с кучей проводов питания — объединим AVCC и VCC, а весь прибор запитаем от DC-DC преобразователя на 5 В (Только необходимо помнить о возможных шумах преобразователя, всё же это китайский модуль).
Итоги
Рисунок 15 — предфинальный результат (Показывает температуру в комнате)
Чтобы не растягивать статью покажу предфинальный результат (Без корпуса, DC-DC преобразователя и немного сыроватым скетчем (Я кнопочку так пока и не задействовал)). Также прибору необходима калибровка, но это последний этап и выполняется он в случае необходимости, а пока меня всё устраивает, но пару слов по данной теме я скажу:
- Для калибровки понадобятся 2 ёмкости: с кипящей водой и с почти замёрзшей (Чтобы плавал лёд). Кипящая вода имеет температуру в 100 °C, а почти замёрзшая — 0 °C.
- Далее необходимо зафиксировать значения АЦП в этих 2-х точках и добавить их на график (в таблицу) (рис. 12,).
Т.к. данные 2 точки постоянны, то по ним можно откалибровать формулу более точно, чем при использовании спиртового комнатного термометра.
Теперь собственно итоги:
- Цифровой термометр — это не такой простой прибор, как кажется, если подойти к вопросу не со стороны готовых модулей и ардуинки.
- Проектирование даже простых устройств начинается с теории и расчётов, даже если потом они не понадобятся ;).
- Сделать двустороннюю плату в домашних условиях ЛУТом можно и это относительно просто, но муторно.
- «Заливка» платы земляным полигоном — хорошо и удобно, но с зазором нужно быть внимательным, так как при изготовлении платы ЛУТом можно поиметь много неприятных сюрпризов.
- Ардуино код — удобно, но не эффективно. При работе с большим количеством пинов рекомендуется напрямую работать с регистрами.
P.s. Данная статья является больше дневником разработки и сборки этого термометра со всеми нюансами всплывшими в это время, чем руководством или инструкцией, т.к. вряд ли кто-то ещё будет так заморачиваться.
Также, для тех кому будет интересно, прикрепил для всех исходники с Easy EDA и скетч.
Прикрепленные файлы:
- Thermometr.zip (211 Кб)
Теги:
Radio Engineer Опубликована: 14.07.2020 0 0
Вознаградить Я собрал 0 1
Оценить статью
- Техническая грамотность
Цифровой термометр на жесткой логике
В этой статье я расскажу вам, про электронный термометр с цифровой индикацией и линейной шкалой без применения микроконтроллеров и программирования.
Данный проект появился, когда очередной раз мне пришлось сменить САПР для проектирования печатных плат. Нужна была какая-то тестовая схема, чтобы изучить возможности новой для меня программы. И, как это часто бывает, в процессе я немного увлекся.
Схема разработана буквально на тех компонентах, которые болтались у меня под рукой. Она не претендует на что-то серьезное, но вполне сгодится в качестве досуга на выходной день.
А что может получиться у скучающего схемотехника, когда нет четко сформулированного ТЗ, вы узнаете под катом.
Цифровой термометр предназначен для измерения температуры окружающего воздуха в помещениях. Диапазон измеряемых температур составляет от 0°С до 50°С с шагом в 1°С.
Отображение температуры производится на цифровом индикаторе в десятичном виде и с помощью светодиодной линейной шкалы. Также цифровой термометр позволяет регулировать яркость светодиодной индикации с помощью потенциометра.
Первую версию печатной платы я вырезал на фрезеровальном станке. О том, как я делаю печатные платы, вы можете дополнительно почитать в моем предыдущем посте.
Почему-то эта версия устройства не понравилась моим коллегам по работе. Может быть вы напишете мне в комментариях, что могло послужить причиной?
Пришлось немного изменить концепцию устройства. Печатная плата обзавелась крючком, за который ее можно повесить куда-нибудь на стенку, ну или на ручку оконной рамы.
К слову сказать, удалось добиться достаточно неплохой точности и стабильности измерений для устройства, которое «показывает погоду». В пределах одного — двух градусов показаниям верить можно. И чтобы закрепить успех, было принято решение повторить результат уже в «зеленке».
❯ Как устроена схема
Структурная схема цифрового термометра представлена на рисунке.
В основе схемы использован интегральный датчик температуры A2 TMP36 с аналоговым выходным сигналом. Чтобы выровнять диапазон выходного сигнала датчика температуры А2 с диапазоном цифрового индикатора B и линейной шкалы D, используется схема согласования A4.
Для преобразования аналогового сигнала температуры в цифровой вид схема генерирует ступенчато нарастающее напряжение. Для этого счетчик A3 накапливает 50 тактовых импульсов от генератора A1 на частоте 50Гц по количеству элементов светодиодной шкалы D2. А выходы счетчика A3 управляют напряжением на выходе схемы A5 R2R-ЦАП.
Напряжение на выходе A5 R2R-ЦАПа увеличивается с каждым тактовым импульсом на 80мВ в диапазоне от 0В до 4В. Пятьдесят первый тактовый импульс от A1 сбрасывает схему счетчика A3, и напряжение на выходе A5 ЦАП снова начнет нарастать от 0В.
Напряжения с термодатчика A2 и с выхода ЦАП A5 поступают на вход компаратора A6, который определяет состояние входа Data сдвиговых регистров D1. Пока напряжение на выходе термодатчика A2, нормированное схемой согласования A4, ниже ступенчато нарастающего напряжения со схемы ЦАП A5, в сдвиговые регистры D1 записывается высокий уровень. После чего происходит запись сигнала низкого уровня.
Сигнал сброса Reset счетчика A3 одновременно обновляет состояние всех выходов сдвигового регистра D1. Таким образом на линейной шкале D2 формируется светящийся столбец, количество включенных светодиодов в котором эквивалентно измеренной температуре.
Для реализации цифровой индикации B в схеме использован двух разрядный семисегментный дисплей статического типа B4. Формирование цифровых значений температуры происходит с помощью двух дополнительных десятичных счетчиков B1. Первый — отсчитывает единицы, а второй — десятки градусов.
Десятичные счетчики B1 работают параллельно с двоичным счетчиком A3, который управляет схемой R2R-ЦАП A5. Схема детектирования среза B2 отслеживает переход сигнала Data на выходе компаратора A6 в схеме измерения температуры из высокого уровня в низкий, и подает импульс записи Strob на семисегментный дешифратор B3.
Управление яркостью светодиодной индикации B и D производится ШИМ на основе опорного напряжения, установленного потенциометром C1. Напряжение с потенциометра C1 сравнивается с пилообразным напряжением от генератора C2 на частоте 400Гц компаратором C3. Полученный ШИМ-сигнал управляет электронным ключом C4, который коммутирует катоды всех светодиодных индикаторов B4 и D2.
Питание схемы было решено сделать от USB. Мне показалось это удобно. Можно приладить повербанк, или просто воткнуть схему в порт компьютера.
❯ Вторая версия печатной платы
Как я и писал выше, было решено изготовить термометр в «зеленке». Я даже не смог отказать себе в удовольствии паять по иммерсионному золоту.
И только после того, как был пройден полный цикл проектирования от нескольких прототипов до первой опытной партии на «сувениры», я осознал, что схема получилась избыточной. Часть светодиодов в ней будет светиться постоянно, так как в комнате редко бывает ниже 15°С. А другая часть светодиодов наоборот включаться не будет, так как выше 35°С, ну максимум 40°С где-нибудь на юге, в помещениях тоже практически не бывает. А на улице использовать данное изделие тоже не получится, климатическое исполнение этому не способствует, да и отрицательные температуры оно показывать не обучено.
Я не стал отчаиваться, и приступил к устранению этих недостатков. В результате получился термометр с усеченной светодиодной линейной шкалой от 10°С до 30°С. Пришлось добавить еще два светодиода на случай выхода за заданные пределы температуры. Я снова вырезал печатную плату для прототипа на ЧПУ, дальше сборка, настройка, проверка…
Не спрашивайте зачем, но и эту версию я тоже собрал в «зеленке». И только после того, как работа была завершена, мои коллеги обратили внимание на то, что традиционные спиртовые комнатные термометры тоже имеют заведомо более широкий диапазон, и что это более привычно для пользователя. Вот к чему приводит отсутствие сформулированного ТЗ до начала проектных работ…
Втору версию печатной платы заказывал с обычным лужением. Печатные платы пришли с небольшим браком. Видимо при окунании платы олово, посадочное место для разъема USB оказалось снизу, и его основательно залило припоем. Пришлось прочищать все платы вручную.
Если вам понравилась эта статья, то вы можете посмотреть другие мои проекты:
- 1. Простая схема динамических указателей поворотов, и никаких микроконтроллеров
- 2. Светодиодная шкала для переменного резистора на «рассыпухе»
- 3. Светофор на логике со схемотехникой в стиле Beatles. Как электроника вновь стала моим хобби
- 4. Профессиональные методы прототипирования печатных плат. Распечатать на принтере или фрезеровать, ни слова про утюг
- 5. Бирдекель или арифметический детектив на операционных усилителях
- 6. Электронная игра «лабиринт» на сервоприводах. Никаких arduino, только жесткая логика
- 7. Велосипедный фонарь с динамическими поворотами. Зачем покупать на AliExpress, если можно сделать самому?
- 8. LPKF ProtoMat S63. Мыши плакали, кололись, но… продолжали фрезеровать печатные платы
- 9. Звуковой усилитель на драйвере шагового двигателя L298 и таймере 555. Да, 555-й может и спеть
- 10. Графический спектроанализатор с динамической индикацией на жесткой логике