سنسورهای موشن ترکینگ
Motion Tracking شامل ردیابی حرکت اجسام و انتقال داده های اندازه گیری شده توسط سنسور به برنامه برای پردازش بیشتر می باشد. Motion Tracking به منظور حرکت یک جسم در مسیر الگوی ذخیره شده استفاده می شود. Motion Tracking دارای طیف گسترده ای از کاربردها از قبیل نظامی، سرگرمی، ورزشی، برنامه های کاربردی پزشکی، اعتبارسنجی بینایی کامپیوتر و رباتیک است. علاوه بر این در ساخت فیلم و بازی های ویدیویی نیز مورد استفاده قرار میگیرد.
ژیروسکوپ
ژیروسکوپ سرعت زاویه ای را با استفاده از اثر کوریولیس (Coriolis Effect) اندازه گیری می کند. هنگامی که یک جرم در یک جهت خاص با سرعت خاصی حرکت می کند و یک نرخ زاویه ای خارجی مطابق با فلش سبز رنگ زیر اعمال شود، نیرویی مانند فلش قرمز آبی نشان داده شده ، باعث جابجایی عمودی جرم می شود. بنابراین مشابه شتاب سنج، این جابجایی باعث تغییر در ظرفیت خازنی که مرتبط با نرخ زاویه ای خاصی هست، می شود.
ساختار میکرو ژیروسکوپ چیزی شبیه به این است. جرمی که دائماً در حال حرکت یا نوسان است و هنگامی که نرخ زاویه ای خارجی اعمال می شود، بخش انعطاف پذیری از جرم حرکت کرده و جابجایی عمودی انجام می شود.
شتابسنج
شتاب سنج وسیله ای است که ارتعاش یا شتاب حرکت سازه را اندازه گیری می کند. نیروی ناشی از ارتعاش یا تغییر در حرکت (شتاب) باعث می شود که جرم ماده پیزوالکتریک را “فشرده” کند که بار الکتریکی متناسب با نیروی وارد شده بر آن تولید می کند. از آنجایی که بار با نیرو متناسب است و جرم آن ثابت است، پس بار نیز با شتاب متناسب است. این حسگرها به روشهای مختلفی از ایستگاههای فضایی گرفته تا دستگاههای دستی مورد استفاده قرار میگیرند، و این احتمال وجود دارد که شما قبلاً دستگاهی با شتابسنج در آن داشته باشید. به عنوان مثال، تقریباً همه تلفن های هوشمند امروزی دارای شتاب سنج هستند. آنها به تلفن کمک می کنند تا بداند آیا در هر جهتی تحت شتاب قرار می گیرد یا خیر، و دلیل روشن شدن صفحه نمایش تلفن شما با چرخاندن آن است. در یک محیط صنعتی، شتابسنجها به مهندسان کمک میکنند تا پایداری دستگاهها را درک کنند و آنها را قادر میسازند تا هرگونه نیرو/ارتعاش ناخواسته را نظارت کنند.
یک شتاب سنج با استفاده از یک حسگر الکترومکانیکی کار می کند که برای اندازه گیری شتاب استاتیک یا دینامیکی طراحی شده است. شتاب ایستا نیروی ثابتی است که بر جسم وارد می شود، مانند گرانش یا اصطکاک. این نیروها تا حد زیادی قابل پیش بینی و یکنواخت هستند. به عنوان مثال، شتاب ناشی از گرانش در 9.8 متر بر ثانیه ثابت است و نیروی گرانش تقریباً در هر نقطه از زمین یکسان است.
اصل کلی شتاب سنج ها این است که آنها می توانند شتاب را تشخیص داده و آن را به مقادیر قابل اندازه گیری مانند سیگنال های الکتریکی تبدیل کنند.
مروری بر ICM20789
سنسور موشن ترکینگ و فشار بارومتریک ICM20789
ICM20789ترکیبی از یک ژیروسکوپ 3 محوره و یک شتاب سنج 3 محوره و یک سنسور فشار خازنی MEMS با نویز فوق العاده کم (ultra-low noise MEMS capacitive barometric pressure sensor )در پکیج 24 پین LGA می باشد.
سنسور ژیروسکوپ ICM20789 همچنین دارای 4 کیلو بایت FIFO بوده که می تواند ترافیک کمتری روی گذرگاه سریال داشته باشد.خروجی دیجیتال سنسور فشار بارومتریک این قطعه بر پایه فناوری خازنی MEMS است که اختلاف فشار را با دقت ±1Pa ، دقتی که اندازه گیری اختلاف فشار را تا اختلاف سطح 8.5 سانتی متر بدون افزایش میزان مصرف انرژی یا کاهش توان سنسور می تواند اندازه گیری کند.
ژیروسکوپ ICM20789 دارای full-scale range قابل برنامه ریزی با مقادیر ±250dps ، ±500dps ، ±1000dps و ±2000dps شتاب سنج از چهار رنج قابل تنظیم ±2g ، ±4g ، ±8g و ±16g پشتیبانی می کند. از سایر ویژگی های پیشرو در این سنسور می توان به 16 بیت ADC داخلی، فیلترهای دیجیتال قابل برنامه ریزی،سنسور دمای داخلی، وقفههای قابل برنامه ریزی و پروتکل های ارتباطی دیجیتال I2C در 400kHz (6 درجه آزادی و فشار)و SPI 8MHz (فقط 6 درجه آزادی) اشاره کرد.
مشخصات فنی سنسور
کاربردها
- Number of Axis: 7-Axis
- Output type: Digital-I2C or SPI
- Accelerometer FSR: ±2, ±4, ±8, ±16(g)
- Accelerometer Sensitivity SF: 16384, 2048 (LSB/g), 4096, 8192
- Gyroscope FSR: ±250, ±500, ±1000, ±2000(dps)
- Gyroscope Sensitivity SF: 131, 16.4 (LSB/dps), 32.8, 65.5
- Acc. & Gyro ADC: 16 Bit
- Pressure range: 25 to 115 kpa
- Pressure Resolution: 0.01 pa
For more specifications, please refer to the Datasheet
- Drones and Flying Toys
- Motion-based gaming controllers
- Virtual Reality headsets and controllers
- Indoor/Outdoor Navigation (dead-reckoning, floor/elevator/step detection)
ویژگیهای ماژولGebraBit ICM20789
- User-selectable interface protocol (I2C or SPI)
- User-selectable I2C address (AD0)
- Access to all data pins of the sensor
- 1V8 Voltage Regulator
- 1V8 Output Voltage
- On Board, ON/OFF LED indicator
- Pin Compatible with GEBRABUS
- It can be used as a daughter board of GebraBit MCU Modules
- Featuring Castellated pad (Assembled as SMD Part)
- Separatable screw parts to reduce the size of the board
- Package: GebraBit small (36.29mm x 32.72mm)
- Schematic (.pdf)
ماژول GebraBit ICM20789
بعد از توضیحات ذکر شده در بالا متوجه شده اید که سنسورICM20789 با توجه به پکیج LGA و عدم دستسرسی به پین های سنسور،کاربر برای توسعه سخت افزاری و البته توسعه نرم افزاری سنسور،نیاز به یک مدار راه انداز و درایور دارد. ICM20789 GebraBit برای راحتی کاربران این امر را با پیاده سازی مدار سنسور ارایه دسترسی به پین های سیگنال های ارتباطی و تغذیه ، با قابلیت انتخاب پروتکل ارتباطی I2C یا SPI و ولتاژ کاری و سطح لاجیک پروتکل های ارتباطی ، محقق ساخته است.
کافیست ماژول GebraBit ICM20789را در BreadBoard قرار داده سپس با اعمال ولتاژ مورد نیاز و انتخاب پروتکل ارتباطی I2C یا SPI ، ماژول GebraBit ICM20789را با هریک از برد های اردوینو، رزبری پای ، دیسکاوری و مخصوصا ماژول GebraBit STM32F303 یا GebraBit ATMEGA32 که پیشنهاد ما استفاده از ماژول های توسعه میکروکنترلری GebraBit هست،راه اندازی و دیتا را دریافت کنید.
معرفی بخش های ماژول
سنسور ICM20789
ای سی اصلی این ماژول بوده که در مرکز ماژول قرار گرفته و مدار ان طراحی شده است.
جامپرهای انتخاب پروتکل ارتباطی
در صورتی که مقاومتهای 0R تمام Jumper Selector ها به سمت چپ باشد،پروتکل I2C اتنخاب شده است.
در صورتی که مقاومتهای 0R تمام Jumper Selector ها به سمت راست باشد،پروتکل SPI اتنخاب شده است.
به صورت پیش فرض نیز پروتکل I2C انتخاب شده است.
جامپرAD0 SEL
در صورت انتخاب پروتکل I2C ،وضعیت جامپر AD0 SEL آدرس I2C سنسور ( 0x68 0 => یا 0x69 1 =>) را مشخص می کند.
به صورت پیش فرض مقاومت 0R روی 0 قرار داشته و آدرس 0x68 انتخاب شده است.
رگولاتور 1V8 XC6206P182MR-G
رگولاتور به کار رفته روی ماژول ولتاژ 5V را به 1.8V تبدیل کرده که بر روی پین 1V8 در دسترس است.
تغذیه LED
با توجه به وضعیت جامپر VDD SEL و اعمال ولتاژ به ماژول توسط پین مربوطه، LED ماژول روشن می شود.
پین های ماژول
پین های تغذیه
- 5V : این پین تغذیه اصلی ماژول بوده که به عنوان ورودی رگولاتور تعبیه شده روی برد مورد استفاده قرار می گیرد.
- 1V8 : در صورت مونتاژ بودن رگولاتور بر روی ماژول این پین خروجی 1.8 ولت رگولاتور می باشد. در غیر این صورت با اعمال ولتاژ خارجی 1.8 ولت به عنوان ورودی ماژول برای راه اندازی ماژول مورد استفاده قرار می گیرد( سطح منطق(Logic Level) ارتباط دیجیتال(I2C یا SPI) سنسور را نیز تامین کند.)
- GND : این پین زمین مشترک برای تغذیه و سطح منطق(Logic Level) سنسور می باشد.
پین های I2C
با استفاده از Jumper Selector های تعبیه شده روی برد می توان نوع ارتباط با ماژول را انتخاب کرد.در صورتی که مقاومتهای 0R تمام Jumper Selector ها به سمت چپ باشد،پروتکل I2C اتنخاب شده است.وضعیت جامپر AD0 SEL آدرس I2C سنسور ( 0x68 یا 0x69 ) را مشخص می کند.
- SDA : این پین، پین دیتای ارتباط I2C می باشد، که به پین دیتای متناظر در میکروکنترلر(پردازنده) ، متصل می شود. این پین با یک مقاومت 10K پول آپ (Pull Up) شده است.
- SCL : این پین، پین کلاک ارتباط I2C می باشد، که به پین کلاک متناظر در میکروکنترلر(پردازنده) ، متصل می شود.این پین با یک مقاومت 10K پول آپ (Pull Up) شده است.
- SDA PR: این پین، پین دیتای ارتباط I2C سنسور فشار می باشد، که به پین دیتای متناظر در میکروکنترلر(پردازنده) ، متصل می شود. این پین با یک مقاومت 10K پول آپ (Pull Up) شده است.
- SCL PR: این پین، پین کلاک ارتباط I2C سنسور فشار می باشد، که به پین کلاک متناظر در میکروکنترلر(پردازنده) ، متصل می شود.این پین با یک مقاومت 10K پول آپ (Pull Up) شده است.
توجه: از آنجا که سطح منطق GebraBit ICM20789 مقدار 8V و سطح منطق بردهای توسعه مقدار 5V می باشد، نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد.
پین های SPI
با استفاده از Jumper Selector های تعبیه شده روی برد می توان نوع ارتباط با ماژول را انتخاب کرد.در صورتی که مقاومتهای 0R تمام Jumper Selector ها به سمت راست باشد،پروتکل SPI اتنخاب شده است.وضعیت جامپر AD0 SEL در این حالت بی تاثیر است.
- SDI(MOSI) : از این پین، برای ارسال دیتا از میکروکنترلر(پردازنده) به ماژول(سنسور) استفاده میشود.نام اختصاری این پین برگرفته از عبارت لاتین Serial Data In / Microcontroller Out Sensor In می باشد.
- SDO(MISO) : از این پین، برای ارسال دیتا از ماژول(سنسور) به میکروکنترلر(پردازنده) استفاده میشود.نام اختصاری این پین برگرفته از عبارت لاتین Serial Data Out / Microcontroller In Sensor Out می باشد.
- SCK : این پین، پین کلاک برای ارتباط SPI بوده که از نوع ورودی (Input) برای سنسور محسوب و به پین کلاک متناظر در میکروکنترلر(پردازنده) ، متصل می شود.
- CS : این پین، پین Chip Select برای ارتباط SPI با ماژول(سنسور) می باشد، که با اعمال ولتاژ LOW (0V) ،ماژول(سنسور) برای ارتباط SPI انتخاب می شود.این پین از نوع ورودی (Input) برای سنسور محسوب می شود.
در صورتی که می خواهید از چندین ماژول GebraBit ICM20789 به صورت همزمان استفاده کنید، کافیست پین های SDO , SDI , SCK همه انها و میکرکنترلر(پردازنده) را به هم متصل کرده و به CS هر کدام، یک پین منحصر به فرد اختصاص دهید.
- توجه: از آنجا که سطح منطق GebraBit ICM20789 مقدار 8V و سطح منطق بردهای توسعه مقدار 5V می باشد، نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد.
دیگر پین ها
- INT : پین Interrupt (وقفه) سنسور ICM20789بوده که با توجه به دیتاشیت سنسور، کاربر می تواند شرایط وقوع وقفه،حالات و روش های وقوع وقفه و … را تنظیم کند.
- FSY(FSYNC) : برای همگام سازی (Synchronization) سنسور با یک منبع خارجی ، از این پین استفاده میشود.برای اطلاعات بیشتر دیتاشیت سنسور مطالعه شود.به صورت پیش فرض این پین با مقاومت R3 به زمین متصل شده است.جهت استفاده از پین، مقاومت R3 باید از ماژول ، جدا (دمونتاژ) گردد.
اتصال به پردازنده
اتصال I2C با GebraBit STM32F303
ابتدا اطمینان حاصل کنید که پروتکل I2C با استفاده از جامپر های روی برد انتخاب شده است، از آنجا که سطح منطق GebraBit ICM20789 مقدار 1.8V و سطح منطق GebraBit STM32F303 3.3V می باشد نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد. سپس برای اتصال I2C ماژول GebraBit ICM20789به ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDA و SCL رو پین های PB9 و PB8 (برای راحتی کار در STMCUBEMX)مراحل زیر را دنبال کنید:
- با توجه به توضیحات بالا پین 1V8 ماژول ICM20789را به واسطه Logic Level Convertor به پین 3V3 خروجی ماژول میکروکنترلر متصل کنید.(سیم زرد و سبز)
- پینهای GND ماژول ICM20789 و میکروکنترلر را مطابق تصویر زیر متصل کنید.(سیمهای سیاه)
- پین SCL و SDA ماژول ICM20789را به واسطه ماژول Logic Level Convertor به ترتیب به پینهای PB8(SCL) و PB9(SDA) ماژول میکروکنترلر متصل کنید.(سیم های آبی)
نحوه اتصال موارد ذکر شده در بالا،در این تصویر مشاهده می شود:
اتصال SPI با GebraBit STM32F303
ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است. است .از آنجا که سطح منطق GebraBit ICM20789 مقدار 1.8V و سطح منطق GebraBit STM32F303 مقدار3.3V می باشد نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد.سپس برای اتصال SPI ماژول GebraBit ICM20789به ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDI و SDO و SCK و CS روی پین های PB5 و PB4 و PB3 و PC13 (برای راحتی کار در STMCUBEMX) اتصالات را طبق تصویر زیر برقرار کنید:
اتصال I2C با GebraBit ATMEGA32A
ابتدا اطمینان حاصل کنید که پروتکل I2C با استفاده از جامپر های روی برد انتخاب شده است، از آنجا که سطح منطق GebraBit ICM20789 مقدار 1.8V و سطح منطق GebraBit ATMEGA32A مقدار 3.3V می باشد نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد. سپس برای اتصال I2C ماژول GebraBit ICM20789به ماژول میکروکنترلرGebraBit ATMEGA32A بعد از تعریف کردن SDA و SCL روی پین های PC1 و PC0 طبق تصویر زیر اتصالات را برقرار نمایید:
اتصال SPI با GebraBit ATMEGA32A
ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است، از آنجا که سطح منطق GebraBit ICM20789 مقدار 1.8V و سطح منطق GebraBit ATMEGA32A مقدار 3.3V می باشد نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد. سپس برای اتصال SPI ماژول GebraBit ICM20789به ماژول میکروکنترلرGebraBit ATMEGA32A بعد از تعریف کردن SDI و SDO و SCK و CS روی پین های PB5 و PB4 و PB3 و PC13 طبق تصویر زیر اتصالات را برقرار نمایید:
اتصال I2C با ARDUINO UNO
از آنجا که سطح منطق GebraBit ICM20789 مقدار 1.8V و سطح منطق برد ARDUINO UNO مقدار 5V می باشد، نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد.ابتدا اطمینان حاصل کنید که پروتکل I2C با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال I2C ماژول GebraBit ICM20789 به ARDUINO UNO مراحل زیر را دنبال کنید:
- پین 1V8 ماژول ICM20789 را به پین 5V خروجی برد ARDUINO UNO طبق توضیحات بالا متصل کنید.(سیم قرمز)
- پین GND ماژول ICM20789را به پین GND برد ARDUINO UNO متصل کنید.(سیم سیاه)
- پین SCL ماژول ICM20789را به پین A5 برد ARDUINO UNO( (SCLمتصل کنید.(سیم آبی)
- پین SDA ماژول ICM20789را به پین A4 برد ARDUINO UNO( (SDAمتصل کنید.(سیم آبی)
نحوه اتصال موارد ذکر شده در بالا،در این تصویر مشاهده می شود:
اتصال SPI با ARDUINO UNO
ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است. از آنجا که سطح منطق GebraBit ICM20789 مقدار 1.8V و سطح منطق برد ARDUINO UNO مقدار 5V می باشد، نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد. سپس برای اتصال SPI ماژول GebraBit ICM20789 به برد ARDUINO UNO مراحل زیر را دنبال کنید:
- پین 1V8 ماژول ICM20789را به پین 5V خروجی برد ARDUINO UNO طبق توضیحات بالا متصل کنید.(سیم قرمز)
- پین GND ماژول ICM20789را به پین GND برد ARDUINO UNO متصل کنید.(سیم سیاه)
- پین SDI ماژول ICM20789را به پین D11 برد ARDUINO UNO( (SDIمتصل کنید.(سیم آبی)
- پین SDO ماژول ICM20789را به پین D12 برد ARDUINO UNO( (SDOمتصل کنید.(سیم آبی)
- پین SCK ماژول ICM20789را به پین D13 برد ARDUINO UNO( (SCKمتصل کنید.(سیم آبی)
- پین CS ماژول ICM20789را به پین D10 برد ARDUINO UNO( (SSمتصل کنید.(سیم آبی)
نحوه اتصال موارد ذکر شده در بالا،در این تصویر مشاهده می شود: