نحوه استفاده از ماژول MPR121

پنج شنبه, 17 تیر 1395 11:31
این مورد را ارزیابی کنید
(4 رای‌ها)

با استفاده از ماژول MPR121 که یک برد 12 کاناله برای اتصال به صفحات لمسی خازنی می باشد، این امکان برای شما وجود دارد که کیبردها و صفحات لمسی خازنی زیادی را به میکروکنترلرهای خود به آسانی متصل کنید.

این ماژول از طریق پروتکل I2C با میکروکنترلرها ارتباط برقرار می کند. از طریق پین ADDR می توان یکی از چهار آدرس مربوط به 48 کیبرد خازنی را برای برقراری ارتباط انتخاب کرد. استفاده از این ماژول به مراتب ساده تر از برقراری ارتباط با صفحات خازنی از طریق ورودی های آنالوگ می باشد.

ولتاژ کاری این ماژول 3 تا 5 ولت بوده لذا می توان آن را با هر کدام از میکروکنترلرها مانند آردوینو راه اندازی کرد. برای تست، می توانید به جای کیبردها و صفحات خازنی از صفحات مسی و الکترودها استفاده کنید.

 

بررسی پین های ماژول:

تراشه مرکزی کوچکی که بر روی برد قرار دارد، در واقع همان سنسور اصلی MPR121 می باشد که وظیفه حس کردن و فیلتر کردن صفحات خازنی را برعهده دارد.

 

 

Vin: این پین تامین توان می باشد. اگرچه تراشه اصلی ماژول با ولتاژ 3 ولت کار می کند، ولی با توجه به رگولاتور قرار گرفته بر روی برد، می توان از منابعی با ولتاژ 3 تا 5 ولت مانند اکثر میکروکنترلرها استفاده کرد.

3.3 V: پین 3.3 ولت، که از خروجی رگولاتور گرفته شده و حداکثر جریان خروجی آن نیز 100 mA می باشد.

GND: پین زمین

SCL: پین کلاک مربوط به پروتکل I2C که به خط کلاک میکروکنترلر متصل می شود.

SDA: پین دیتا مربوط به پروتکل I2C که به خط داده میکروکنترلر متصل می شود.

ADDR: پین انتخاب آدرس در پروتکل I2C می باشد. این پین در حالت پیش فرض توسط مقاومت 100 کیلو اهم به زمین وصل شده است(pulled down)، که نشان دهنده آدرس 0x5A می باشد. همچنین در صورت اتصال به پین های 3.3 ولت، SDA و SCL به ترتیب آدرس های 0x5B، 0x5C و 0x5D در نظر گرفته می شوند.

IRQ: پین مربوط به درخواست وقفه می باشد. این پین به صورت pulled up به 3.3 ولت متصل شده و زمانی که سنسور تغییری را در پین های ورودی احساس کند، پین تا زمانی که داده از طریق پروتکل I2C خوانده می شود، به حالت صفر ولت می رود.

 

اتصالات:

برای استفاده راحت تر از ماژول بر روی برد بورد، می توانید از پین هدر استفاده کنید. نحوه اتصال پین هدر را به ترتیب در شکل های زیر مشاهده می کنید.

سیم کشی مدار:

نحوه سیم کشی این مدار بسیار ساده می باشد. در این جا از آردوینو استفاده شده، شما می توانید از هر میکروکنترلری که امکان برقراری ارتباط با پروتکل I2C را دارد استفاده کنید. برنامه آن نیز بسیار ساده است.

  • پین Vin را به ولتاژ 3 تا 5 ولت متصل کنید. از همان ولتاژی که میکروکنترلر در اختیار شما قرار می دهد استفاده کنید.
  • پین GND را به زمین متصل کنید.
  • پین SCL را به پین کلاک SCL بر روی برد آردوینو متصل کنید. بر روی برد آردوینو مدل uno و میکروکنترلر مگا328  پین آنالوگ A5، برای مدل مگا پین دیجیتال 21 و برای مدل های لئوناردو و میکرو پین دیجیتال 3 همان پین SCL  می باشند.
  • پین SDA را به پین کلاک SDA بر روی برد آردوینو متصل کنید. بر روی برد آردوینو مدل uno و میکروکنترلر مگا328 پین آنالوگ A4، برای مدل مگا پین دیجیتال 20 و برای مدل های لئوناردو و میکرو پین دیجیتال 2 همان پین SCL  می باشند.

پین ADDR نیز همان طور که گفته شد، از طریق یک مقاومت به زمین متصل شده است، که باعث می شود آدرس رابط I2C برابر با 0x5A باشد. با تغییر وضعیت این پین می توان آدرس پروتکل I2C را تغییر داد:

  • ADDR not connected: 0x5A
  • ADDR tied to 3V: 0x5B
  • ADDR tied to SDA: 0x5C
  • ADDR tied to SCL: 0x5D

بهتر است برای امتحان از همان حالت پیش فرض استفاده کنید.

در ابتدا شما باید کتابخانه مربوط به این ماژول را دانلود کنید. نام پوشه دانلود شده را به Adafruit_MPR121 تغییر داده و چک کنید که شامل فایل های Adafruit_MPR121.cpp و  Adafruit_MPR121.hباشد. سپس آن را در پوشه arduinosketchfolder/libraries/ قرار دهید. و یا اینکه از طریق خود برنامه و از مسیر زیر کتابخانه را اضافه کنید. Sketch>include library>add.zip library…

از طریق آدرس زیر یک برنامه نمونه را بر روی برد خود آپلود کنید.

File->Examples->Adafruit_MPR121->MPR121test

اکنون نمایشگر سریال را باز کرده و baud rate را بر روی 9600 قرار دهید.

بعد از اتصال حتما باید پیام MPR121 found! را مشاهده کنید که نشان دهنده اتصالات درست مدار می باشد.

اکنون پین های مربوط به صفحات خازنی را با انگشت لمس کنید تا عملکرد ماژول را مشاهده کنید.

برای اکثر افراد این همان چیزی است که می خواهند. برنامه این امکان را به شما می دهد که تشخیص دهید کدام پایه لمس شده و کدام پایه آزاد است.

در صورت نیاز به جزئیات بیشتر، می توانید ردیف های داده را از تراشه دریافت کنید. این تراشه در واقع به صورت پیوسته و از طریق شمارش وضعیت صفحات خازنی را بررسی می کند. خطی به نام baseline در نمایشگر سریال وجود دارد که با لمس کردن صفحه خازنی مقدار اعداد نشان داده شده، تغییر کرده و البته میزان آن به دما، رطوبت، جنس PCB، طول سیم و ... بستگی دارد.

برای فعال سازی این حالت، خط “return” را در حالت کامنت قرار دهید.

  // comment out this line for detailed data from the sensor!

  return;

بعد از آن برنامه را دوباره روی برد خود آپلود کرده و نمایشگر سریال را باز کنید.

هر مرحله از خواندن شامل 12 ستون بوده که هر کدام مربوط به یک سنسور است. همچنین در هر مرحله دو سطر نیز وجود دارند که یکی مربوط به baseline و دیگری مربوط به همین داده ها می باشد که فیلتر شده اند. زمانی که مقادیر فیلتر شده به اندازه 12 شماره از مقادیر baseline کمتر باشد، به این معناست که صفحه خازنی لمس شده و در صورتی که 12 شماره بیشتر باشد به معنای عدم لمس صفحه خازنی است.

اکثر افراد به این جزئیات نیازی ندارند، اما این اطلاعات برای اشکال زدایی و یا بررسی سرعت پاسخ گویی سنسور و تنظیم آن مهم می باشد.

 

چون ماژول از پروتکل I2C برای برقراری ارتباط استفاده می کند، نیازی به معرفی پین اضافی در هنگام تست نمی باشد. تنها لازم است که خط زیر را اضافه کنید:

Adafruit_MPR121 cap = Adafruit_MPR121();

زمانی که مقدار اولیه مربوط به آدرس سنسور مشخص شد، این مقدار می تواند در محدوده ی 0x5A تا  0x5D تغییر کند.

cap.begin(0x5A)

دستور begin() در خط بالا مقدار صحیحی خواهد داشت در صورتی که ماژول در گذرگاه I2C تشخیص داده شود و در غیر این صورت خروجی آن نامعتبر است.

99 درصد از کاربران زمانی که متوجه بشوند که کدام سنسور را لمس کرده اند، خوشحال خواهند شد. این کار توسط خط زیر انجام می شود:

