|
|
![]() Á¦¸ñ : TSL2561 Low power, digital luminosity (light) sensor ÂüÁ¶ : http://www.adafruit.com/products/439 Áß±¹»ê Àú°¡ Á¶µµ°è¸¦ »ç¿ëÇÏ°í °è½Å°¡¿ä? ¾Æ¸¶ ÀÌ ¼¾¼ÀÇ ¼º´ÉÀÌ ´õ ÁÁÀ» °Ì´Ï´Ù. !!! ![]() ±Ô°Ý : ¡Ü »ç¶÷ÀÇ ´«¿¡ ±ÙÁ¢Çϴ Ư¼º ¡Ü ÁÖÀ§Á¶¸íÀÇ Á¶µµ¸¦ Á¤¹ÐÇÏ°Ô ÃøÁ¤ ¡Ü ÀÛµ¿¿Âµµ ¹üÀ§: -30 ¿¡¼ 80 C ±îÁö ¡Ü Á¶µµÃøÁ¤ ¹üÀ§ : 0.1 ¿¡¼ 40,000 Lux ±îÁö ¡Ü ÀÛµ¿Àü¾Ð ¹üÀ§: 2.7 - 3.6V ¡Ü ¿¬°á¹æ½Ä (Interface) : I2C ¡Ü Àú¼Òºñ Àü·Â : 0.75 mW ¡Ü 50 ȤÀº 60 Hz ºûÀÇ ¸®ÇÃÀ» ÀÚµ¿À¸·Î Á¦°Å ¡Ü ¼¾¼ ÁöÇâ°¢ : 60 µµ (Áß½ÉÃà¿¡¼ ¡¾60 µµÀÇ ºûÀ» °ËÃâ) ¡Ü TSL2561 Á¶µµ¼¾¼ÀÇ ÀÚ·á : http://www.adafruit.com/datasheets/TSL2561.pdf ¼¾¼ÀÇ ¼³¸í : TSL2561 Á¶µµ ¼¾¼´Â ³ÐÀº ¹üÀ§ÀÇ Á¶¸í ȯ°æ¿¡¼ »ç¿ëÇÏ´Â Çâ»óµÈ µðÁöÅÐ °¨±¤ ¼¾¼ÀÌ´Ù. Àú°¡°ÝÀÇ CdS ¼¿°ú ºñ±³ÇÑ´Ù¸é, ÀÌ ¼¾¼´Â ´õ Á¤¹ÐÇϸ鼵µ, 0.1 - 40,000+ Lux ¹üÀ§¿¡¼, Áï½Ã ´Ù¸¥ °¨µµÀÇ °¨±¤ ¹üÀ§·Î Á¶µµ¸¦ ÃßÃâÇϰųª ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¼¾¼ÀÇ Áß¿äÇÑ ºÎºÐÀº Àû¿Ü¼± ¿µ¿ª°ú °¡½Ã±¤¼±+Àû¿Ü¼± ¿µ¿ªÀ» °¨ÁöÇÏ´Â µÎ°³ÀÇ °¨±¤ ´ÙÀÌ¿Àµå·Î, ±¤ÇÐÇÊÅͰ¡ ÀåÂøµÈ Àû¿Ü¼± ¿µ¿ª°ú Àû¿Ü¼±+ °¡½Ã±¤¼± ¿µ¿ª¿ªÀ» ºÐ¸®ÇÏ¿© ÃøÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¤°ËÃâ ¼¾¼´Â Àΰ£ÀÇ ´«À¸·Î´Â º¼ ¼ö ¾ø´Â ºûÀÌ¶óµµ ¹Ýº¹Çؼ Á¤¹ÐÇÏ°Ô ºûÀ» °ËÃâÇÕ´Ï´Ù. ![]() ¼¾¼´Â °¡½Ã±¤¼±°ú ±ÙÀû¿Ü¼± ¿µ¿ªÀ» Æ÷ÇÔÇÏ´Â Àü¿µ¿ª ä³Î 0 ¿Í Àû¿Ü¼± ¿µ¿ªÀ» °ËÃâÇϴ ä³Î 1 , 2°³ÀÇ ±¤°ËÃâ ´ÙÀÌ¿Àµå¸¦ ³»ÀåÇϰí ÀÖ½À´Ï´Ù. °¢°¢ÀÇ ±¤°ËÃâ ä³ÎÀº µ¶¸³ÀûÀ¸·Î ÀÛµ¿ÇÕ´Ï´Ù. °¡½Ã±¤¼± ¿µ¿ªÀÇ ±¤ °ËÃâ°ªÀº Àü¿µ¿ª °ËÃâ°ª¿¡¼ Àû¿Ü¼± ¿µ¿ª °ËÃâ°ªÀ» °¨»êÇÏ¿© °è»êÇÕ´Ï´Ù. ¼¾¼´Â µðÁöÅÐ I2C Á¦¾î BUS·Î ¼¾¼¸¦ 3°³ ±îÁö I2C ÁÖ¼Ò·Î ºÐ¸®ÇÏ¿© ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼¾¼¿¡ ³»ÀåµÈ ADC´Â MPU¿¡ ¾Æ³¯·Î±× ÀÔ·ÂÀÌ ¾ø¾îµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. º¯È¯½Ã°£Àº 100 ms ~400 msÀ¸·Î ³»Àå¹ßÁø Á֯ļö 735KHz ÀûºÐ Field RegisterÀÇ ¼³Á¤°ª¿¡ µû¶ó Ʋ·ÁÁý´Ï´Ù. Field value 00: ÀûºÐ½Ã°£ Tint = (11 ¡¿ 918)/fosc = 13.7 ms, ÀûºÐ½Ã°£ Scaling 11/322 = 0.034 Field value 01: ÀûºÐ½Ã°£ Tint = (81 ¡¿ 918)/fosc = 101 ms, ÀûºÐ½Ã°£ Scaling 81/322 = 0.252 Field value 10: ÀûºÐ½Ã°£ Tint = (322 ¡¿ 918)/fosc = 402 ms, ÀûºÐ½Ã°£ Scaling 322/322 = 1 ³»ºÎ ADCÀÇ ºÐÇØ´É(Resolution)Àº 16 ºñÆ®, ÃÖ´ëÃøÁ¤°ª(Full Sscale)Àº 65535, ÀûºÐ½Ã°£(Tint)´Â 178ms ÀÔ´Ï´Ù. ÃÖÁ¾°Ë»ç¿¡¼ 640nm(ÆÄÀåºÐÆ÷ 1/2 =17 nm)ÀÇ Àû»ö LED¿Í 940nm(ÆÄÀåºÐÆ÷ 1/2 =40nm)ÀÇ IR-LED·Î °Ë»çÇÕ´Ï´Ù. 0.5mAÀÇ ³·Àº ÀÛµ¿Àü·ù¿Í 15uAÀÇ ÀÛµ¿ÁßÁö »óÅ´ Àú ¼ÒºñÀü·ÂÀÇ ÀÚ·áÀúÀå(data logger)¿¡ ÁÁ½À´Ï´Ù. TSL2561 Register TSL2561ÀÇ ¿¬°á¹æ¹ý ¼¾¼´Â »§ÆÇ¿¡ Á¶¸³ÇÒ ¼ö ÀÖ´Â 6ÇÉ Ä¿³ØÅÍ¿Í ÇÔ²² ¹ß¼ÛÇϹǷΠ½±°Ô ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ªÀº ÇÉÀÌ À§·Î, ±ä ÇÉÀÌ ¾Æ·¡·Î °¡µµ·Ï ¼¾¼±âÆÇ¿¡ Á¶¸³ÇÏ¸é »§ÆÇ¿¡ ½±°Ô ²ÅÀ» ¼ö ÀÖ½À´Ï´Ù. Ä¿³ØÅ͸¦ ¹Ø¿¡ ³õ°í ¼¾¼°¡ À§·Î ÇâÇÏ°Ô ±âÆÇÀ» »§ÆÇ¿¡ ³õ°í, ±âÆÇ ÀÂÊ¿¡¼ 6°³ÀÇ ÆÐµå¸¦ ³³¶«ÇÕ´Ï´Ù. ´ÙÀ½Àº ¾ÆµàÀÌ³ë ±âÆÇ¿¡ ¿¬°áÇØ¾ß ÇÕ´Ï´Ù. ![]() ¿ì¸®´Â À̹ø¿¡ ¾ÆµàÀ̳븦 »ç¿ëÇÒ °ÍÀÔ´Ï´Ù. ±×·¯³ª °¡±îÀÌ¿¡ ÀÖ´Â ¾î¶² MPUµµ ÀÌ Äڵ带 Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼¾¼ÀÇ VCC ÇÉÀ» 3V3 ÇÉ¿¡ ¿¬°áÇÕ´Ï´Ù. ¼¾¼¿¡ 3.3V º¸´Ù ³ôÀº 5V VCC¸¦ °ø±ÞÇÏÁö ¸¶¼¼¿ä. ¼¾¼ÀÇ GND ÇÉÀº GND·Î ¿¬°áÇÕ´Ï´Ù. ¼¾¼ÀÇ I2C SCL ÇÉÀ» A5 (SCL) ÇÉ¿¡ ¿¬°áÇÕ´Ï´Ù. ¼¾¼ÀÇ I2C SDA ÇÉÀ» A4 (SDA) ÇÉ¿¡ ¿¬°áÇÕ´Ï´Ù. °ÅÀÇ ¸ðµç MPUÀÇ I2C Æ÷Æ®´Â Ưº°È÷ Á¤ÇÑ ÇÉÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. 3.3VÀÇ TSL2561ÀÇ µ¥ÀÌÅÍ ÇÉÀ» ¾î¶»°Ô 5VÀÇ ¾ÆµàÀ̳뿡 ¿¬°áÇØµµ ÁÁÀº°¡? ÀÌ °æ¿ì´Â OK ÀÔ´Ï´Ù. I2C ¹ö½ºÀÇ 10K Ç®¾÷ÀúÇ×ÀÌ 3.3V¿¡ ¿¬°áµÇ¾î ÀÖÀ¸¹Ç·Î, ½ÇÁ¦ µ¥ÀÌÅÍ ·¹º§Àº 3.3V ÀÔ´Ï´Ù. ¼¾¼¿Í ÀåÄ¡´Â ¿À·£ ½Ã°£ 3.3V Àü¿øÀ¸·Î I2C¸¦ »ç¿ëÇØµµ Àß µË´Ï´Ù. ±×·¯³ª I2C ÀåÄ¡¸¦ 5V·Î Ç®¾÷Çϰųª 5V¸¦ ¼¾¼Àü¿øÀ¸·Î »ç¿ëÇÏÁö ¸¶¼¼¿ä. ¸¸ÀÏ DS1307°ú ÇÔ²² »ç¿ëÇÏ·Á¸é DS1307ÀÇ SDA/SDL¿¡ ¿¬°áµÈ Ç®¾÷ÀúÇ×À» ¸ðµÎ Á¦°ÅÇØ¾ß ÇÕ´Ï´Ù. TSL2561¿¡ ¿¬°áµÈ 3.3VÀÇ Ç®¾÷À» °ø¿ëÀ¸·Î 2°³ÀÇ ¼¾¼¿¡ ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ADDR (i2c address change) ȤÀº INT (interrupt output) ÇÉÀº ¿¬°áÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ADDR ÇÉÀº I2C ÁÖ¼Ò°¡ Ãæµ¹ÇÑ °æ¿ì¿¡¸¸ ÁÖ¼Ò¸¦ º¯°æÇÕ´Ï´Ù. ADDR ÇÉÀ» GND·Î ¿¬°áÇϸé I2C ÁÖ¼Ò°¡ 0x29·Î °áÁ¤(set) µË´Ï´Ù. ADDR ÇÉÀ» 3V3À¸·Î ¿¬°áÇϸé I2C ÁÖ¼Ò°¡ 0x49·Î °áÁ¤(set) µË´Ï´Ù. ȤÀº ¿¬°áÇÏÁö ¾Ê°í ºÎµ¿(float)½Ã۸é I2c ÁÖ¼Ò´Â 0x39·Î °áÁ¤(set) µË´Ï´Ù. INT ÇÉÀº °¨±¤ ·¹º§ÀÌ º¯ÈÇϸé INT¸¦ Ãâ·ÂÇϵµ·Ï ¼³Á¤Çß´Ù¸é ¼¾¼·Î ºÎÅÍÀÇ INT ½ÅÈ£°¡ Ãâ·ÂµË´Ï´Ù. INT´Â »óÇѹ®Åΰú ÇÏÇѹ®ÅÎ °ªÀ» ¼³Á¤Çϰí, ÃøÁ¤°ªÀÌ ¹®ÅΰªÀ» ³ÑÀ¸¸é ½ÅÈ£°¡ ¹ß»ýµË´Ï´Ù. ¿ì¸®ÀÇ À̹ø ¿¹Á¦¿¡´Â ÀÌ Äڵ尡 ¾ø½À´Ï´Ù. À̰ÍÀ» ¾²Áö ¾Ê´Â ´Ù¸é, ¼¾¼ÀÇ ¿¬°áÀº À̰ÍÀ¸·Î ³¡³µ½À´Ï´Ù. INT Çɰú 3.3V ÇÉ »çÀÌ¿¡´Â 10K-100K Ç®¾÷ ÀúÇ×À» »ç¿ëÇÕ´Ï´Ù. Áö±Ý±îÁö TSL2561 Á¶µµ¼¾¼¸¦ ¾ÆµàÀ̳ë MPU ±âÆÇÀ¸·Î ¿¬°áÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇß½À´Ï´Ù. ´ÙÀ½Àº ¼¾¼¿¡¼ ÀÐÀº °ªÀ» Á¶µµ·Î °è»êÇÏ´Â ¿¹Á¦ ¼Ò½º¸¦ ¼³¸íÇÒ °ÍÀÔ´Ï´Ù. TSL2561 ¶óÀ̺귯¸® ¡Ü ¾ÆµàÀÌ³ë ¶óÀ̺귯¸® : https://github.com/adafruit/TSL2561-Arduino-Library ȤÀº ÷ºÎÆÄÀÏ #1À» ¹Þ¾Æ¼ ¾ÐÃàÀ» Ç®¸é TLS2561 Æú´õ¿Í TSL2561.pde°¡ ³ª¿É´Ï´Ù. TSL2561 Æú´õ ¾È¿¡´Â TSL2561.cpp ¿Í TSL2561.h °¡ µé¾î ÀÖ½À´Ï´Ù. TSL2561 Æú´õ Àüü¸¦ PCÀÇ arduino-0022 -> libraries -> ¾È¿¡ Åë°·Î ³Ö¾î ÁÝ´Ï´Ù. Arduino-0022 IDE¸¦ ´Ù½Ã ½ÇÇàÇϸé Import Library¿¡ TSL2561ÀÌ µî·ÏµÇ¾î ÀÖ½À´Ï´Ù. ¾ÆµàÀÌ³ë ¼Ò½º ÷ºÎÆÄÀÏ #1¿¡ µé¾î ÀÖ´Â TSL2561.pde¸¦ ¾ÆµàÀÌ³ë ½ºÄÏÄ¡¿¡¼ ¼Ò½º·Î »ç¿ëÇÕ´Ï´Ù. ¿¹Á¦ ÇÁ·Î±×·¥Àº ÀÐÀº °ªÀ» Á¶µµ(lux)·Î °è»êÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. ÃøÁ¤°ªÀ» º¸·Á¸é Á÷·Ä ¸ð´ÏÅ͸¦ 9600 bps·Î ¿¾î¾ß ÇÕ´Ï´Ù. ÃøÁ¤ °ªÀÌ ¹Ù²î´Â °ÍÀ» º¸·Á¸é ·¥ÇÁ¸¦ »ç¿ëÇϰųª ¼ÕÀ¸·Î ¼¾¼¸¦ °¡·Á ÁÝ´Ï´Ù. ![]() ¼Ò½ºÄÚµåÀÇ Ã¹¹øÂ° ºÎºÐÀº Çã¿ëµÈ ADDR ÇÉÀÇ Á¤ÀÇÀÌ´Ù. Àü¼±À¸·Î ¿¬°áÇØ¾ß ÇÑ´Ù // ¼¾¼ÀÇ ÁÖ¼Ò´Â ADDR ÇÉÀ» »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ÀÇÁ¸µÈ´Ù. // ADDR ÇÉÀ» Á¢Áö(gnd)¿Í ¿¬°áÇϸé 0x29, // ¿¬°áÇÏÁö ¾Ê°í ³î¸®¸é(float) ÁÖ¼Ò´Â 0x39, // 1°³ÀÇ ¼¾¼´Â À̰ÍÀ» »ç¿ëÇÑ´Ù. // 3V3 Àü¿ø¿¡ ¿¬°áÇϸé 0x49 ÀÌ´Ù. TSL2561 tsl(TSL2561_ADDR_FLOAT); // ¼¾¼ÀÇ ÁÖ¼Ò¸¦ »ý¼ºÇϵµ·Ï Á¤ÀÇÇØ¾ß ÇÑ´Ù. °¨µµ(gian) 0 (ÁõÆøÀÌ ¾ø´Ù, ³·Àº ¹à±â¿¡ ÁÁ´Ù)À¸·Î ÇϵçÁö, ȤÀº 16 (¾îµÎ¿î »óȲ¿¡¼ °¨µµ¸¦ ¿Ã¸° »óÅÂ)À¸·Î ÇϵçÁö ¼¾¼ÀÇ °¨µµ¿Í ÀûºÐ½Ã°£À» ¿øÇϴ´ë·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. // ¹à°Å³ª ¾îµÎ¿î »óȲ¿¡ ÀûÀÀÇϱâ À§ÇØ °¨µµ¸¦ ¹Ù²ãÄ¡±â(on the fly)ÇÒ ¼ö ÀÖ´Ù. // tsl.setGain(TSL2561_GAIN_0X); // °¨µµ 0 (¹àÀº ºû »óȲ) tsl.setGain(TSL2561_GAIN_16X); // °¨µµ 16 (¾îµÎ¿î ºû »óȲ), ¿ì¼± À̰ÍÀ» »ç¿ëÇÑ´Ù. ±×¸®°í ÀûºÐ½Ã°£µµ ¹Ù²Ü ¼ö ÀÖ´Ù. À̰ÍÀº ¾ó¸¶³ª ¿À·¡µ¿¾È ºûÀÇ ÃøÁ¤°ªÀ» ¸ðÀ¸´Â°¡ ÀÌ´Ù. ±ä ¸ðÁý ½Ã°£Àº ¸¹Àº ºûÀ» °ËÃâÇÒ °ÍÀÌ´Ù. ¸¸ÀÏ ¹àÀº ºûÀ̶ó¸é ÀûºÐ½Ã°£À» 13 ms·Î ¼³Á¤Ç϶ó. ¸¸ÀÏ ¾îµÎ¿î ºûÀ̶ó¸é 101 msÀ¸·Î ¼³Á¤Çϰí, ¸Å¿ì ¾îµÎ¿î ºûÀ̶ó¸é 402 msÀ¸·Î ¼³Á¤Ç϶ó. // °ËÃâ ºûÀ» ±ä½Ã°£ ÀûºÐÇϱâ À§Çؼ ÀûºÐ½Ã°£À» ¹Ù²Ü ¼ö ÀÖ´Ù. // ±ä ½Ã°£Àº ´Ê´Ù. ±×·¯³ª ¾îµÎ¿î »óȲ¿¡¼ ºûÀÇ °¨µµ°¡ ¸Å¿ì ÁÁ´Ù. tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS); // ªÀº ÀûºÐ ½Ã°£ (¹àÀº ºû), ¿ì¼± À̰ÍÀ» »ç¿ëÇÑ´Ù. // tsl.setTiming(TSL2561_INTEGRATIONTIME_101MS); // Áß°£ ÀûºÐ ½Ã°£ (Áß°£ ºû) // tsl.setTiming(TSL2561_INTEGRATIONTIME_402MS); // ±ä ÀûºÐ ½Ã°£ (¾îµÎ¿î ºû) ¾î¶² Á¾·ùÀÇ ºûÀ» °ËÃâÇÒ °ÍÀÎÁö ¹Ù²Ü ¼ö ÀÖ´Ù. ¼¾¼¿¡´Â 2°³ÀÇ ´ÙÀÌ¿Àµå°¡ ÀÖ´Ù. Çϳª´Â Àü¿µ¿ª ¶Ç Çϳª´Â Àû¿Ü¼±ÀÌ´Ù. Çϳª ¸¸ ÃøÁ¤ÇϵçÁö Àü¿µ¿ª °¡½Ã±¤¼± °ª¿¡¼ Àû¿Ü¼± ¿µ¿ª °ªÀ» °¨»êÇØ¼ ÃøÁ¤ÇÒ ¼ö ÀÖ´Ù. ÃøÁ¤ÀÌ ÁغñµÇ¾úÀ» ¶§, 3°³ÀÇ ¿É¼ÇÀ¸·Î getLuminosity ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ÃøÁ¤ÇÒ ¼ö ÀÖ´Ù. TSL2561_VISIBLE, TSL2561_INFRARED, TSL2561_FULLSPECTRUM. ¸¸ÀÏ °¡½Ã¿µ¿ªÀ» ¼±ÅÃÇϸé, 2°³ÀÇ ´ÙÀÌ¿Àµå¿¡¼ ÀÐÀº °ªÀÇ Â÷À̰¡ ÁÖ¾îÁø´Ù. // °£´ÜÇÑ µ¥ÀÌÅÍ ÀбâÀÇ ¿¹. Àû¿Ü¼± ¿µ¿ª, Àü¿µ¿ª ȤÀº °¡½Ã¿µ¿ª (2°³ÀÇ ´ÙÀÌ¿Àµå °ªÀÇ Â÷ÀÌ) // 13 - 402 ms¸¦ ¼Ò¸ðÇϸç, ¾î¶² °ÍÀÌµç ´ÙÀ½¿¡ ¿À´Â 3 °³Áß 1 °³¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù. uint16_t x = tsl.getLuminosity(TSL2561_VISIBLE); //uint16_t x = tsl.getLuminosity(TSL2561_FULLSPECTRUM); //uint16_t x = tsl.getLuminosity(TSL2561_INFRARED); ¸¸ÀÏ Á¶µµ(lux)ÀÇ °è»êÀ» ¿øÇϸé, °°Àº ½Ã°£¿¡ ¸ðµÎ¸¦ ÀÐ°Ô µÈ´Ù. ´ÙÀ½ ÄÚµåÀÇ ¿¹¸¦ »ç¿ëÇÑ´Ù. °¢°¢ 16 ºñÆ®¸¦ 32 ºñÆ®·Î ÆòȰ(smoothing)ÇÑ´Ù. Àü¿µ¿ª ºûÀ» ÃøÁ¤ÇÒ ¶§, Á¶µµ(lux) °è»êÀÇ ÇÏÀ§ÇÔ¼ö´Â ¶óÀ̺귯¸®¿¡ µé¾î ÀÖÀ¸¹Ç·Î »ý·«ÇÒ ¼ö ÀÖ´Ù. // ´õ¿í ¹ßÀüµÈ µ¥ÀÌÅÍ ÀбâÀÇ ¿¹·Î 16 ºñÆ® Àû¿Ü¼± ¿µ¿ª°ú 16 ºñÆ® Àü¿µ¿ªÀ» 32 ºñÆ®·Î Àд´Ù. // ÀÌ ¹æ¹ýÀº ´ç½ÅÀÌ ¿øÇϴ´ë·Î °è»êÇϵçÁö ºñ±³ÇÒ ¼ö ÀÖ´Ù. uint32_t lum = tsl.getFullLuminosity(); // Àü¿µ¿ª °ªÀ» 32 ºñÆ® º¯¼ö·Î ¼³Á¤ÇÏ°í ¹à±â¸¦ ÃøÁ¤ÇÑ´Ù. uint16_t ir, full; // Àû¿Ü¼± ¿µ¿ª°ú Àü¿µ¿ªÀ» ¸ðµÎ 16 ºñÆ® º¯¼ö·Î ¼³Á¤ ir = lum >> 16; // 32 ºñÆ® ÃøÁ¤°ªÀ» 16 ºñÆ®·Î ³ª´©°í 16 ºñÆ® °ªÀ¸·Î Àû¿Ü¼± °ª¿¡ ÀúÀåÇÑ´Ù. full = lum & 0xFFFF; // 32 ºñÆ® ÃøÁ¤°ªÀº ±×´ë·Î 16 ºñÆ®·Î ¸¸µé¾î Àü¿µ¿ª °ª¿¡ ÀúÀåÇÑ´Ù. Serial.print("IR: "); Serial.print(ir); Serial.print(" "); // Àû¿Ü¼± °ªÀ» Ç¥½Ã Serial.print("Full: "); Serial.print(full); Serial.print(" "); // Àü¿µ¿ª °ªÀ» Ç¥½Ã Serial.print("Visible: "); Serial.print(full - ir); Serial.print(" "); // Àü¿µ¿ª - Àû¿Ü¼± °ªÀ» Ç¥½Ã Serial.print("Lux: "); Serial.println(tsl.calculateLux(full, ir)); // Á¶µµ(lux) °ªÀ» Ç¥½Ã ¶óÀ̺귯¸®ÀÇ ¼³¸í ´ÙÀ½Àº Á¶µµ(lux)¸¦ °è»êÇÏ´Â ÇÔ¼öÀÌ´Ù. ¶óÀ̺귯¸®¿¡ ÀÖ´Â ÇÔ¼ö´Â º°µµ·Î ¸¸µéÁö ¾Ê°í, È£ÃâÇÏ¸é ½ÇÇàµÈ´Ù. uint32_t TSL2561::calculateLux(uint16_t ch0, uint16_t ch1) { // ½ÇÁ¦·Î ÃøÁ¤ÇÏÁö ¾Ê°í º¯¼ö¸¸ ¼³Á¤ÇÑ´Ù unsigned long chScale; // ¼¾¼ ADCÀÇ ÀûºÐ½Ã°£ ¼³Á¤ º¯¼ö unsigned long channel1; // Àû¿Ü¼± ¼¾¼ unsigned long channel0; // Àü¿µ¿ª ¼¾¼ switch (_integration) { case TSL2561_INTEGRATIONTIME_13MS: // ÀûºÐ½Ã°£ÀÌ 13 ms ÀÌ¸é ¿©±â¸¦ ½ÇÇà chScale = TSL2561_LUX_CHSCALE_TINT0; break; case TSL2561_INTEGRATIONTIME_101MS: // ÀûºÐ½Ã°£ÀÌ 101 ms ÀÌ¸é ¿©±â¸¦ ½ÇÇà chScale = TSL2561_LUX_CHSCALE_TINT1; break; default: // No scaling ... integration time = 402ms chScale = (1 << TSL2561_LUX_CHSCALE); // ÀûºÐ½Ã°£ÀÌ 402 ms ÀÌ¸é ¿©±â¸¦ ½ÇÇà break; } ÁÖÇÔ¼ö¿¡¼ °¨µµ¸¦ ¼³Á¤ÇÏ¸é ¶óÀ̺귯¸®ÀÇ ÀÌ ºÎºÐÀÌ ½ÇÇàµÈ´Ù. // Scale for gain (1x or 16x) ¼¾¼ÀÇ °¨µµ¸¦ ¼³Á¤ if (!_gain) chScale = chScale << 4; // scale the channel values ¼¾¼ÀÇ ¹üÀ§¸¦ ¼³Á¤ channel0 = (ch0 * chScale) >> TSL2561_LUX_CHSCALE; // Àü¿µ¿ª ÃøÁ¤ ä³Î channel1 = (ch1 * chScale) >> TSL2561_LUX_CHSCALE; // Àû¿Ü¿µ¿ª ÃøÁ¤ ä³Î // find the ratio of the channel values (Channel1/Channel0) // ¼¾¼ ä³ÎÀÇ ºñ·Ê»ó¼ö(ratio)¸¦ ¼³Á¤ unsigned long ratio1 = 0; if (channel0 != 0) ratio1 = (channel1 << (TSL2561_LUX_RATIOSCALE+1)) / channel0; unsigned long ratio = (ratio1 + 1) >> 1; // ºñ·Ê»ó¼ö °ªÀ» round ¿¬»êÇÑ´Ù. °á·Ð ADC°¡ ³»ÀåµÈ ½º¸¶Æ® ¼¾¼µéÀº º¹ÀâÇÑ ¾Æ³¯·Î±× ÁõÆø±â¿Í Á¤¹ÐÇÑ ADC°¡ ÇÊ¿ä¾øÀ¸¹Ç·Î, MPU¿¡¼ 16 ºñÆ® ºÐÇØ´ÉÀ¸·Î ÃøÁ¤°ªÀ» ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡ ±³Á¤µÈ LUX °ªÀ¸·Î º¯È¯µµ °¡´ÉÇÕ´Ï´Ù. ¹°·Ð ½ÃÆÇ¿ëÀ¸·Î ¸¸µç´Ù¸é ¹ýÁ¤ ÀÎÁõ°Ë»ç±â°üÀÇ °Ë±³Á¤À» ¹Þ¾Æ¾ß ÇÏÁö¸¸,,, ÀÌ Á¤µµ·Îµµ ½Ç¿ëÀûÀÔ´Ï´Ù. LED Á¦Ç°À» »ý»êÇÏ´Â Á¦Á¶¾÷ü¿¡¼ ¹Ì¸® ÀÎÁõµÈ ÃøÁ¤±â·Î 2Â÷ ±³Á¤Çϸé, »ý»êÁ¦Ç°ÀÇ °Ë»ç¿¡ »ç¿ëÀÌ °¡´ÉÇÕ´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¹«·á ¼ÒÇÁÆ®¿þ¾î·Î, ½Åü¿Í Àç»ê »óÀÇ ¾î¶² À§Çè°ú ¼ÕÇØ¸¦ º¸»óÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº GNU ¹«·á ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷±ÔÁ¤À» µû¸¨´Ï´Ù. Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA ![]() |
![]() ![]() ![]() | ![]() |
![]() |