Точный датчик температуры Si7051, делаем "с нуля".

Всем привет!

Хочу поделиться длинной историей разработки и заказа платы под данный датчик. Полный цикл DIY-проекта, на простеньком примере.

Для своей домашней пивоварни у меня собрана простенькая «метеостанция» с выкладкой данных онлайн на различные сервисы. В качестве датчиков использовались популярные DS18B20. Но вот случайно наткнулся на датчики от Silicon Labs, серии Si705X, и захотелось мне попробовать задействовать их. А конкретно Si7051 — цифровой (I2C) датчик к точностью ±0.1°C и временем конвертации данных с максимальным разрешением 14 бит всего 7 мс (сравните с 750 мс у DS18B20). Не то, чтобы мне нужна была такая точность и скорость на пивоварне, просто захотелось «пообщаться» с новым датчиком. :)

Датчик был настолько новый, что готовых сборок его обнаружено не было. Дело в том, что в отличии от DS18B20, этот датчик идет в корпусе только для поверхностного монтажа — DFN 3x3 мм. Так даже интереснее было — я получил практику сразу многих вещей, включая пайку такой мелкой детали (обычным паяльником). Сейчас кстати появилась в продаже готовая плата от ClosedCube за $8.95. Когда я начинал, их еще не было. Поэтому делал я все с нуля.

Для начала читаем даташит от Si705X. Смотрим типовую схему включения, всё довольно-таки просто, обвязка минимальна:

Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост

Помимо самого датчика надо всего пару резисторов и конденсатор:

Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост

Такие же номиналы и типоразмеры 0603 и будем использовать. «Нарисовать» всё это дело я решил на EasyEDA. Бесплатно и ничего кроме браузера не требует. Буквально за 15-20 минут набросал схему, аналогичную тому, что в даташите, только добавил коннектор, стандартный штырьковый. Ах да, еще самой микросхемы датчика в базе данных EasyEDA конечно же не было, надо было создать свой компонент. На DIYModules я нашел символы для Si70xx (там не было именно 7051, но были аналоги с точно такой же распиновкой) и Footprint (размещение контактных площадок на плате) для этого DFN-6 3x3 под Eagle. Удачно импортнул их в EasyEDA и теперь они все там есть. Вот такая схемка получилась:

Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост
Дальше разводим плату. Надо заметить, что опыта рисования плат и схем у меня особо нет. Поэтому даже на таком просто примере я больше учусь, если кто заметит ошибки — с радостью приму любую критику, только конструктивно пожалуйста, делалось для себя «на коленке» без опыта какого-либо, работа у меня с этим не связана. Сначала нарисовал плату, где все компоненты с одной стороны были (хотя плата двухслойная была всё-равно). Потом переделал вот так, вынес пассивные компоненты на другую сторону, чтобы с «лицевой» стороны был только датчик, мне его надо «приклеить» к поверхности измеряемой. Получилось вот так:
Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост

Можно было бы еще компактнее или сенсор на угол сместить.

Плата маленькая 13x12 мм. Поэтому заказать изготовить её у OSHPark получилось ооочень дешево. Смешные $1.15 за 3 платы с доставкой, сделанные в США. Да, у них просто по размеру печатают и в небольшом количестве (от 3 штук) мелкие платы у них выгодно заказывать. Я просто экспортировал Gerber из EasyEDA и загрузил его в OSHPark. Всё принялось на ура и без косяков сразу. Разве что на реальных платах шелк обводки вокруг датчика почему-то не был сделан. Хотя на превью был. Но это фигня. Вот так выглядело превью у них:

Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост

На перевернутую подпись C1 не обращайте внимания. Не помню почему так вышло ) Да и пофиг, делалось на скорую руку.

Платы обычной почтой, без трека. А по приходу ко мне получал я их как мелкий пакет с треком RBxxxxxxxxxRU — т. е. наши трек наклеили внутренний, но узнать его до получения пакета я никак не мог. Но получил их в итоге к счастью, извещение принесли. Вот так выглядели платы:

Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост

Пока платы готовились и отправлялись, я заказывал компоненты. Сначала поискал по нашим сервисам, типа ChipFind. Что-то на тот момент когда искал, датчики возило всего пару компаний и дорого. Сейчас уже возят нормально, можно найти. Я сначала заказал в Mouser (их российской версии сайта), у которых было заявлено, что в цену «включена» доставка уже. После прислали счет от российской компании, где сверху была стоимость доставки до моего города еще. Не дорого, но как-то это не хорошо говорить одно, а делать по другому. Поэтому я на них забил и заказал в американском DigiKey. С доставкой через посредника Shipito (давно пользуюсь для всякого-разного, адрес виртуальный в США есть). Датчики у них всего по $1.97 были. Еще взял сразу резисторы Panasonic и конденсаторы Murata, с такими же параметрами, как в даташите от Silicon Labs, по 10 шт (от 10 там цена копеечная получается). Добро это дома было, но нонэйм китайский с Али, решил взять «брендовые». Ну и в довесок себе еще мелочевки всякой набрал там. Датчики стоили $5.97, но со всем остальным вышло вот так:

Your total cost is $15.61 in U.S. currency, including $4.11 postage.

На следующий день мне пришло от них письмо с вопросом об адресе получателя. Я при покупке честно выбрал что платежный адрес — мой адрес в России, адрес доставки — адрес Shipito в США. Спрашивали что за компания находится по адресу получатели и является ли это компанией-пересыльщиком. Думал приехали, не станут на форвардера отправлять. Тем более при покупке было уведомление, что один или несколько позиций в заказе подлежат экспортному контролю (заказывал там демо-плату с МК еще, она «мэйд ин ЮСА»). Ответил честно, да, адрес — компания Shipito и указал их «реквизиты» с сайта. Те ответили «ок» и выслали посылку. :) Через пару дней получил на адрес в Шипито и переслал себе через Shipito Economy Airmail. Еще около $10 вышла доставка в РФ. С таможней/доставкой проблем никаких не было.

Все компоненты в посылке разложены по отдельным пакетикам, некоторые даже в двойных и т. д. Ну осталось дело за малым. Спаять это всё. Компоненты мекие. Вот для сравнения как выглядит один датчик:

Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост
Контакты у него не «выпирают» за корпус, но сбоку «заподлицо» слегка заходят, поэтому припаять я смог обычным паяльником недорогим. Центральный пад под чипом — термопад, он всё-равно должен в воздухе болтаться. Кривовато получилось, но всё работает. Вот еще для сравнения размеров фото:
Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост
А вот как это дело выглядит в сборе (флюс еще не отмыт на фото, поэтому «жирная» плата):
Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост
Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост

На последней фотке под увеличительным стеклом изображение. Слегка кривовато припаял конечно. Да и фиг с ним, главное, что работает. Это был вообще мой второй в жизни опыт пайки чего-то меньше стандартных штырей коннекторов (header pins). Потренироваться паять SMD, 0603 в т.ч., я взял на Ali вот такую платку за доллар. Не так уж сложно на самом деле, даже с недорогим паяльником с того же Али, только припой и флюс нормальный надо — китайский припой только Mechanic более-менее, остальные даже не берите, ими хрен что спаяешь в принципе. Плату с датчиком я паял Felder'ом, флюс с Китая псевдо-Kingbo RMA-218 (вполне норм). Отмывал бензином «Калоша», потом водой с мылом.

Пока все заказы пришли ко мне домой уже появилась готовая сборка от ClosedCube, о который я писал выше и их простенькая библиотека для Arduino. Я взял Arduino Mini Pro и подрубил к нему. Простенький скетч из примера библиотеки и результат с датчика выдается без проблем:

Точный датчик температуры Si7051, делаем "с нуля". Arduino, Датчик, Silicon Labs, Своими руками, Самоделки, Печатная плата, Длиннопост

Самое главное! На плате преобразователь уровней напряжения я не разводил! Датчику нужно питание 3.3В. Не подавайте на него питание от Arduino с 5В. У меня Mini Pro питается от 3.3В источника, работает на 16MHz нормально вполне с таким питанием, поэтому уровни согласовывать мне надо, везде 3.3В.


PS: На Ali можно найти недорогие готовые платки с датчиком Si7021. У него точность температуры ±0.4°C, зато он еще и влажность измеряет в пределах ±3% RH. Распиновка у него 1 в 1.

Arduino & Pi

1.4K постов20.6K подписчиков

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Автор поста оценил этот комментарий

привет @nstorm ! Я тут с Si705x вожусь. Как сделать его многоканальным? по I2C они дают только 1 слейв адресс , можно ли как-то это обойти?

раскрыть ветку
Автор поста оценил этот комментарий

Сколько на одну шину можно подвешать этих датчиков? 256 или 512, или больше? Мне для одного экспериментального дела. Для ульевых рамок. Их туда думаю поставить 5штук конвертом. Можно сразу совмещённые датчики с показателями влажности туда поставить попробовать, там, внутри улья, это важно.

А потом предполагаю вывести их на LPWAN и в сеть.

раскрыть ветку
Автор поста оценил этот комментарий

Насколько сложно будет сделать штуку, которая показывает температуру, влажность, давление, уровень CO?

раскрыть ветку
Автор поста оценил этот комментарий
Варю в кастрюле. Ни х не понял. Респект! 😂