مقدمه
اگر به حسگرها علاقهمند باشید، حتماً با سنسورهای تشخیص فاصله آشنا هستید. برای تشخیص فاصله، سنسورهای مختلفی با روشهای اندازهگیری متفاوت وجود دارند؛ هر کدام با تواناییها و محدودیتهای خاص خود.
یکی از روشهای اندازهگیری فاصله، استفاده از فرستنده و گیرنده مادون قرمز است. این سنسورها فاصله زمانی بین رفت و برگشت اشعه مادون قرمز را اندازهگیری کرده و با استفاده از آن، فاصله بین سنسور و سطح مورد نظر را محاسبه میکنند.
در این آموزش، شما را با ماژول تشخیص فاصله TMD27713 آشنا خواهیم کرد. چه یک مبتدی باشید یا یک فرد باتجربه و علاقهمند به الکترونیک و آردوینو، این آموزش مطالب مفیدی را برای راهاندازی گام به گام این حسگر به شما ارائه میدهد.
آنچه در این آموزش یاد میگیرید
- آشنایی با حسگر تشخیص فاصله TMD27713
- راه اندازی سنسور TMD27713 با آردوینو و تشخیص فاصله و شدت نور محیط
آشنایی با سنسور تشخیص فاصله TMD27713
تراشه TMD27713 یک حسگر فاصلهسنج بر پایه مادون قرمز است. همچنین میتوان از گیرنده آن به عنوان سنسور سنجش نور محیط نیز استفاده کرد. این تراشه شامل یک سنسور مجاورت دیجیتال، درایور LED و IR LED است که برای از بین بردن نیاز به کالیبراسیون، در کنار هم چیده شدهاند.
این تراشه همچنین دارای سیستم حذف نور پسزمینه نیز است که به دستگاه اجازه میدهد تا در شرایط مختلف—از محیطهای باز خیلی روشن گرفته تا اتاقهای تاریک—بتواند کار کند. علاوه بر این به دلیل داشتن محدوده دینامیکی گسترده، امکان استفاده برای تشخیص فواصل کوتاه نیز وجود دارد. لازم به ذکر است که با داشتن لنزهای میکرواپتیک، انتقال و دریافت انرژی مادون قرمز بسیار کارآمدتر شده است.
میتوانید دیتاشیت ماژول TMD2771 را از این لینک دانلود کنید.
پایههای (Pinout) ماژول TMD27713
ماژول TMD27713 دارای پایههای زیر است:
ویژگیهای ماژول TMD27713
در ابتدای این بخش، با بعضی از ویژگیهای شاخص این سنسور آشنا شدید. در ادامه به بعضی از ویژگیهای دیگر این محصول به طور خلاصه اشاره میکنیم.
حسگر نور محیطی (ALS) Ambient Light Sensing :
- سرعت پاسخدهی؛ مشابه چشم انسان
- ضریب تقویت آنالوگ قابل تنظیم
- تابع وقفه قابل برنامهریزی با حد آستانه بالا و پایین
- تا 16 بیت رزولوشن
- حساسیت بسیار بالا (در پشت شیشه رنگی نیز کار میکند)
- محدوده دینامیکی تا 1000000:1
تشخیص مجاورت:
- کالیبره شده برای تشخیص 100 میلی متر
- تعداد پالسهای IR قابل تنظیم
- جریانکشی قابل تنظیم بدون نیاز به مقاومت محدودکننده جریان
- تابع وقفه قابل برنامهریزی با حد آستانه بالا و پایین
- اندازه کوچک: 3.94mm × 2.4mm × 1.35mm
لوازمی که به آن احتیاج دارید
*: از هر برد آردوینوی دیگری که دارای I2C باشد نیز میتوانید استفاده کنید.
آموزش راهاندازی ماژول TMD27713 با آردوینو
در این قسمت، نحوه اندازهگیری فاصله با استفاده از سنسور TMD27713 و آردوینو را به صورت گام به گام توضیح میدهیم.
سیمبندی
ابتدا، ماژول TMD27713 را به صورت شکل زیر به برد آردوینو متصل کنید.
کد
کد زیر را در نرمافزار Arduino IDE کپی و بر روی برد خود آپلود کنید. توضیحات کد در کنار آن به صورت کامنت ذکر شده است.
#include <Wire.h>
// TMD2771 I2C address is 39(57)
#define Addr 0x39
void setup()
{
// Initialise I2C communication as MASTER
Wire.begin();
// Initialise Serial Communication, set baud rate = 9600
Serial.begin(9600);
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x00 | 0xA0); // Select enable register
Wire.write(0x0F); // Set power on, proximity and ALS enabled
Wire.endTransmission();// Stop I2C Transmission
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x01 | 0xA0); // Select ALS time register
Wire.write(0xDB); // Atime = 101 ms
Wire.endTransmission(); // Stop I2C Transmission
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x02 | 0xA0); // Select proximity time register
Wire.write(0xFF); // Ptime = 2.72 ms
Wire.endTransmission();// Stop I2C Transmission
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x03 | 0xA0); // Select Wait time register
Wire.write(0xFF); // Wtime = 2.72 ms
Wire.endTransmission();// Stop I2C Transmission
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x0E | 0xA0); // Select pulse count register
Wire.write(0x04); // Pulse count = 4
Wire.endTransmission();// Stop I2C Transmission
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x0F | 0xA0); // Select control register
// 120 mA LED strength, Proximtiy uses CH1 diode, 1x PGAIN, 1x AGAIN
Wire.write(0x20);
Wire.endTransmission();// Stop I2C Transmission
delay(800);
}
void loop()
{
unsigned int data[6];
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x14 | 0xA0); // Select data register
Wire.endTransmission();// Stop I2C Transmission
// Request 6 bytes of data
Wire.requestFrom(Addr, 6);
// Read 6 bytes of data
// c0Data lsb, c0Data msb, c1Data lsb, c1Data msb, proximity lsb, proximity msb
if(Wire.available() == 6)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
}
// Convert the data
int c0Data = (data[1] * 256) + data[0];
int c1Data = (data[3] * 256) + data[2];
double proximity = (data[5] * 256.0) + data[4];
float CPL = (101.0) / 24.0;
float luminance1 = (1 * c0Data - 2 * c1Data) / CPL;
float luminance2 = (0.6 * c0Data - 1.00 * c1Data) / CPL;
float luminance = 0.0;
if((luminance1 > 0) && (luminance1 > luminance2))
{
luminance = luminance1;
}
else if((luminance2 > 0) && (luminance2 > luminance1))
{
luminance = luminance2;
}
// Output data to serial monitor
Serial.print("Ambient Light luminance : ");
Serial.print(luminance);
Serial.println(" lux");
Serial.print("Proximity of the device : ");
Serial.println(proximity);
delay(1000);
}
پس از آپلود کردن کد فوق، ابتدا پورت COM و نوع برد خود را انتخاب کرده، سپس Serial Monitor را باز کنید. دقت داشته باشید که بادریت باید بر روی 9600 تنظیم شده باشد.
همانطور که مشاهده میکنید دستگاه، میزان روشنایی و فاصله را در درگاه سریال به شما ارسال میکند. با دور و نزدیک کردن یک مانع، مانند دست خود به ماژول، میتوانید تغییرات فاصله را مشاهده کنید. با تنظیمات صورت گرفته در قسمت کد برای TMD27713، حداقل فاصله قابل اندازه گیری 4 سانتیمتر است.
یک گام جلوتر
در این آموزش، شما با نحوه کار با ماژول تشخیص فاصله TMD27713 آشنا شدید. اگر به دیتاشیت این حسگر مراجعه کنید، میتوانید در مورد رجیسترهایی که در کد این آموزش تنظیم کردیم اطلاعات بیشتری کسب کنید. مثلاً رجیسترهای 0x04 تا 0x0B برای تنظیم حد آستانه بالا و پایین در سیستم وقفه حسگر تشخیص فاصله و نور محیط به کار میروند. با تنظیم آنها و استفاده از پایه INT ماژول، میتوانید یک کلید خودکار بسازید که با کم یا زیاد شدن نور یا فاصله، فعال یا غیر فعال شود.
این سنسور به دلیل اندازه کوچک، در پروژههای مختلف استفاده میشود. از جمله این کاربردها میتوان به موارد زیر اشاره کرد:
- پروژههای رباتیک؛ برای تشخیص موانع
- تلفنهای همراه؛ برای خاموش کردن صفحه نمایش در هنگام صحبت کردن
- نمایشگرها؛ برای تنظیم نور پسزمینه
مقدمه
اگر به حسگرها علاقهمند باشید، حتماً با سنسورهای تشخیص فاصله آشنا هستید. برای تشخیص فاصله، سنسورهای مختلفی با روشهای اندازهگیری متفاوت وجود دارند؛ هر کدام با تواناییها و محدودیتهای خاص خود.
یکی از روشهای اندازهگیری فاصله، استفاده از فرستنده و گیرنده مادون قرمز است. این سنسورها فاصله زمانی بین رفت و برگشت اشعه مادون قرمز را اندازهگیری کرده و با استفاده از آن، فاصله بین سنسور و سطح مورد نظر را محاسبه میکنند.
در این آموزش، شما را با ماژول تشخیص فاصله TMD27713 آشنا خواهیم کرد. چه یک مبتدی باشید یا یک فرد باتجربه و علاقهمند به الکترونیک و آردوینو، این آموزش مطالب مفیدی را برای راهاندازی گام به گام این حسگر به شما ارائه میدهد.
آنچه در این آموزش یاد میگیرید
- آشنایی با حسگر تشخیص فاصله TMD27713
- راه اندازی سنسور TMD27713 با آردوینو و تشخیص فاصله و شدت نور محیط
آشنایی با سنسور تشخیص فاصله TMD27713
تراشه TMD27713 یک حسگر فاصلهسنج بر پایه مادون قرمز است. همچنین میتوان از گیرنده آن به عنوان سنسور سنجش نور محیط نیز استفاده کرد. این تراشه شامل یک سنسور مجاورت دیجیتال، درایور LED و IR LED است که برای از بین بردن نیاز به کالیبراسیون، در کنار هم چیده شدهاند.
این تراشه همچنین دارای سیستم حذف نور پسزمینه نیز است که به دستگاه اجازه میدهد تا در شرایط مختلف—از محیطهای باز خیلی روشن گرفته تا اتاقهای تاریک—بتواند کار کند. علاوه بر این به دلیل داشتن محدوده دینامیکی گسترده، امکان استفاده برای تشخیص فواصل کوتاه نیز وجود دارد. لازم به ذکر است که با داشتن لنزهای میکرواپتیک، انتقال و دریافت انرژی مادون قرمز بسیار کارآمدتر شده است.
میتوانید دیتاشیت ماژول TMD2771 را از این لینک دانلود کنید.
پایههای (Pinout) ماژول TMD27713
ماژول TMD27713 دارای پایههای زیر است:
ویژگیهای ماژول TMD27713
در ابتدای این بخش، با بعضی از ویژگیهای شاخص این سنسور آشنا شدید. در ادامه به بعضی از ویژگیهای دیگر این محصول به طور خلاصه اشاره میکنیم.
حسگر نور محیطی (ALS) Ambient Light Sensing :
- سرعت پاسخدهی؛ مشابه چشم انسان
- ضریب تقویت آنالوگ قابل تنظیم
- تابع وقفه قابل برنامهریزی با حد آستانه بالا و پایین
- تا 16 بیت رزولوشن
- حساسیت بسیار بالا (در پشت شیشه رنگی نیز کار میکند)
- محدوده دینامیکی تا 1000000:1
تشخیص مجاورت:
- کالیبره شده برای تشخیص 100 میلی متر
- تعداد پالسهای IR قابل تنظیم
- جریانکشی قابل تنظیم بدون نیاز به مقاومت محدودکننده جریان
- تابع وقفه قابل برنامهریزی با حد آستانه بالا و پایین
- اندازه کوچک: 3.94mm × 2.4mm × 1.35mm
لوازمی که به آن احتیاج دارید
*: از هر برد آردوینوی دیگری که دارای I2C باشد نیز میتوانید استفاده کنید.
آموزش راهاندازی ماژول TMD27713 با آردوینو
در این قسمت، نحوه اندازهگیری فاصله با استفاده از سنسور TMD27713 و آردوینو را به صورت گام به گام توضیح میدهیم.
سیمبندی
ابتدا، ماژول TMD27713 را به صورت شکل زیر به برد آردوینو متصل کنید.
کد
کد زیر را در نرمافزار Arduino IDE کپی و بر روی برد خود آپلود کنید. توضیحات کد در کنار آن به صورت کامنت ذکر شده است.
#include <Wire.h>
// TMD2771 I2C address is 39(57)
#define Addr 0x39
void setup()
{
// Initialise I2C communication as MASTER
Wire.begin();
// Initialise Serial Communication, set baud rate = 9600
Serial.begin(9600);
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x00 | 0xA0); // Select enable register
Wire.write(0x0F); // Set power on, proximity and ALS enabled
Wire.endTransmission();// Stop I2C Transmission
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x01 | 0xA0); // Select ALS time register
Wire.write(0xDB); // Atime = 101 ms
Wire.endTransmission(); // Stop I2C Transmission
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x02 | 0xA0); // Select proximity time register
Wire.write(0xFF); // Ptime = 2.72 ms
Wire.endTransmission();// Stop I2C Transmission
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x03 | 0xA0); // Select Wait time register
Wire.write(0xFF); // Wtime = 2.72 ms
Wire.endTransmission();// Stop I2C Transmission
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x0E | 0xA0); // Select pulse count register
Wire.write(0x04); // Pulse count = 4
Wire.endTransmission();// Stop I2C Transmission
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x0F | 0xA0); // Select control register
// 120 mA LED strength, Proximtiy uses CH1 diode, 1x PGAIN, 1x AGAIN
Wire.write(0x20);
Wire.endTransmission();// Stop I2C Transmission
delay(800);
}
void loop()
{
unsigned int data[6];
Wire.beginTransmission(Addr); // Start I2C Transmission
Wire.write(0x14 | 0xA0); // Select data register
Wire.endTransmission();// Stop I2C Transmission
// Request 6 bytes of data
Wire.requestFrom(Addr, 6);
// Read 6 bytes of data
// c0Data lsb, c0Data msb, c1Data lsb, c1Data msb, proximity lsb, proximity msb
if(Wire.available() == 6)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
}
// Convert the data
int c0Data = (data[1] * 256) + data[0];
int c1Data = (data[3] * 256) + data[2];
double proximity = (data[5] * 256.0) + data[4];
float CPL = (101.0) / 24.0;
float luminance1 = (1 * c0Data - 2 * c1Data) / CPL;
float luminance2 = (0.6 * c0Data - 1.00 * c1Data) / CPL;
float luminance = 0.0;
if((luminance1 > 0) && (luminance1 > luminance2))
{
luminance = luminance1;
}
else if((luminance2 > 0) && (luminance2 > luminance1))
{
luminance = luminance2;
}
// Output data to serial monitor
Serial.print("Ambient Light luminance : ");
Serial.print(luminance);
Serial.println(" lux");
Serial.print("Proximity of the device : ");
Serial.println(proximity);
delay(1000);
}
پس از آپلود کردن کد فوق، ابتدا پورت COM و نوع برد خود را انتخاب کرده، سپس Serial Monitor را باز کنید. دقت داشته باشید که بادریت باید بر روی 9600 تنظیم شده باشد.
همانطور که مشاهده میکنید دستگاه، میزان روشنایی و فاصله را در درگاه سریال به شما ارسال میکند. با دور و نزدیک کردن یک مانع، مانند دست خود به ماژول، میتوانید تغییرات فاصله را مشاهده کنید. با تنظیمات صورت گرفته در قسمت کد برای TMD27713، حداقل فاصله قابل اندازه گیری 4 سانتیمتر است.
یک گام جلوتر
در این آموزش، شما با نحوه کار با ماژول تشخیص فاصله TMD27713 آشنا شدید. اگر به دیتاشیت این حسگر مراجعه کنید، میتوانید در مورد رجیسترهایی که در کد این آموزش تنظیم کردیم اطلاعات بیشتری کسب کنید. مثلاً رجیسترهای 0x04 تا 0x0B برای تنظیم حد آستانه بالا و پایین در سیستم وقفه حسگر تشخیص فاصله و نور محیط به کار میروند. با تنظیم آنها و استفاده از پایه INT ماژول، میتوانید یک کلید خودکار بسازید که با کم یا زیاد شدن نور یا فاصله، فعال یا غیر فعال شود.
این سنسور به دلیل اندازه کوچک، در پروژههای مختلف استفاده میشود. از جمله این کاربردها میتوان به موارد زیر اشاره کرد:
- پروژههای رباتیک؛ برای تشخیص موانع
- تلفنهای همراه؛ برای خاموش کردن صفحه نمایش در هنگام صحبت کردن
- نمایشگرها؛ برای تنظیم نور پسزمینه
دیدگاه ها 0
درباره این مطلب دیدگاهی ارسال کنید