- BH1750 டிஜிட்டல் லைட் சென்சார் தொகுதிக்கான அறிமுகம்
- அர்டுயினோ
- BH1750 லைட் சென்சார் இடைமுகப்படுத்துவதற்கான புரோகிராமிங் Arduino
உங்கள் தொலைபேசியை சூரிய ஒளியில் அல்லது அதிக விளக்குகளில் எடுக்கும்போது, அது தானாகவே லைட்டிங் நிலைமைகளுக்கு ஏற்ப பிரகாசத்தை சரிசெய்கிறது. டி.வி அல்லது மொபைல் ஃபோனாக இருந்தாலும், இப்போது காட்சி சாதனங்களில் பெரும்பாலானவை பிரகாசத்தை தானாக சரிசெய்ய உள்ளே சுற்றுப்புற ஒளி சென்சார் வைத்திருக்கின்றன. இன்று இந்த டுடோரியலில், இதுபோன்ற ஒரு சென்சார் பிஹெச் 1750 லைட் சென்சார் தொகுதியைப் பயன்படுத்துவோம், அதை அர்டுயினோவுடன் இடைமுகப்படுத்தி 16x2 எல்சிடிக்கு மேல் லக்ஸ் மதிப்பைக் காண்பிப்போம்.
BH1750 டிஜிட்டல் லைட் சென்சார் தொகுதிக்கான அறிமுகம்
BH1750 என்பது ஒரு டிஜிட்டல் சுற்றுப்புற ஒளி சென்சார் அல்லது ஒளி அடர்த்தி சென்சார் ஆகும், இது மொபைல்கள், எல்சிடி டிஸ்ப்ளேக்களில் காட்சியின் பிரகாசத்தை தானாக சரிசெய்ய அல்லது வெளிப்புற லைட்டிங் நிலைமைகளின் அடிப்படையில் கார்களில் ஹெட்லைட்களை இயக்க / அணைக்க பயன்படுகிறது.
சென்சார் I 2 C சீரியல் கம்யூனிகேஷன் புரோட்டோகால் பயன்படுத்துகிறது, இது மைக்ரோகண்ட்ரோலர்களுடன் பயன்படுத்துவதை எளிதாக்குகிறது. I2C தகவல்தொடர்புக்கு இது SDI மற்றும் SDA ஊசிகளைக் கொண்டுள்ளது. BH1750 வெளிச்சம் சென்சார் பின்அவுட் கீழே தரப்பட்டுள்ளது:

இந்த சென்சாரின் வெளியீடு LUX (lx) இல் உள்ளது, எனவே இதற்கு மேலும் கணக்கீடுகள் தேவையில்லை. ஒளி தீவிரத்தை அளவிட அலகு லக்ஸ் ஆகும். இது ஒரு குறிப்பிட்ட பகுதியில் ஒளியைத் தாக்கும் அளவிற்கு ஏற்ப தீவிரத்தை அளவிடுகிறது. ஒரு லக்ஸ் ஒரு சதுர மீட்டருக்கு ஒரு லுமனுக்கு சமம்.
சென்சார் 2.4V முதல் 3.6V (பொதுவாக 3.0V) வரை மின்னழுத்தங்களில் இயங்குகிறது மற்றும் இது 0.12mA மின்னோட்டத்தை பயன்படுத்துகிறது. இந்த சென்சார் பரந்த அளவிலான மற்றும் உயர் தெளிவுத்திறனைக் கொண்டுள்ளது (1-65535lx) மற்றும் கூடுதலாக, அளவீட்டு மாறுபாடும் சிறியது (சுமார் +/- 20%). இது எந்த வெளிப்புற கூறுகளும் இல்லாமல் சுயாதீனமாக வேலை செய்ய முடியும்.
எல்.டி.ஆர் சென்சார் லைட்டிங் நிலைமைகளின் அடிப்படையில் சாதனங்களைக் கட்டுப்படுத்தவும் பயன்படுத்தப்படலாம், ஆனால் அது துல்லியமாக இல்லை. பல ஒளி கட்டுப்பாட்டு பயன்பாடுகளை உருவாக்க எல்.டி.ஆர் சென்சார் பயன்படுத்தினோம்:
- எல்.டி.ஆரைப் பயன்படுத்தி அர்டுயினோ லைட் சென்சார் சர்க்யூட்
- எல்.டி.ஆர் மற்றும் 555 டைமர் ஐ.சி.யைப் பயன்படுத்தி டார்க் டிடெக்டர்
- ஒளியைக் கண்டறிய எளிய எல்.டி.ஆர் சுற்று
- RGB LED மற்றும் LDR ஐப் பயன்படுத்தி Arduino கலர் கலவை விளக்கு
அர்டுயினோ
BH1750 லைட் சென்சாரை Arduino உடன் இணைப்பதற்கான சுற்று வரைபடம் கீழே காட்டப்பட்டுள்ளது.

I2C தகவல்தொடர்பு ஊசிகளான BH1750 இன் SDA மற்றும் SCL ஆகியவை முறையே I 2 C தகவல்தொடர்புக்கு Arduino pin A4 மற்றும் A5 உடன் இணைக்கப்பட்டுள்ளன. சென்சாருக்கான இயக்க மின்னழுத்தம் 3.3v என்பது எங்களுக்குத் தெரியும், எனவே BH1750 இன் VCC மற்றும் GND ஆகியவை 3.3V மற்றும் Arduino இன் GND உடன் இணைக்கப்பட்டுள்ளன. எல்சிடியைப் பொறுத்தவரை, தரவு ஊசிகளும் (டி 4-டி 7) டிஜிட்டல் ஊசிகளான அர்டுயினோவின் டி 2-டி 5 உடன் இணைக்கப்பட்டுள்ளன மற்றும் ஆர்எஸ் மற்றும் ஈஎன் ஊசிகளும் அர்டுயினோவின் டி 6 மற்றும் டி 7 உடன் இணைக்கப்பட்டுள்ளன. எல்சிடியின் வி 0 பானையுடன் இணைக்கப்பட்டுள்ளது மற்றும் எல்சிடியின் பிரகாசத்தைக் கட்டுப்படுத்த 10 கே பானை பயன்படுத்தப்படுகிறது.

BH1750 லைட் சென்சார் இடைமுகப்படுத்துவதற்கான புரோகிராமிங் Arduino
Arduino உடன் இந்த LUX சென்சார் பயன்படுத்துவதற்கான நிரலாக்க பகுதி மிகவும் எளிதானது. இந்த சென்சாருக்கு ஒரு நூலகம் கிடைத்தாலும், அது இல்லாமல் நாமும் பயன்படுத்தலாம்.
முதலாவதாக, எல்சிடி மற்றும் ஐ 2 சி நெறிமுறைக்கான தலைப்பு கோப்புகளை சேர்த்துள்ளோம்.
#சேர்க்கிறது
இல் அமைப்பு செயல்பாடு, நாம் எல்சிடி மற்றும் சென்சார் இருவரும் துவக்கப்படும் மற்றும் LCD இல் திறப்பு செய்தியை அச்சிடப்பட்ட நான்.
void setup () { Wire.begin (); lcd.begin (16,2); lcd.print ("BH1750 ஒளி"); lcd.setCursor (0,1); lcd.print ("தீவிர சென்சார்"); தாமதம் (2000); }
இங்கே BH1750_Read மற்றும் BH1750_Init செயல்பாடுகள் முறையே லக்ஸ் மதிப்புகளைப் படிக்கவும் எழுதவும் பயன்படுத்தப்படுகின்றன. Wire.beginTransmission () செயல்பாடு ஒலிபரப்பு தொடங்க பயன்படுத்தப்படுகிறது மற்றும் Wire.requestFrom (முகவரி, 2) செயல்பாடு 2 பதிவேடுகளை எண்ணை குறிக்கிறது எங்கே பதிவேடுகளை படிக்க பயன்படுத்தப்படுகிறது.
மேலும் Wire.endTransmission () பரிமாற்றத்தை முடிக்கப் பயன்படுகிறது மற்றும் Wire.write () செயல்பாடு அந்த பதிவேட்டின் முகவரியை உள்ளிட்டு விரும்பிய பதிவேட்டில் செல்ல பயன்படுகிறது.
int BH1750_Read (int முகவரி) { int i = 0; Wire.beginTransmission (முகவரி); Wire.requestFrom (முகவரி, 2); போது (Wire.available ()) { buff = Wire.read (); i ++; } வயர்.இன்ட் டிரான்ஸ்மிஷன் (); திரும்ப நான்; } வெற்றிடத்தை BH1750_Init (முழு எண்ணாக முகவரி) { Wire.beginTransmission (முகவரி); வயர்.ரைட் (0x10); வயர்.இன்ட் டிரான்ஸ்மிஷன் (); }
இல் லூப் செயல்பாடு, நாம் உள்ளன எல்சிடி மீது உண்மையான நேரம் லக்ஸ் மதிப்புகள் அச்சிடும். முதலில் BH1750_Read செயல்பாட்டிலிருந்து திரும்பும் மதிப்பை 2 உடன் ஒப்பிட்டு, பின்னர் 2 க்கு சமமாக இருந்தால் லக்ஸ் மதிப்புகளை அச்சிடத் தொடங்குங்கள். இங்கே மதிப்புகள் 2 உடன் ஒப்பிடப்படுகின்றன, ஏனெனில் BH1750_Read செயல்பாடு பதிவு எண்ணிக்கையின் மதிப்பைத் தருகிறது, நாங்கள் 2 பதிவேடுகளை மட்டுமே படிக்கிறோம். எனவே இது 2 ஐ அடையும் போது, நிரல் ஒளி தீவிரத்தின் LUX மதிப்புகளை அச்சிடத் தொடங்குகிறது.
இரண்டு பதிவுகளிலிருந்தும் மதிப்புகளைப் பெறவும், அவற்றை 1.2 ஆல் வகுக்கவும் ஒரு சூத்திரம் பயன்படுத்தப்படுகிறது, இது அளவீட்டு துல்லியம்.
void loop () { int i; uint16_t மதிப்பு = 0; BH1750_Init (BH1750address); தாமதம் (200); if (2 == BH1750_Read (BH1750address)) { மதிப்பு = ((பஃப் << 8) -பஃப்) / 1.2; lcd.clear (); lcd.print ("LUX இல் தீவிரம்"); lcd.setCursor (6,1); lcd.print (மதிப்பு); } தாமதம் (150); }
இறுதியாக Arduino ஐ அதிகப்படுத்தி நிரலை Arduino இல் பதிவேற்றவும். நிரல் பதிவேற்றப்பட்டவுடன் எல்சிடி LUX அலகுகளில் ஒளி தீவிரத்தைக் காட்டத் தொடங்குகிறது. கீழேயுள்ள வீடியோவில் காட்டப்பட்டுள்ளபடி சென்சாரைச் சுற்றியுள்ள ஒளி தீவிரத்தை மாற்றுவதன் மூலமும் நீங்கள் மதிப்புகளை மாற்றலாம்.