cap.touched()

این دستور یک داده 16 بیتی را بر میگرداند. هرکدام از سنسورها نیز به یکی از 12 پین موجود بر روی ماژول متصل شده اند. در صورتی که شما می خواهید برای مثال بررسی کنید که سنسور متصل به پین 4 لمس شده است و یا خیر می توانید به ترتیب از دستورات زیر استفاده کنید:

if (cap.touched() & (1 << 4)) { do something }

 

if (! (cap.touched() & (1 << 4)) ) { do something }

داده های اولیه و فیلتر شده مربوط به هر سنسور نیز از طریق دستور زیر قابل دسترس است:

filteredData(sensornumber);
baselineData(sensornumber);

این دستورات یک داده 16 بیتی بدون واحد را که همان اعداد شمارش شده می باشد، بر می گرداند. مقدار اولیه baseline به شرایط محیطی مربوط به زمانی که دستور begin() فراخوانی می شود، بستگی دارد، که سعی می کند شرایط محیطی مانند رطوبت و... را جبران کند.

در صورتی که می خواهید سطح اشباع مربوط به هر سنسور را تغییر دهید از دستور زیر استفاده کنید:

setThreshholds(uint8_t touch, uint8_t release)

در حالت پیش فرض حد اشباع لمس کردن 12 و حد اشباع عدم لمس 6 می باشد.  زمانی که شما از دستور begin() استفاده کنید، مقادیر در حالت پیش فرض قرار می گیرند.

 

برای تست ماژول MPR121 شما می توانید از کیبردهای لمسی استفاده کنید و یا اینکه صفحه لمسی را تسط الکترودها بسازید. این صفحات می توانند از جنس مس، فویل و ... بوده که حتما باید رسانا باشند.

توجه کنید که حتما لازم نیست الکترود رسانای شما یک جسم فلزی باشد، شما می توانید از موارد رسانای دیگر مانند آب نمک، بعضی از مایعات و غذاها و ... استفاده کنید.

به هر نحوی که مد نظرتان می باشد، الکترود را به ماژول متصل کنید. دقت کنید که سنسور و الکترود ها به اندازه ای دارای خاصیت خازنی ذاتی می باشند. این به این معناست که زمانی که شما الکترود را لمس می کنید، به دلیل همین خاصیت، ماژول این اتفاق را تشخیص می دهد. با دوباره کالیبره کردن سنسور می توانید این اثر این خاصیت را از بین ببرید.


 

ترجمه شده توسط صنعت بازار | منبع: سایت adafruit

خواندن 3658 دفعه

کاربرانی که در این گفتگو شرکت کرده اند

نظرات (4)

  1. ابراهیم

سلام وقت بخیر من یه سوال مهم داشتم و اون اینه که این مدار به لمس امگشت حساسه آیا اگه با چوب یا دستکش اون رو لمس کنیم باز هم تشخیص خواهد داد؟

 
  1. پشتیبان    ابراهیم

سلام ابراهیم عزیز
صفحات خازنی حساس به اجسام رسانا هستند با دستکش یا اجسام خارجی غیر رسانا عمل نمیکنند

 
  1. سعید

سلام من گیر راه اندازی این برد با avr و بسکام میباشم کتابخانه هم ندارم جواب هم نمیده ممنون میشم اگه بتونین تو این زمینه راهنماییم بکنین
09354141326

 
  1. omid

سلام در خواست ساخت همین مدار رو دارم برای ۱۲ کلید لمسی برای تعداد ۱۰ برد که کلید های انالوگ را کنترل کند
منتظر هستم omidvidoji@gmail.com

 
هیچ نظری در اینجا وجود ندارد

نظر خود را اضافه کنید.

ارسال نظر بعنوان یک مهمان
پیوست ها (0 / 3)
مکان خود را به اشتراک بگذارید
عبارت تصویر زیر را بازنویسی کنید. واضح نیست؟

محتوای آموزشی استفاده شده در این سایت محافظت شده می باشد و هرگونه کپی برداری از محتواهای تولید شده توسط تیم صنعت بازار موجب پیگرد خواهد بود. استفاده از مطالب صنعت بازار تنها با ذکر منبع به صورت لینک فعال بلامانع است

ما را دنبال کنید:

Copyright © 2017-2018 | Sanatbazar.com