ПК термометр на DS1621

Устройство простое, без калибровки и микроконтроллеров.

Это невероятно простой термометр подключается к любому свободному последовательному порту. В устройстве не применяются какие-либо программируемые компоненты и микроконтроллеры. Точность измерений составляет до 0,5°C без калибровки. Оно так дешево, что я сделал его для каждого используемого мной компьютера. Это так приятно иметь температуру на панели задач Windows, что многие друзья попросили меня сделать такое устройство!

Сделайте себе точный термометр

Данный проект достаточно легок для новичков, лишь, возможно могут быть трудности, связанные с аппаратной несовместимость последовательного порта на разных компьютерах. В версии с одним датчиком нужна лишь микросхема датчика, регулятор напряжения и несколько диодов и резисторов. Сделайте его и узнайте секреты IIC шины, как реализовать IIC шину используя лишь два резистора и пару стабилитронов, как управлять им на последовательном порту используя Visual Basic. Используемые компоненты легко доступны в радио интернет-магазинах.

Характеристики:
Температура отображается как на панели задач Windows, так и за её пределами(см. рисунок).
Устанавливается в любой свободный COM порт ПК.
Диапазон измерений -20 … +125°C (-4 … 257°F).
Базовая точность и разрешение 0.5°C.
Шкала Цельсия(°С) и Farenheit (°F).
Данные записываются в легко читаемый текстовый файл (хорошо для Excel).
Частота дискретизации 1, 5, 30 или 60 секунд.
Один или два датчика температуры (с возможностью расширения до 8)
Питание с COM-порта, внешний источник не требуется.
Легко сделать, не экзотические программные и аппаратные части.
Не требует калибровки.

Сделать ПК термометр легко. Я подробно опишу версию с элементами для поверхностного монтажа. Те, кто не знакомы с пайкой маленьких SMT элементов, будут рады узнать, что плата для выводных элементов также доступна.

Для начала необходимо собрать все элементы кроме плат. Вот список элементов:

Номер

Тип

Описание

U1, U2

DS1621 или DS1631

Цифровой датчик температуры
Пластиковый корпус SO8 (SMD) или DIP (Выводной)

U3

LM2936Z-5.0

Регулятор напряжения с ультра низкими потерями, корпус ТО92( в обоих вариантах)

D1, D2

LL4148

Маленький импульсный диод(вроде 1N4148)

DZ1, DZ2

MMSZ5V1

Стабилитрон 5,1В 0,5W.

C1, C2

47 мкФ/16В

Электролитический конденсатор

C3, C4

100нФ

Низковольтный керамический конденсатор (SMD 1206)

R1, R2

4700 Ом 5%

Резистор 0,25W (SMD 1206)

COM

DB9F

9-контактный разъем “мама”, прямой (SMD) или угловой (Выводной)

Это увеличенный вид собранной SMT платы (Небольшая плата это выносной датчик температуры).

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

После того, как все элементы проверены, я делаю плату. Так как она односторонняя, вы можете легко вытравить её самостоятельно. Это занимает меньше часа и не требует никаких особых материалов по методу, описанному здесь.

Плата должна быть безупречно чистой (без следов окисления и отпечатков пальцев) для хорошего травления и пайки. Протрите её мягким абразивом до блеска (кухонная мочалка, стальная вата и даже офисный ластик). Не забывайте отзеркалить рисунок платы перед печатью! Я люблю SMT платы, потому что необходимо сверлить не так много утомительных отверстий перед пайкой.

Для пайки требуется паяльник с тонким жалом, острый пинцет и твердая рука. Я креплю плату к столу во время пайки. На самом деле я прикрепляю её к распечатке, чтобы облегчить проверку во время пайки.
Для того, чтобы случайно не перепутать элементы, держите их в оригинальной упаковке до необходимости. Я предлагаю вам начать пайку с мелких элементов (резисторы, диоды …) и закончить большими (электролитический конденсатор), высокие элементы могут усложнить доступ к мелким.

Не наносите слишком много припоя, и будьте осторожны, чтобы не перегреть элементы (особенно диоды и микросхемы). Если необходимо, пусть элемент остынет. Большинство элементов полярные, поэтому будьте осторожны, чтобы не перепутать их. Катод диода (K) отмечен черным кольцом, отрицательный вывод электролитических конденсаторов черной полоской. Если вы предпочитаете использовать танталовые конденсаторы, помните, что их маркировка перевернута, и черной полосой обозначают положительный вывод!

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

Те, у кого нет опыта в пайке SMT элементов, могут быть обеспокоены пайкой микросхемы датчика.
Я чищу жало паяльника перед каждой точкой пайки, и использую очень тонкий припой, чтобы наносить максимально малое количество припоя. Я наношу небольшое количество припоя лишь на площадку предназначенную для вывода 1.

Я ставлю микросхему на плату, и когда её выводы совпадают с площадками, я чищу жало и грею контакт 1, пока он не припаяется. Я проверяю, что микросхема по-прежнему стоит правильно (все контакты по центру соответствующих площадок). Если она переместилась, я нагреваю контакт 1 и перемещаю её, либо я по-прежнему паяю остальные контакты, очищая жало и используя мало припоя. Последним шагом является пропайка контакта 1, изначально припаянного очень маленьким количеством припоя.

Регулятор напряжения LM2936Z5 нуждается в специальной подготовке к пайке. У меня были сквозные отверстия, но я хотел припаять его на SMT стороне платы. На рисунке показано как согнуть и укоротить контакты.

Печатная плата рассчитана на установку между контактами разъема последовательного порта. Это последняя часть пайки. Не забывайте припаять выводы 7 и 8 на противоположной стороне печатной платы.
Я обычно очищаю плату от остатков флюса при помощи растворителя, например ацетона, и позволяю плате полностью высохнуть перед включением. Как лишь плата проверена и работает, я наношу слой прозрачного лака-спрея для защиты меди от окисления.

Последний шаг заключается в загрузке и установке программного обеспечения. Если вас смущают подсказки Microsoft Installer (… на итальянском языке) эти скриншоты (первый и второй) помогут сделать всё правильно.

При первом запуске, необходимо выбрать номер последовательного порта, к которому подключена схема, и вы будете готовы к получению температуры. Удачи!

Как это работает?

Схема является производным от программатора Claudio Lanconelli PonyProg. Ключевым компонентом является датчик температуры DS1621 Dallas Semiconductor. Это цифровой датчик температуры, а это значит, что он измеряет температуру и превращает её в цифровые значения (двоичные числа, то есть последовательность из нулей и единиц, как байты в компьютере).

Просто подайте стабилизированное питание 5В, и DS1621 способен передавать температуры окружающей среды через последовательную шину IIC (Inter-Integrated Circuit шину, также пишется I2C). Это стандартная схема передачи разработанная Philips Semiconductors для соединения множества микросхем вместе, используя всего две линии: тактовую (SCL) и данные (SDA).

См. документация чтобы получить более подробную информацию о работе шины,  а сейчас достаточно знать, что любой I2C чип имеет свой собственный адрес (число в диапазоне от 0 до 127) и набор команд. Таким образом, вы можете подключить много микросхем параллельно и все ещё быть в состоянии общаться с каждой в отдельности, начиная каждое сообщение с соответствующим адресом.

Прямо с завода, все DS1621 поставляется базовым адресом ($40), но вы можете настроить его, соединяя адресные выводы (А0, А1, А2), с 5В или GND соответственно (см. таблицу). Таким образом, вы можете подключить до 8-ми микросхем датчиков параллельно на шину, хотя поставляемое программное обеспечение поддерживает и заносит в таблицу лишь два (вы можете добавить больше датчиков, изменив программное обеспечение).

Так что мы можем питать DS1621 от 5В постоянного тока и подключить его SCK и SDA проводам  I2C интерфейса ПК, верно? К сожалению, компьютеры не имеют разъемов 5В постоянного тока и портов I2C, поэтому мы должны хакнуть их!

Хак#1: Фантомное питание COM-порта

Датчик температуры не требует много энергии для работы, так почему бы не устранить необходимость питания, «крадя» питание с сигналов уже доступных на порте RS232?
+12В от линий RS232 передаются на регулятор через диоды D1, D2, фильтруется C1 и регулируется до +5В на LM2936-Z5. Это специальный регулятор, способный работать с минимальным входным напряжением и сохранять каждый мА. LM2936 способен регулировать с таким низким входным напряжением как 5,2 (больше всего последовательных портов питаются лишь 6В). Для сравнения, обычные регуляторы 78L05 требуют, по крайней мере, 6.7В на входе и потребляет в 100 раз больше тока, необходимого LM2936-Z5.

Хак#2: Заставляем COM-порт делать вид, что это I2C-шина.

Программное обеспечение ПК термометра эмулирует провода I2C-шины двумя контактами COM-порта, доступного на всех материнских платах.

В качестве линии SCL используется RTS (Request To Send, контакт 7), а для SDA используется линия, первоначально разработанная для DTR последовательного порта (Data Terminal Ready, вывод 4). Эти сигналы доступны из Visual Basic установкой DTR и RTS свойств объекта MSComm.
Вы не можете подать сигнал с COM порта на DS1621 напрямую, потому что уровни напряжения должны быть адаптированы. В соответствии со стандартом EIA-RS232, в большинстве компьютеров выходное напряжения достигает +15В постоянного тока и падает до -15В постоянного тока на разъеме COM порта, поэтому мы должны ограничить их более удобными напряжениями от 0 до +5В постоянного тока перед подключением к DS1621 SDA и SCL проводов. Стабилитрона 5.1В и ограничительного резистора 4700 достаточно для этой цели.

Если вы посмотрите на схему внимательно, вы заметите, что вывод SDA соединен также с контактом CTS (Clear To Send, контакт 8). Таким образом, программное обеспечение ПК термометра может контролировать логический уровень SDA, чтобы читать ответы микросхемы, что делает эту линию двунаправленной. Хотя теоретически последовательный порт требует отрицательного сигнала с входа, сигналы в диапазоне 0 … 5В постоянного тока хорошо работают практически на любом компьютере на земле.

Программное обеспечение

Программное обеспечение поставляется предварительно скомпилированным и с инсталлятором (setup.exe), но для тех, кто интересуется программированием, включен исходный код.

Я написал программу в Visual Basic. Я сделал это прямым путем, намеренно избегая оптимизации, которая сделает код менее читабельным.
Функции шины I2C сгруппированы в файл, который может быть повторно использован для других приложений. Он предоставляет функции для всех основных операций I2C шины: таких как запуск и остановка шины, или отправка и получение одного байта.

Основная программа обеспечивает функции, температуры(chipaddress), который дает I2C-шине команду, чтобы получить температуру от микросхемы.
Чтобы прочитать температуру микросхемы в Visual Basic все, что вам нужно, это запросить температуру ($&48), где $ и 48 является адресом для первой микросхемы, $H49 является адресом второй микросхемы, и так далее в соответствии с таблицей выше. Моя программа использует два датчика, но не так трудно изменить её для поддержки до 8 микросхем.

Самый первый раз, когда вы запустите программу, вы получите предупреждение о том, что не существует файла конфигурации (он будет автоматически создан в конце сессии) и настройки будут по умолчанию. Выберите последовательный (COM) порт, который вы используете, если ваше устройство включает в себя U2 для чтения температуры наружного воздуха, интервал между измерениями, единицы измерения и если вы хотите логирование температуры в файл «pc_thermometer.txt» (ASCII текстовый файл, который вы можете импортировать в Excel для обработки или построения графика).

Проверьте поле «start minimized», если оно включено, то при последующих запусках программа  не будет открывать окно на рабочем столе, а будет минимизирована на панели задач, обеспечивая «иконку температуры». Это мой предпочтительный способ использования программы.
При нажатии на иконку открывается окно.

Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

U1, U2
Датчик температурыDS16212
U3
Линейный регуляторLM29361
DZ1, DZ2
СтабилитронMMSZ5231B2
D1, D2
Выпрямительный диодLL41482
С1, С2
Электролитический конденсатор47 мкФ 16 В2
С3, С4
Конденсатор0.1 мкФ2
R1, R2
Резистор4.7 кОм1
COM
РазьемDB9F1
Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.