Точный датчик температуры 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 запрещен)

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

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

1
Автор поста оценил этот комментарий
Где?
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

@yohan19, А блин, ты про комп, не надо было отдельный коммент писать, непонятно же к чему написано. Возьми вон кнопочку, ссылку я тебе выше давал. Подключи её VCC к +5В с БП (красный провод), GND к земле БП (черный провод). Берешь транзистор, к базе подключаешь I/O, к эмиттеру и коллектору подключаешь то, что идет к обычной кнопке питания с материнки. Когда будешь жать тач-кнопку, на I/O будет выдаваться напряжение и транзистор будет открываться, контакты с материнки будут замыкаться, следовательно срабатывать включение. А ну еще поставить токоограничивающий резистор.

показать ответы
Автор поста оценил этот комментарий
А этот датчик через стекло будет работать?
https://vk.com/id9737320 напиши мне плиз.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Через стекло не знаю, не пробовал такие датчики. Чисто теоретически через тонкое может работать.

показать ответы
Автор поста оценил этот комментарий
Центральный пад под чипом — термопад, он всё-равно должен в воздухе болтаться

КУПИ ФЕН!

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

Это понятно, что такие вещи лучше паять феном, а еще лучше цельную паяльную станцию иметь нормальную. Но их нет и покупать их не собираюсь пока, дороговата для меня игрушка 1-2 раза в год пользоваться.

PS: И не зачем капсом орать :)

Автор поста оценил этот комментарий
Ты в электронике шаришь похоже, можешь мне помочь сделать сенсорную кнопку для включения компьютера?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

На Али готовые за копейки продаются сборки: https://www.aliexpress.com/item/TZT-teng-NEW-TTP223-Touch-bu...

Автор поста оценил этот комментарий
Там замыкание двух контактов требуется, но не постоянное, а разовое
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Где?
показать ответы
Автор поста оценил этот комментарий

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

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

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

У них один I2C адрес. Поэтому на одной шине только один просто так. Но можно использовать микрухи I2C multiplexor, вроде TCA9548A.

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

вернее, не его многоканальным, а общее изделие (с МК) многоканальным

раскрыть ветку (1)
Автор поста оценил этот комментарий
Вариантов несколько. Делать на программном i2c. При этом линии SCL либо на разные пины вешать, либо через какой-нибудь мультиплексор пустить. Можно на CD405x линии SCL вывести и переключать им текущий активный датчик, так можно и аппаратное i2c использовать по-идее. Но я сам не делал так, у меня один МК с одним датчиком только работает пока что.


PS: Ну или даже специальные микрухи вроде PCA9544A.

показать ответы
Автор поста оценил этот комментарий
Обычный режим работы транзистора в режиме ключа. NPN транзистор, типа 2N2222/2N3904/BC549 и по такой схеме. Только слева где +5В подключаешь I/O от датчика, а вместо лампочки к эмиттеру и коллектору транзисторы выводы с материнки. Ну и сопротивление резисторов повыше лучше взять, 1кОм и 10кОм соотв., там ток не нужен особо.
Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий
Вот аналогичное включение-выключение компа с RPi:
Иллюстрация к комментарию
Автор поста оценил этот комментарий
а можешь схему нарисовать, куда транзистор и резистор подключать?
когда буду кнопку устанавливать, хотел показать что натворил.

хочу еще прибавление громкости тоже сделать на сенсоре, но таких штук не видел, видел зато свет убавлять можно сенсорным выключателем и переключение светодиодной ленты на сенсоре, можно их как-нибудь переделать?

раскрыть ветку (1)
Автор поста оценил этот комментарий
Обычный режим работы транзистора в режиме ключа. NPN транзистор, типа 2N2222/2N3904/BC549 и по такой схеме. Только слева где +5В подключаешь I/O от датчика, а вместо лампочки к эмиттеру и коллектору транзисторы выводы с материнки. Ну и сопротивление резисторов повыше лучше взять, 1кОм и 10кОм соотв., там ток не нужен особо.
Иллюстрация к комментарию
показать ответы
Автор поста оценил этот комментарий
раскрыть ветку (1)
Автор поста оценил этот комментарий

Да, я так и не смог придумать как в коротком заголовке нормально отразить суть поста. ;(

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

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

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

Элементарно. Любой Arduino + датчики. Тот же самый BME280 покажет первые 3 параметра, для CO отдельные датчики есть. Выводить если не на комп, то экран еще. Все это на Алиэкспрессе продается недорого.

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

BME280 на али сейчас стоят 184р, точность при 25 градусах +- 0.5, сказано. Ну да, китайский клон, но вроде нормальный, сам пользую.

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

Я бы не стал верить в то, что точность китайского клона будет равна оригиналу. )

С такой точностью я прекрасно юзал DS18B20, которые вообще стоят 280 рублей за десяток. Тут захотел просто точнее заделать, да и с нуля было интересно свои платы сделать.

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

BMP280 или BME/BMP180 будут по ценнику так же примерно.

А если немного добавить, то можно взять BME280, температура, влажность, атм. давление (и высоту при желании умеет мерить), точность хорошая.

раскрыть ветку (1)
Автор поста оценил этот комментарий
У BMP280 точность температуры те же ±1°C, что и у DS18B20. Это в первую очередь датчик давления, а не температуры. А Si7051 - исключительно точный температурный датчик. Плюс китайцы вроде клоны поддельные продают, а не оригинал бошевский. А настоящий BMP280 в том же Digikey стоит дороже - $3.52 (только за датчик).

А так BMP180 у меня есть, игрался с ним.

показать ответы