- Увод у дигитални модул сензора за светлост БХ1750
- Ардуино
- Програмирање Ардуина за повезивање сензора светлости БХ1750
Када телефон узмете на сунцу или у јаком осветљењу, он аутоматски подешава осветљеност у складу са условима осветљења. Већина уређаја за приказ данас, било да се ради о телевизору или мобилном телефону, има сензор амбијенталне светлости за аутоматско подешавање осветљености. Данас ћемо у овом упутству користити један такав сензор БХ1750 Модул сензора за светлост и повезати га са Ардуином и приказати вредност Лук на ЛЦД екрану од 16к2.
Увод у дигитални модул сензора за светлост БХ1750
БХ1750 је дигитални сензор амбијенталне светлости или сензор интензитета светлости, који се може користити за аутоматско подешавање осветљености екрана на мобилним телефонима, ЛЦД дисплејима или за укључивање / искључивање фарова у аутомобилима на основу спољних услова осветљења.
Сензор користи И 2 Ц серијски комуникацијски протокол који олакшава употребу са микроконтролерима. За И2Ц комуникацију има СДИ и СДА пинове. Распиновка БХ1750 Светлосни сензор амбијенталног је приказан испод:
Излаз овог сензора је у ЛУКС (лк), тако да не захтева даље прорачуне. Лукс је јединица за мерење интензитета светлости. Интензитет мери према количини светлости која удара на одређено подручје. Један лукс једнак је једном лумену по квадратном метру.
Сензор ради на напонима од 2,4 В до 3,6 В (обично 3,0 В) и троши струју од 0,12 мА. Овај сензор има широк опсег и високу резолуцију (1-65535лк), а поред тога, варијације мерења су такође мале (око +/- 20%). Такође може радити независно без икаквих спољних компоненти.
Иако се ЛДР сензор такође може користити за контролу уређаја на основу услова осветљења, али то није тако тачно. Користили смо ЛДР сензор за изградњу многих апликација контролисаних светлошћу:
- Круг сензора светлости Ардуино помоћу ЛДР-а
- Тамни детектор помоћу ЛДР и 555 ИЦ тајмера
- Једноставан ЛДР круг за откривање светлости
- Ардуино лампа за мешање у боји помоћу РГБ ЛЕД и ЛДР
Ардуино
Шема кола за повезивање сензора светлости БХ1750 са Ардуином је приказана испод.
И2Ц комуникациони пинови СДА и СЦЛ БХ1750 повезани су на Ардуино пин А4 и А5, односно за И 2 Ц комуникацију. Као што знамо радни напон сензора је 3,3 в, тако да су ВЦЦ и ГНД БХ1750 повезани на 3,3 В и ГНД Ардуина. За ЛЦД, пинови за податке (Д4-Д7) повезани су на дигиталне пинове Д2-Д5 Ардуина, а РС и ЕН пинови повезани су на Д6 и Д7 Ардуино. В0 ЛЦД екрана је повезан на пот, а 10к лонац се користи за контролу осветљености ЛЦД екрана.
Програмирање Ардуина за повезивање сензора светлости БХ1750
Програмски део за употребу овог ЛУКС сензора са Ардуином је врло једноставан. Иако је за овај сензор доступна библиотека, али можемо га користити и без тога.
Прво, уврстили смо датотеке заглавља за ЛЦД и И 2 Ц протокол.
#инцлуде
У функцији подешавања иницијализовали смо и ЛЦД и сензор и исписали почетну поруку на ЛЦД-у.
воид сетуп () { Вире.бегин (); лцд.бегин (16,2); лцд.принт ("БХ1750 Лигхт"); лцд.сетЦурсор (0,1); лцд.принт („Сензор интензитета“); кашњење (2000); }
Овде БХ1750_Реад и БХ1750_Инит функције се користе за читање и писање вредности Лук респективно. Функција Вире.бегинТрансмиссион () користи се за започињање преноса, а функција Вире.рекуестФром (адреса, 2) користи се за читање регистара, где 2 означава број регистара.
Даље Вире.ендТрансмиссион () користи се за завршетак преноса, а функција Вире.врите () користи се за прелазак на жељени регистар уношењем адресе тог регистра у њега.
инт БХ1750_Реад (инт адреса) { инт и = 0; Вире.бегинТрансмиссион (адреса); Вире.рекуестФром (адреса, 2); вхиле (Вире.аваилабле ()) { буфф = Вире.реад (); и ++; } Вире.ендТрансмиссион (); ретурн и; } воид БХ1750_Инит (инт адреса) { Вире.бегинТрансмиссион (адреса); Вире.врите (0к10); Вире.ендТрансмиссион (); }
У функцији петље , исписујемо лук вредности у реалном времену преко ЛЦД екрана. Прво упоредите повратну вредност из функције БХ1750_Реад са 2, а затим започните штампање Лук вредности ако је једнака 2. Овде се вредности упоређују са 2 јер функција БХ1750_Реад враћа вредност броја регистара и читамо само 2 регистра. Дакле, када достигне 2, програм започиње штампање ЛУКС вредности интензитета светлости.
Тада се користи формула за добијање вредности из оба регистра и подела са 1,2, што је тачност мерења.
воид лооп () { инт и; уинт16_т вредност = 0; БХ1750_Инит (БХ1750адресс); кашњење (200); иф (2 == БХ1750_Реад (БХ1750аддресс)) { валуе = ((буфф << 8) -буфф) /1.2; лцд.цлеар (); лцд.принт ("Интензитет у ЛУКС-у"); лцд.сетЦурсор (6,1); лцд.принт (вредност); } кашњење (150); }
Напокон укључите Ардуино и отпремите програм у Ардуино. Чим се програм пренесе, ЛЦД почиње да приказује интензитет светлости у ЛУКС јединицама. Вредности можете да промените и променом интензитета светлости око сензора, као што је приказано у видео снимку испод.