نمایش نتایج: از 1 به 3 از 3

موضوع: ماژول سنسور لمس خازنی - سنسور تاچ mpr121

  1. #1
    Senior Member
    تاریخ عضویت
    Mar 2013
    محل سکونت
    Iran
    نوشته ها
    138

    Lightbulb ماژول سنسور لمس خازنی - سنسور تاچ mpr121

    اگر علاقه مندید که پروژه های خود را بصورت لمسی کنترل کنید ماژول سنسور لمس خازنی می تواند شما را در این کار یاری کند.این ماژول متشکل از یک برد دارای سنسور کنترلر لمس خازنی MPR121 است که بوسیله رابط I2C قابل راه اندازی می باشد. چیپ این ماژول قابلیت کنترل 12 الکترود منفرد بعلاوه سیزدهمین الکترود شبیه سازی شده را داراست. این ماژول همچنین دارای هشت پین راه انداز LED می باشد. درصورتی که این پین ها به عنوان پین الکترود بکار گرفته نشوند می توانند برای راه اندازی LED استفاده شوند. پشت برد این ماژول چهار جامپر قرار دارد که همگی آنها بصورت پیشفرض بصورت (closed) تنظیم شده اند.جامپر آدرس ، پین ADD را به زمین متصل می کند یعنی اینکه بطور پیشفرض آدرس I2C چیپ 0x5A خواهد بود. درصورت نیاز به تغییر آدرس چیپ (بوسیله اتصال ADD به پین دیگر) از باز بودن جامپر اطمینان حاصل کنید.جامپرها همچنین می توانند به پین SDA ، SCL و پین interrupt به مقاومتهای pull-up 10k متصل شوند. درصورتی که نیاز به مقاومت های pull-up ندارید می توانید با قطع اتصال آنها به جامپرها را باز کنید. بر روی این برد هیچگونه رگولاتوری نصب نیست بنابراین ولتاژ تغذیه باید بین 2.5 تا 3.6V باشد. این ماژول بوسیله آردینو قابل راه انداز می باشد.

    mpr121_capacitive_touch_sensor-500x500.jpg


    ویژگی ها
    ولتاژ تغذیه بین 1.71 تا 3.6 ولت
    مصرف جریان به ازای فاصله زمانی 16ms معادل 26uA و در مد STOP برابر با 3uA
    دارای 12 ورودی لمس خازنی
    با قابلیت تشخیص کامل لمس
    پیکربندی و کالیبره خودکار به ازای هر ورودی لمس
    ارتبط از نوع I2C


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

    capture.jpg

    کد:
    #include "mpr121.h" #include <Wire.h> int irqpin = 2; // Digital 2 boolean touchStates[12]; //to keep track of the previous touch states void setup(){ pinMode(irqpin, INPUT); digitalWrite(irqpin, HIGH); //enable pullup resistor Serial.begin(9600); Wire.begin(); mpr121_setup(); } void loop(){ readTouchInputs(); } void readTouchInputs(){ if(!checkInterrupt()){ //read the touch state from the MPR121 Wire.requestFrom(0x5A,2); byte LSB = Wire.read(); byte MSB = Wire.read(); uint16_t touched = ((MSB << 8) | LSB); //16bits that make up the touch states for (int i=0; i < 12; i++){ // Check what electrodes were pressed if(touched & (1<<i)){ if(touchStates[i] == 0){ //pin i was just touched Serial.print("pin "); Serial.print(i); Serial.println(" was just touched"); }else if(touchStates[i] == 1){ //pin i is still being touched } touchStates[i] = 1; }else{ if(touchStates[i] == 1){ Serial.print("pin "); Serial.print(i); Serial.println(" is no longer being touched"); //pin i is no longer being touched } touchStates[i] = 0; } } } } void mpr121_setup(void){ set_register(0x5A, ELE_CFG, 0x00); // Section A - Controls filtering when data is > baseline. set_register(0x5A, MHD_R, 0x01); set_register(0x5A, NHD_R, 0x01); set_register(0x5A, NCL_R, 0x00); set_register(0x5A, FDL_R, 0x00); // Section B - Controls filtering when data is < baseline. set_register(0x5A, MHD_F, 0x01); set_register(0x5A, NHD_F, 0x01); set_register(0x5A, NCL_F, 0xFF); set_register(0x5A, FDL_F, 0x02); // Section C - Sets touch and release thresholds for each electrode set_register(0x5A, ELE0_T, TOU_THRESH); set_register(0x5A, ELE0_R, REL_THRESH); set_register(0x5A, ELE1_T, TOU_THRESH); set_register(0x5A, ELE1_R, REL_THRESH); set_register(0x5A, ELE2_T, TOU_THRESH); set_register(0x5A, ELE2_R, REL_THRESH); set_register(0x5A, ELE3_T, TOU_THRESH); set_register(0x5A, ELE3_R, REL_THRESH); set_register(0x5A, ELE4_T, TOU_THRESH); set_register(0x5A, ELE4_R, REL_THRESH); set_register(0x5A, ELE5_T, TOU_THRESH); set_register(0x5A, ELE5_R, REL_THRESH); set_register(0x5A, ELE6_T, TOU_THRESH); set_register(0x5A, ELE6_R, REL_THRESH); set_register(0x5A, ELE7_T, TOU_THRESH); set_register(0x5A, ELE7_R, REL_THRESH); set_register(0x5A, ELE8_T, TOU_THRESH); set_register(0x5A, ELE8_R, REL_THRESH); set_register(0x5A, ELE9_T, TOU_THRESH); set_register(0x5A, ELE9_R, REL_THRESH); set_register(0x5A, ELE10_T, TOU_THRESH); set_register(0x5A, ELE10_R, REL_THRESH); set_register(0x5A, ELE11_T, TOU_THRESH); set_register(0x5A, ELE11_R, REL_THRESH); // Section D // Set the Filter Configuration // Set ESI2 set_register(0x5A, FIL_CFG, 0x04); // Section E // Electrode Configuration // Set ELE_CFG to 0x00 to return to standby mode set_register(0x5A, ELE_CFG, 0x0C); // Enables all 12 Electrodes // Section F // Enable Auto Config and auto Reconfig /*set_register(0x5A, ATO_CFG0, 0x0B); set_register(0x5A, ATO_CFGU, 0xC9); // USL = (Vdd-0.7)/vdd*256 = 0xC9 @3.3V set_register(0x5A, ATO_CFGL, 0x82); // LSL = 0.65*USL = 0x82 @3.3V set_register(0x5A, ATO_CFGT, 0xB5);*/ // Target = 0.9*USL = 0xB5 @3.3V set_register(0x5A, ELE_CFG, 0x0C); } boolean checkInterrupt(void){ return digitalRead(irqpin); } void set_register(int address, unsigned char r, unsigned char v){ Wire.beginTransmission(address); Wire.write(r); Wire.write(v); Wire.endTransmission(); }
    مرجع:
    bildr
    https://www.sparkfun.com/products/9695

    جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.
    فایل های پیوست شده فایل های پیوست شده
    ویرایش توسط hesam.time : 07-06-2014 در ساعت 09:49 PM

  2. #2
    Junior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    2
    با سلام
    سوالی داشتم
    دیتا شیت رو خوندم و تا حدودی متوجه عملکرد این ماژول شدم
    اما در دستورات و دیتا شیتمتوجه بخش کانفیگ فیلتر ها نشدم
    دوخواست میکنم در این مورد توضیح بفرمائید
    سپاسگذارم

  3. #3
    Junior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    2
    تفکر بنده در مورد این سایت چیزی فراتر از فروش بود

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO