مروری بر ICM20948
ICM20948 یک ماژول چند تراشه ای (MCM) است که از دو قسمت ادغام شده در یک تراشه با پکیج QFN تشکیل شده است. یکی از بخش ها دارای یک ژیروسکوپ 3 محوره، یک شتاب سنج 3 محوره و یک پردازنده دیجیتال حرکتی (DMP) است. قسمت دیگر نیز، یک مغناطیس سنج 3 محوره AK09916 محصول شرکت Asahi Kasei Microdevices را در خود جای داده است. ICM20948 یک Motion Tracking 9 محوره است که در پکیج کوچک QFN با ابعاد 3*3*1mm عرضه شده است. ژیروسکوپ ICM20789 دارای full-scale range قابل برنامه ریزی با مقادیر ±250dps ، ±500dps ، ±1000dps و ±2000dps است. شتاب سنج از چهار رنج قابل تنظیم ±2g ، ±4g ، ±8g و ±16g پشتیبانی می کند. از سایر ویژگی های پیشرو در این سنسور می توان به 16 بیت ADC داخلی، فیلترهای دیجیتال قابل برنامه ریزی،سنسور دمای داخلی، وقفههای قابل برنامه ریزی، پروتکل های ارتباطی دیجیتال I2C و SPI اشاره کرد.
مشخصات فنی
- Number of Axis: 9-Axis
- Output type: Digital-I2C or SPI
- Accelerometer FSR: ±2, ±4, ±8, ±16(g)
- Accelerometer Sensitivity SF: 16384, 2048 (LSB/g), 4096, 8192
- Accelerometer ADC:16-Bit
- Gyroscope FSR: ±250, ±500, ±1000, ±2000(dps)
- Gyroscope Sensitivity SF : 131, 16.4 (LSB/dps), 32.8, 65.5
- Gyroscope ADC: 16-Bit
- Magnetometer FSR: ±4900 µT
- Magnetometer Resolution: 16 Bit
کاربردها
- Smartphones and Tablets
- Wearable Sensors
- IOT Applications
ماژول 9 محوره ژیروسکوپ شتاب سنج و قطب نما GebraBit ICM20948

- با توجه به اینکه دسترسی به پایههای سنسور دشوار است، کاربران برای توسعه سختافزاری و نرمافزاری این سنسور به یک برد ابتدایی (starter board) و درایور نیاز دارند. برای راحتی کاربران، GebraMS برد ماژول 9 محوره ژیروسکوپ شتاب سنج و قطب نما GebraBit ICM20948 را طراحی کرده است. کاربران میتوانند به کمک این برد، به مهمترین پایههای سنسور بهراحتی دسترسی پیدا کنند.
- کافی است برد ماژول 9 محوره ژیروسکوپ شتاب سنج و قطب نما GebraBit ICM20948 را روی برد (Breadboard) قرار دهید و سپس با یکی از بردهای Arduino، Raspberry Pi یا Discovery و با اعمال ولتاژ مناسب، آن را راهاندازی کنید.
- ما بهویژه استفاده از Gebra STM32F303 را توصیه میکنیم؛ چرا که این برد دارای رگولاتور داخلی ۳.۳ ولت است و ترتیب پایههای آن با تمامی ماژولهای Gebra هماهنگ است (استاندارد GEBRABUS)، بنابراین میتوانید برد ماژول 9 محوره ژیروسکوپ شتاب سنج و قطب نما GebraBit ICM20948 را مستقیماً به سوکت مربوطه متصل کرده و بدون نیاز به سیمکشی، برنامهنویسی را آغاز کنید.
ویژگیهای ماژولGebraBit ICM20948
- User-selectable interface protocol (I2C or SPI)
- User-selectable I2C address (AD0)
- Auxiliary I2C interface
- 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)
پین های ماژول

پین های تغذیه
- 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 AUX: این پین، پین دیتای ارتباط I2C AUX می باشد، که به پین دیتای متناظر در میکروکنترلر(پردازنده) ، متصل می شود. این پین با یک مقاومت 10K پول آپ (Pull Up) شده است.
- SCL AUX: این پین، پین کلاک ارتباط I2C AUX می باشد، که به پین کلاک متناظر در میکروکنترلر(پردازنده) ، متصل می شود.این پین با یک مقاومت 10K پول آپ (Pull Up) شده است.
توجه: از آنجا که سطح منطق GebraBit ICM20948 مقدار 1.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 ICM20948 مقدار 8V و سطح منطق بردهای توسعه مقدار 5V می باشد، نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد.
در صورتی که می خواهید از چندین ماژول GebraBit ICM20948 به صورت همزمان استفاده کنید، کافیست پین های SDO , SDI , SCK همه انها و میکرکنترلر(پردازنده) را به هم متصل کرده و به CS هر کدام، یک پین منحصر به فرد اختصاص دهید.
توجه: از آنجا که سطح منطق GebraBit ICM20948 مقدار 8V و سطح منطق بردهای توسعه مقدار 5V می باشد، نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد.
دیگر پین ها
- INT : پین Interrupt (وقفه) سنسور ICM20984بوده که با توجه به دیتاشیت سنسور، کاربر می تواند شرایط وقوع وقفه،حالات و روش های وقوع وقفه و … را تنظیم کند.
- FSY(FSYNC) : برای همگام سازی (Synchronization) سنسور با یک منبع خارجی ، از این پین استفاده میشود.برای اطلاعات بیشتر دیتاشیت سنسور مطالعه شود.به صورت پیش فرض این پین با مقاومت R3 به زمین متصل شده است.جهت استفاده از پین، مقاومت R3 باید از ماژول ، جدا (دمونتاژ) گردد.
معرفی بخش های ماژول

سنسور ICM20948
ای سی اصلی این ماژول بوده که در مرکز ماژول قرار گرفته و مدار ان طراحی شده است.
جامپرهای انتخاب پروتکل ارتباطی
در صورتی که مقاومتهای 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 ماژول روشن می شود.
اتصال به پردازنده
اتصال I2C با GebraBit STM32F303
ابتدا اطمینان حاصل کنید که پروتکل I2C با استفاده از جامپر های روی برد انتخاب شده است، از آنجا که سطح منطق GebraBit ICM20948 مقدار 1.8V و سطح منطق GebraBit STM32F303 3.3V می باشد نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد. سپس برای اتصال I2C ماژول GebraBit ICM20948 ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDA و SCL رو پین های PB9 و PB8 (برای راحتی کار در STMCUBEMX)مراحل زیر را دنبال کنید:
- با توجه به توضیحات بالا پین 1V8 ماژول ICM20948به واسطه Logic Level Convertor به پین 3V3 خروجی ماژول میکروکنترلر متصل کنید.(سیم زرد و سبز)
- پینهای GND ماژول ICM20948و میکروکنترلر را مطابق تصویر زیر متصل کنید.(سیمهای سیاه)
- پین SCL و SDA ماژول ICM20948 را به واسطه ماژول Logic Level Convertor به ترتیب به پینهای PB8(SCL) و PB9(SDA) ماژول میکروکنترلر متصل کنید.(سیم های آبی)

اتصال SPI با GebraBit STM32F303
ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است.از آنجا که سطح منطق GebraBit ICM20948 مقدار 1.8V و سطح منطق GebraBit STM32F303 مقدار3.3V می باشد نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد.سپس برای اتصال SPI ماژول GebraBit ICM20948 ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDI و SDO و SCK و CS روی پین های PB5 و PB4 و PB3 و PC13 (برای راحتی کار در STMCUBEMX) اتصالات را طبق تصویر زیر برقرار کنید:

اتصال I2C با GebraBit ATMEGA32A
ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است.از آنجا که سطح منطق GebraBit ICM20948 مقدار 1.8V و سطح منطق GebraBit STM32F303 مقدار3.3V می باشد نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد.سپس برای اتصال SPI ماژول GebraBit ICM20948 ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDI و SDO و SCK و CS روی پین های PB5 و PB4 و PB3 و PC13 (برای راحتی کار در STMCUBEMX) اتصالات را طبق تصویر زیر برقرار کنید:

اتصال SPI با GebraBit ATMEGA32A
ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است، از آنجا که سطح منطق GebraBit ICM20948 مقدار 1.8V و سطح منطق GebraBit ATMEGA32A مقدار 3.3V می باشد نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد. سپس برای اتصال SPI ماژول GebraBit ICM20948به ماژول میکروکنترلرGebraBit ATMEGA32A بعد از تعریف کردن SDI و SDO و SCK و CS روی پین های PB5 و PB4 و PB3 و PC13 طبق تصویر زیر اتصالات را برقرار نمایید:

اتصال I2C با ARDUINO UNO
از آنجا که سطح منطق GebraBit ICM20984 مقدار 1.8V و سطح منطق برد ARDUINO UNO مقدار 5V می باشد، نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد.ابتدا اطمینان حاصل کنید که پروتکل I2C با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال I2C ماژول GebraBit ICM20948 به ARDUINO UNO مراحل زیر را دنبال کنید:
- پین 1V8 ماژول ICM20948 را به پین 5V خروجی برد ARDUINO UNO طبق توضیحات بالا متصل کنید.(سیم قرمز)
- پین GND ماژول ICM20948را به پین GND برد ARDUINO UNO متصل کنید.(سیم سیاه)
- پین SCL ماژول ICM20948را به پین A5 برد ARDUINO UNO( (SCLمتصل کنید.(سیم آبی)
- پین SDA ماژول ICM20948را به پین A4 برد ARDUINO UNO( (SDAمتصل کنید.(سیم آبی)

اتصال SPI با ARDUINO UNO
ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است. از آنجا که سطح منطق GebraBit ICM20984 مقدار 1.8V و سطح منطق برد ARDUINO UNO مقدار 5V می باشد، نیاز است تا از طریق ماژول Logic Level Convertor دو سطح منطق را به یکدیگر تبدیل کرد. سپس برای اتصال SPI ماژول GebraBit ICM20984 به برد ARDUINO UNO مراحل زیر را دنبال کنید:
- پین 1V8 ماژول ICM20984را به پین 5V خروجی برد ARDUINO UNO طبق توضیحات بالا متصل کنید.(سیم قرمز)
- پین GND ماژول ICM20948را به پین GND برد ARDUINO UNO متصل کنید.(سیم سیاه)
- پین SDI ماژول ICM20948را به پین D11 برد ARDUINO UNO( (SDIمتصل کنید.(سیم آبی)
- پین SDO ماژول ICM20948را به پین D12 برد ARDUINO UNO( (SDOمتصل کنید.(سیم آبی)
- پین SCK ماژول ICM20948را به پین D13 برد ARDUINO UNO( (SCKمتصل کنید.(سیم آبی)
- پین CS ماژول ICM20948را به پین D10 برد ARDUINO UNO( (SSمتصل کنید.(سیم آبی)
