سنسورهای موشن ترکینگ
Motion Tracking شامل ردیابی حرکت اجسام و انتقال داده های اندازه گیری شده توسط سنسور به برنامه برای پردازش بیشتر می باشد. Motion Tracking به منظور حرکت یک جسم در مسیر الگوی ذخیره شده استفاده می شود. Motion Tracking دارای طیف گسترده ای از کاربردها از قبیل نظامی، سرگرمی، ورزشی، برنامه های کاربردی پزشکی، اعتبارسنجی بینایی کامپیوتر و رباتیک است. علاوه بر این در ساخت فیلم و بازی های ویدیویی نیز مورد استفاده قرار میگیرد.
ژیروسکوپ
ژیروسکوپ سرعت زاویه ای را با استفاده از اثر کوریولیس (Coriolis Effect) اندازه گیری می کند. هنگامی که یک جرم در یک جهت خاص با سرعت خاصی حرکت می کند و یک نرخ زاویه ای خارجی مطابق با فلش سبز رنگ زیر اعمال شود، نیرویی مانند فلش قرمز آبی نشان داده شده ، باعث جابجایی عمودی جرم می شود. بنابراین مشابه شتاب سنج، این جابجایی باعث تغییر در ظرفیت خازنی که مرتبط با نرخ زاویه ای خاصی هست، می شود.
ساختار میکرو ژیروسکوپ چیزی شبیه به این است. جرمی که دائماً در حال حرکت یا نوسان است و هنگامی که نرخ زاویه ای خارجی اعمال می شود، بخش انعطاف پذیری از جرم حرکت کرده و جابجایی عمودی انجام می شود.
شتابسنج
شتاب سنج وسیله ای است که ارتعاش یا شتاب حرکت سازه را اندازه گیری می کند. نیروی ناشی از ارتعاش یا تغییر در حرکت (شتاب) باعث می شود که جرم ماده پیزوالکتریک را “فشرده” کند که بار الکتریکی متناسب با نیروی وارد شده بر آن تولید می کند. از آنجایی که بار با نیرو متناسب است و جرم آن ثابت است، پس بار نیز با شتاب متناسب است. این حسگرها به روشهای مختلفی از ایستگاههای فضایی گرفته تا دستگاههای دستی مورد استفاده قرار میگیرند، و این احتمال وجود دارد که شما قبلاً دستگاهی با شتابسنج در آن داشته باشید. به عنوان مثال، تقریباً همه تلفن های هوشمند امروزی دارای شتاب سنج هستند. آنها به تلفن کمک می کنند تا بداند آیا در هر جهتی تحت شتاب قرار می گیرد یا خیر، و دلیل روشن شدن صفحه نمایش تلفن شما با چرخاندن آن است. در یک محیط صنعتی، شتابسنجها به مهندسان کمک میکنند تا پایداری دستگاهها را درک کنند و آنها را قادر میسازند تا هرگونه نیرو/ارتعاش ناخواسته را نظارت کنند.
یک شتاب سنج با استفاده از یک حسگر الکترومکانیکی کار می کند که برای اندازه گیری شتاب استاتیک یا دینامیکی طراحی شده است. شتاب ایستا نیروی ثابتی است که بر جسم وارد می شود، مانند گرانش یا اصطکاک. این نیروها تا حد زیادی قابل پیش بینی و یکنواخت هستند. به عنوان مثال، شتاب ناشی از گرانش در 9.8 متر بر ثانیه ثابت است و نیروی گرانش تقریباً در هر نقطه از زمین یکسان است.
اصل کلی شتاب سنج ها این است که آنها می توانند شتاب را تشخیص داده و آن را به مقادیر قابل اندازه گیری مانند سیگنال های الکتریکی تبدیل کنند.
مروری بر ICM20649
سنسور موشن ترکینگ ICM20649
ICM20649 اولین سنسور ردیابی حرکت 6 محوره با برد وسیع در جهان است که یک ژیروسکوپ 3 محوره و شتاب سنج 3 محوره را با یک ADC 16 بیتی روی تراشه ایی در پکیج 24 پین QFN سایز small 3×3×0.9mm) ) ادغام می کند.
ژیروسکوپ سه محورهی موجود در این سنسور، دارای FSR قابل برنامهریزی 500dps± ، 100dps ± ، 2000 dps ± و 4000dps± میباشد، همچنین شتاب سنج موجود در این سنسور نیز یک شتاب سنج سه محوره است که دارای FSR قابل برنامه ریزی 4g± ، 8g ± ، 16g± و 30g± میباشد.
از دیگر ویژگیهای این سنسور میتوان به وجود بافر FIFO 512_byte اشاره کرد که پردازنده را قادر میسازد تا داده ها را پشت سرهم بخواند.
برای ارتباط با این سنسور میتوان هم از پروتکل SPI و هم از پروتکل I2C بهره برد. همچنین میتوان از این سنسور در کاربردهای ورزشی و برای ساخت سنسورهای پوشیدنی استفاده کرد.
مشخصات فنی سنسور
کاربردها
- Number of Axis: 6-Axis
- Output type: Digital-I2C or SPI
- Accelerometer FSR: ±4, ±8, ±16, ±30(g)
- Accelerometer sensitivity SF : 1024 (LSB/g), 2048, 4096, 8192
- Gyroscope FSR: ±500, ±1000, ±2000, ±4000(dps)
- Gyroscope sensitivity SF : 16.4, 32.8, 65.5, 8.2 (LSB/dps)
- Acc. & Gyro ADC: 16 Bit
For more specifications, please refer to Datasheet
- Sports
- Wearable Sensors
- High Impact Applications
ویژگیهای ماژولGebraBit ICM20649
- User-selectable module power supply voltage between 1V8 and 3V3
- User-selectable module I/O logic voltage between 1V8 and 3V3
- User-selectable interface protocol (I2C or SPI)
- User-selectable I2C address (AD0)
- Auxiliary I2C interface
- Access to all data pins of the sensor
- 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 ICM20649
بعد از توضیحات ذکر شده در بالا متوجه شده اید که سنسور ICM20649 با توجه به پکیج QFN و عدم دستسرسی به پین های سنسور،کاربر برای توسعه سخت افزاری و البته توسعه نرم افزاری سنسور،نیاز به یک مدار راه انداز و درایور دارد.GebraBit برای راحتی کاربران این امر را با پیاده سازی مدار سنسور ICM20649 و ارایه دسترسی به پین های سیگنال های ارتباطی و تغذیه ، با فابلیت انتخاب پروتکل ارتباطی I2C یا SPI و ولتاژ کاری و سطح لاجیک پروتکل های ارتباطی ، محق ساخته است.
کافیست ماژول GebraBit ICM20649 را در BreadBoard قرار داده سپس با اعمال ولتاژ مورد نیاز و انتخاب پروتکل ارتباطی I2C یا SPI ، ماژول GebraBit ICM20649 را با هریک از برد های اردوینو، رزبری پای ، دیسکاوری و مخصوصا ماژول GebraBit STM32F303 یا GebraBit ATMEGA32 که پیشنهاد ما استفاده از ماژول های توسعه میکروکنترلری GebraBit هست،راه اندازی و دیتا را دریافت کنید.
دلیل پیشنهاد ما در راه اندازی ماژول GebraBit ICM20649 با ماژول های توسعه میکروکنترلری GebraBit مانند GebraBit STM32F303 یا GebraBit ATMEGA32 ،وجود رگولاتور داخلی 3V3 در آنها و سازگاری ترتیب پین های همه ماژول های GebraBit با هم بوده(استاندارد GEBRABUS) که فقط کافیست ماژول GebraBit ICM20649 را مانند تصویر بالا در سوکت مربوطه قرار داده و بدون نیاز به سیم کشی ،ماژول سنسور مورد نظر را توسعه دهید.
معرفی بخش های ماژول
سنسور ICM20649
ای سی اصلی این ماژول بوده که در مرکز ماژول قرار گرفته و مدار ان طراحی شده است.
جامپرهای انتخاب پروتکل ارتباطی
در صورتی که مقاومتهای 0R تمام Jumper Selector ها به سمت چپ باشد،پروتکل I2C اتنخاب شده است.
در صورتی که مقاومتهای 0R تمام Jumper Selector ها به سمت راست باشد،پروتکل SPI اتنخاب شده است.
به صورت پیش فرض نیز پروتکل I2C انتخاب شده است.
جامپرAD0 SEL
در صورت انتخاب پروتکل I2C ،وضعیت جامپر AD0 SEL آدرس I2C سنسور ( 0x68 0 => یا 0x69 1 =>) را مشخص می کند.
به صورت پیش فرض مقاومت 0R روی 0 قرار داشته و آدرس 0x68 انتخاب شده است.
جامپرVDIO SEL
با توجه به وضعیت مقاومت 0R این جامپر ، سطح منطق (Logic Level) ارتباط دیجیتال(I2C یا SPI) سنسور از بین 1V8 و 3V3 انتخاب می شود.
به صورت پیش فرض سطح منطق (Logic Level) ارتباط دیجیتال(I2C یا SPI) سنسور 3V3 انتخاب شده است.
جامپرVDD SEL
با توجه به وضعیت مقاومت 0R این جامپر ، ولتاژ اصلی تغذیه سنسور از بین 1V8 و 3V3 انتخاب میشود
به صورت پیش فرض ولتاژ اصلی تغذیه سنسور 3V3 انتخاب شده است.
تغذیه LED
با توجه به وضعیت جامپر VDD SEL و اعمال ولتاژ به ماژول توسط پین مربوطه، LED ماژول روشن می شود.
پین های ماژول
پین های تغذیه
- 3V3 : این پین می تواند با توجه به وضعیت Jumper Selector های VDDSEL و VDIOSEL ،تغذیه اصلی سنسور و سطح منطق(Logic Level) ارتباط دییجیتال(I2C یا SPI) سنسور را تامین کند.
- 1V8 : این پین می تواند با توجه به وضعیت Jumper Selector های VDDSEL و VDIOSEL ،تغذیه اصلی سنسور و سطح منطق(Logic Level) ارتباط دییجیتال(I2C یا SPI) سنسور را تامین کند.
- GND : این پین زمین مشترک برای تغذیه و سطح منطق(Logic Level) سنسور می باشد.
پین های I2C
با استفاده از Jumper Selector های تعبیه شده روی برد می توان نوع ارتباط با ماژول را انتخاب کرد.در صورتی که مقاومتهای 0R تمام Jumper Selector ها به سمت چپ باشد،پروتکل I2C اتنخاب شده است.وضعیت جامپر AD0 SEL آدرس I2C سنسور ( 0x68 یا 0x69 ) را مشخص می کند.
- SDA : این پین، پین دیتای ارتباط I2C می باشد، که به پین دیتای متناظر در میکروکنترلر(پردازنده) ، متصل می شود.با توجه به وضعیت جامپر VDIOSEL ،می توانید از سطح منطق(Logic Level) با ولتاژ 1V8 یا 3V3 استفاده کنید.این پین با یک مقاومت 10K پول آپ (Pull Up) شده است.
- SCL : این پین، پین کلاک ارتباط I2C می باشد، که به پین کلاک متناظر در میکروکنترلر(پردازنده) ، متصل می شود.با توجه به وضعیت جامپر VDIOSEL ،می توانید از سطح منطق(Logic Level) با ولتاژ 1V8 یا 3V3 استفاده کنید.این پین با یک مقاومت 10K پول آپ (Pull Up) شده است.
پینهای I2C جانبی
پینهای AUX_SCL و AUX_SDA که برای اتصال به سنسورهای خارجی میباشند در این ورژن (V2) جبرابیت، به دلیل اتصال پین AUX_SDA به زمین، قابل استفاده نیستند. در ورژنهای بعدی این ماژول، این مورد اصلاح خواهد شد.
پین های 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 ICM20649به صورت همزمان استفاده کنید، کافیست پین های SDO , SDI , SCK همه انها و میکرکنترلر(پردازنده) را به هم متصل کرده و به CS هر کدام، یک پین منحصر به فرد اختصاص دهید.
دیگر پین ها
- INT1 و INT2 : پینهای Interrupt (وقفه) سنسور ICM20649 بوده که با توجه به دیتاشیت سنسور، کاربر می تواند شرایط وقوع وقفه،حالات و روش های وقوع وقفه و … را تنظیم کند.
- FSY(FSYNC) : برای همگام سازی (Synchronization) سنسور با یک منبع خارجی ، از این پین استفاده میشود.برای اطلاعات بیشتر دیتاشیت سنسور مطالعه شود.به صورت پیش فرض این پین با مقاومت R3 به زمین متصل شده است.جهت استفاده از پین، مقاومت R3 باید از ماژول ، جدا (دمونتاژ) گردد.
اتصال به پردازنده
اتصال I2C با GebraBit STM32F303
ابتدا اطمینان حاصل کنید که پروتکل I2C با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال I2C ماژول GebraBit ICM20649به ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDA و SCL رو پین های PB9 و PB8 (برای راحتی کار در STMCUBEMX)مراحل زیر را دنبال کنید:
- پین 3V3 ماژول ICM20649 را به پین 3V3 خروجی ماژول میکروکنترلر متصل کنید.(سیم قرمز)
- پین GND ماژول ICM20649 را به پین GND ماژول میکروکنترلر متصل کنید.(سیم سیاه)
- پین SCL ماژول ICM20649 را به پین PB8 ماژول میکروکنترلر (SCL) متصل کنید.(سیم آبی)
- پین SDA ماژول ICM20649 را به پین PB9 ماژول میکروکنترلر (SDA) متصل کنید.(سیم زرد)
نحوه اتصال موارد ذکر شده در بالا،در این تصویر مشاهده می شود:
توجه: با توجه به اینکه پین PA14 ماژول میکروکنترلرGebraBit STM32F303 برای پروگرام کردن میکروکنترلر استفاده میشود،تنظیم I2C بر روی پین های PA14 و PA15 در این ورژن مقدور نمی باشد،لذا در اتصال I2C به ماژول میکروکنترلرGebraBit STM32F303 در این ورژن ، ماژول GebraBit ICM20649 نمی تواند به صورت Pin to Pin بر روی آن قرار گیرد.برای راحتی کار می توانید پروتکل SPI را با استفاده از جامپر های روی برد انتخاب کرده و سپس ماژول GebraBit ICM20649 را به صورت Pin to Pin بر روی ماژول GebraBit STM32F303 قرار دهید.
اتصال SPI با GebraBit STM32F303
ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال SPI ماژول GebraBit ICM20649 به ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDI و SDO و SCK و CS رو پین های PB5 و PB4 و PB3 و PC13 (برای راحتی کار در STMCUBEMX) ماژول GebraBit ICM20649 را به صورت Pin to Pin به راحتی بر روی ماژول GebraBit STM32F303 قرار دهید.
در اینجا برای درک بهتر، اتصال جداگانه ماژول ها نمایش داده شده است
اتصال SPI یا I2C با GebraBit ATMEGA32A
با توجه به اینکه پین های SPI و I2C میکروکنترلر ATMEGA32A بر اساس استاندارد GEBRABUS متناظر با پین های SPI و I2C دیگر ماژول های GEBRABIT می باشد، ماژول GebraBit ICM20649 را به صورت Pin to Pin به راحتی بر روی ماژول GebraBit ATMEGA32A قرار داده و با تغییر وضعیت مقاومت های جامپر انتخاب پروتکل، با ماژول GebraBit ICM20649از طریق SPI یا I2C ارتباط برقرار کنید.
در اینجا برای درک بهتر، اتصال جداگانه ماژول ها نمایش داده شده است
توجه: در صورت استفاده از ماژولهای میکروکنترلری GebraBit توجه داشته باشید که جامپر سلکتورهای تغذیه ماژول GebraBit ICM20649 روی 3V3 باشد تا راحت تر بتوانید ولتاژ3V3 را از ماژول میکروکنترلری گرفته و ماژول را فعال کنید.
اتصال I2C با ARDUINO UNO
ابتدا اطمینان حاصل کنید که پروتکل I2C با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال I2C ماژول GebraBit ICM20649به ARDUINO UNO مراحل زیر را دنبال کنید:
- پین 3V3 ماژول ICM20649 را به پین 3V3 خروجی برد ARDUINO UNO متصل کنید.(سیم قرمز)
- پین GND ماژول ICM20649 را به پین GND برد ARDUINO UNO متصل کنید.(سیم سیاه)
- پین SCL ماژول ICM20649 را به پین A5 برد ARDUINO UNO( (SCLمتصل کنید.(سیم آبی)
- پین SDA ماژول ICM20649 را به پین A4 برد ARDUINO UNO( (SDAمتصل کنید.(سیم نارنجی)
نحوه اتصال موارد ذکر شده در بالا،در این تصویر مشاهده می شود:
اتصال SPI با ARDUINO UNO
ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال SPI ماژول GebraBit ICM20649 به ARDUINO UNO مراحل زیر را دنبال کنید:
- پین 3V3 ماژول ICM20649 را به پین 3V3 خروجی برد ARDUINO UNO متصل کنید.(سیم قرمز)
- پین GND ماژول ICM20649 را به پین GND برد ARDUINO UNO متصل کنید.(سیم سیاه)
- پین SDI ماژول ICM20649 را به پین D11 برد ARDUINO UNO( (SDIمتصل کنید.(سیم زرد)
- پین SDO ماژول ICM20649 را به پین D12 برد ARDUINO UNO( (SDOمتصل کنید.(سیم بنفش)
- پین SCK ماژول ICM20649 را به پین D13 برد ARDUINO UNO( (SCKمتصل کنید.(سیم نارنجی)
- پین CS ماژول ICM20649 را به پین D10 برد ARDUINO UNO( (SSمتصل کنید.(سیم آبی)
نحوه اتصال موارد ذکر شده در بالا،در این تصویر مشاهده می شود: