ماژول GEBRABIT-IAM20380

26.520.000 ریال

ماژول GEBRABIT-IAM20380 یک ژیروسکوپ سه‌محوره دقیق و کم‌مصرف است که بر پایه سنسور صنعتی IAM-20380 طراحی شده است. این ماژول با پشتیبانی از رابط‌های I2C و SPI، گزینه‌ای ایده‌آل برای کاربردهای ناوبری اینرسی، پایش نرخ چرخش، رباتیک و پروژه‌های اینترنت اشیا (IoT) می‌باشد.

دسترسی: موجود در انبار

نوع ماژول

ماژول ژیروسکوپ

تعداد محور

3

حساسیت ژیروسکوپ

131, 16.4 (LSB/dps), 32.8, 65.5

رزولوشن ADC ژیروسکوپ

16 Bit

FSR ژیروسکوپ

±1000, ±2000 (dps), ±250, ±500

ولتاژ تغذیه

1V8, 3V3

جریان مصرفی

10 mA to 30 mA (Typ. 20 mA)

نوع خروجی

I2C, SPI, Digital

FSR

±250, ±500, ±1000, ±2000(dps)

دمای کاری

-40 to +85 °C

توجه!

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

مروری بر ژیروسکوپ IAM20380

IAM-20380 یک ژیروسکوپ 3 محوره در پکیج 16 پین LGA می باشد.سنسور ژیروسکوپ IAM-20380  همچنین دارای 512-بایت FIFO بوده که می تواند ترافیک گذرگاه سریال و توان مصرفی را با اجازه دادن به پردازنده برای خواندن پشت سر هم  اطلاعات سنسور و سپس رفتن به حالت کم مصرف، کاهش دهد .سنسور IAM-20380 با 3 محور یکپارچه سازی شده، به طراحان کمک می کند تا با بهرهگیری از این سنسور،فضای مورد نیاز برای طراحی و هزینه صرف شده برای انتخاب قطعات را کاهش دهند.ژیروسکوپ IAM-20380 دارای  full-scale range  قابل برنامه ریزی با مقادیر ±250 dps, ±500 dps, ±1000 dps, and ±2000 dps و16 بیت ADC داخلی بوده که این سنسور را یک انتخاب ایده آل برای کاربردهایی نظیر سیستم های ناوبری ، آشکار سازهای حرکتی و حتی تثبیت دوربین های عکاسی می کند. از سایر ویژگی های پیشرو در این سنسور می توان به فیلترهای دیجیتال قابل برنامه ریزی،سنسور دمای داخلی و پروتکل های ارتباطی دیجیتال I2C و SPI اشاره کرد.

مشخصات فنی

  • Number of Axis: 3-Axis
  • Output type: Digital-I2C or SPI
  • FSR: ±250, ±500, ±1000, ±2000(dps)
  • Gyroscope ADC: 16 Bit
  • 〈 For more specifications, please refer to datasheet 〉

کاربرد

  • Navigation systems Aides for Dead Reckoning 
  • • Lift Gate Motion Detections
  • Accurate Location for Vehicle to Vehicle and Infrastructure
  • 360º view camera stabilization
  • Car Alarm
  • Telematics
  • Insurance Vehicle Tracking

ماژول GEBRABIT-IAM20380

  • با توجه به اینکه دسترسی به پایه‌های سنسور دشوار است، کاربران برای توسعه سخت‌افزاری و نرم‌افزاری این سنسور به یک برد ابتدایی (starter board) و درایور نیاز دارند. برای راحتی کاربران، GebraMS برد ماژول GEBRABIT-IAM20380 را طراحی کرده است. کاربران می‌توانند به کمک این برد، به مهم‌ترین پایه‌های سنسور به‌راحتی دسترسی پیدا کنند.
  • کافی است برد ماژول GEBRABIT-IAM20380 را روی برد (Breadboard) قرار دهید و سپس با یکی از بردهای Arduino، Raspberry Pi یا Discovery و با اعمال ولتاژ مناسب، آن را راه‌اندازی کنید.
  • ما به‌ویژه استفاده از Gebra STM32F303 را توصیه می‌کنیم؛ چرا که این برد دارای رگولاتور داخلی ۳.۳ ولت است و ترتیب پایه‌های آن با تمامی ماژول‌های Gebra هماهنگ است (استاندارد GEBRABUS)، بنابراین می‌توانید برد ماژول GEBRABIT-IAM20380 را مستقیماً به سوکت مربوطه متصل کرده و بدون نیاز به سیم‌کشی، برنامه‌نویسی را آغاز کنید.

ویژگی های ماژول GebraBit IAM20380

  • 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)
  • 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)

پین های ماژول

پین های تغذیه

  • 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) شده است.

SPI pins

با استفاده از Jumper Selector های تعبیه شده روی برد می توان نوع ارتباط با ماژول را انتخاب کرد.در صورتی که مقاومتهای 0R تمام Jumper Selector ها به سمت راست باشد،پروتکل SPI اتنخاب شده است.وضعیت جامپر AD0 SEL در این حالت بی تاثیر است.

  • SDO(MISO) : از این پین، برای ارسال دیتا از ماژول(سنسور) به میکروکنترلر(پردازنده) استفاده میشود.نام اختصاری این پین برگرفته از عبارت لاتین Serial Data Out / Microcontroller In Sensor Out می باشد.
  • SCK : این پین، پین کلاک برای ارتباط SPI بوده که از نوع ورودی (Input) برای سنسور محسوب و به پین کلاک متناظر در میکروکنترلر(پردازنده) ، متصل می شود.
  • CS : این پین، پین Chip Select برای ارتباط SPI با ماژول(سنسور) می باشد، که با اعمال ولتاژ LOW (0V) ،ماژول(سنسور) برای ارتباط SPI انتخاب می شود.این پین از نوع ورودی (Input) برای سنسور محسوب می شود.

در صورتی که می خواهید از چندین ماژول GebraBit IAM20380 به صورت همزمان استفاده کنید، کافیست پین های SDO , SDI , SCK همه انها و میکرکنترلر(پردازنده) را به هم متصل کرده و به CS هر کدام، یک پین منحصر به فرد اختصاص دهید.

دیگر پین ها

  • INT : پین Interrupt (وقفه) سنسور IAM20380 بوده که با توجه به دیتاشیت سنسور، کاربر می تواند شرایط وقوع وقفه،حالات و روش های وقوع وقفه و … را تنظیم کند.
  • FSY(FSYNC) : برای همگام سازی (Synchronization) سنسور با یک منبع خارجی ، از این پین استفاده میشود.برای اطلاعات بیشتر دیتاشیت سنسور مطالعه شود.به صورت پیش فرض این پین با مقاومت R3 به زمین متصل شده است.جهت استفاده از پین، مقاومت R3 باید از ماژول ، جدا (دمونتاژ) گردد.

معرفی بخش های ماژول

سنسور IAM20380

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

جامپرهای انتخاب پروتکل ارتباطی

در صورتی که مقاومتهای 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 ماژول روشن می شود.

اتصال به پردازنده

اتصال I2C با GebraBit STM32F303

ابتدا اطمینان حاصل کنید که پروتکل I2C با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال I2C ماژول GebraBit IAM20380 به ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDA و SCL رو پین های PB9 و PB8 (برای راحتی کار در STMCUBEMX)مراحل زیر را دنبال کنید:

  • پین 3V3 ماژول IAM20380 را به پین 3V3 خروجی ماژول میکروکنترلر متصل کنید.(سیم قرمز)
  • پین GND ماژول IAM20380 را به پین GND ماژول میکروکنترلر متصل کنید.(سیم سیاه)
  • پین SCL ماژول IAM20380 را به پین PB8 ماژول میکروکنترلر (SCL) متصل کنید.(سیم آبی)
  • پین SDA ماژول IAM20380 را به پین PB9 ماژول میکروکنترلر (SDA) متصل کنید.(سیم زرد)

توجه: با توجه به اینکه پین PA14 ماژول میکروکنترلرGebraBit STM32F303 برای پروگرام کردن میکروکنترلر استفاده میشود،تنظیم I2C بر روی پین های PA14 و PA15 در این ورژن مقدور نمی باشد،لذا در اتصال I2C به ماژول میکروکنترلرGebraBit STM32F303 در این ورژن ، ماژول GebraBit IAM20380 نمی تواند به صورت Pin to Pin بر روی آن قرار گیرد.برای راحتی کار می توانید پروتکل SPI را با استفاده از جامپر های روی برد انتخاب کرده و سپس ماژول GebraBit IAM20380 را به صورت Pin to Pin بر روی ماژول GebraBit STM32F303 قرار دهید.

اتصال SPI با GebraBit STM32F303

ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال SPI ماژول GebraBit IAM20380 به ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDI و SDO و SCK و CS رو پین های PB5 و PB4 و PB3 و PC13 (برای راحتی کار در STMCUBEMX) ماژول GebraBit IAM20380 را به صورت Pin to Pin به راحتی بر روی ماژول GebraBit STM32F303 قرار دهید:

اتصال SPI یا I2C با GebraBit ATMEGA32A

با توجه به اینکه پین های SPI و I2C میکروکنترلر ATMEGA32A بر اساس استاندارد GEBRABUS متناظر با پین های SPI و I2C  دیگر ماژول های GEBRABIT می باشد،  ماژول GebraBit IAM20380 را به صورت Pin to Pin به راحتی بر روی ماژول GebraBit ATMEGA32A قرار داده و با تغییر وضعیت مقاومت های جامپر انتخاب پروتکل، با ماژول GebraBit IAM20380 از طریق SPI یا I2C ارتباط برقرار کنید:

اتصال I2C با ARDUINO UNO

ابتدا اطمینان حاصل کنید که پروتکل I2C با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال I2C ماژول GebraBit IAM20380 به ARDUINO UNO مراحل زیر را دنبال کنید:

  • پین 3V3 ماژول IAM20380 را به پین 3V3 خروجی برد ARDUINO UNO متصل کنید.(سیم قرمز)
  • پین GND ماژول IAM20380 را به پین GND برد ARDUINO UNO متصل کنید.(سیم سیاه)
  • پین SCL ماژول IAM20380 را به پین A5 برد ARDUINO UNO( (SCLمتصل کنید.(سیم آبی)
  • پین SDA ماژول IAM20380 را به پین A4 برد ARDUINO UNO( (SDAمتصل کنید.(سیم نارنجی)

اتصال SPI با ARDUINO UNO

ابتدا اطمینان حاصل کنید که پروتکل SPI با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال SPI ماژول GebraBit IAM20380 به ARDUINO UNO مراحل زیر را دنبال کنید:

  • پین 3V3 ماژول IAM20380 را به پین 3V3 خروجی برد ARDUINO UNO متصل کنید.(سیم قرمز)
  • پین GND ماژول IAM20380 را به پین GND برد ARDUINO UNO متصل کنید.(سیم سیاه)
  • پین SDI ماژول IAM20380 را به پین D11 برد ARDUINO UNO( (SDIمتصل کنید.(سیم زرد)
  • پین SDO ماژول IAM20380 را به پین D12 برد ARDUINO UNO( (SDOمتصل کنید.(سیم بنفش)
  • پین SCK ماژول IAM20380 را به پین D13 برد ARDUINO UNO( (SCKمتصل کنید.(سیم نارنجی)
  • پین CS ماژول IAM20380 را به پین D10 برد ARDUINO UNO( (SSمتصل کنید.(سیم آبی)
نوع ماژول

ماژول ژیروسکوپ

تعداد محور

3

حساسیت ژیروسکوپ

131, 16.4 (LSB/dps), 32.8, 65.5

رزولوشن ADC ژیروسکوپ

16 Bit

FSR ژیروسکوپ

±1000, ±2000 (dps), ±250, ±500

ولتاژ تغذیه

1V8, 3V3

جریان مصرفی

10 mA to 30 mA (Typ. 20 mA)

نوع خروجی

I2C, SPI, Digital

FSR

±250, ±500, ±1000, ±2000(dps)

دمای کاری

-40 to +85 °C

IAM20380 gebrabit project

هدف ما از انجام این پروژه چیست؟

در این بخش قصد داریم سنسور IAM20380 را به وسیله میکروکنترلر آرم، سری STM32F راه اندازی کنیم. به منظور استفاده راحت تر و بهینه تر در این پروژه از دو ماژول آماده GB300G و GebraBit STM32F303 استفاده میکنیم.

این دو ماژول شامل مینیمم قطعات لازم سنسور IAM20380و میکروکنترلر STM32F میباشند که توسط تیم جبرابیت جهت آسان سازی کار فراهم شده اند.

در این آموزش چه چیزهایی یاد میگیریم؟

شما در این بخش ضمن راه اندازی و استفاده از سنسورIAM20380  ، به طور خلاصه با تمامی رجیسترهای سنسور IAM20380، نحوه تنظیم بخش های مختلف میکروکنترلر STM32 برای راه اندازی این سنسور با استفاده از پروتکل I2C، چگونگی استفاده از فایل کتابخانه و درایور مختص ماژول GB6300G، نحوه فراخوانی توابع و در نهایت دریافت داده های سنسور در کامپایلر Keil  نیز آشنا خواهید شد.

برای انجام این پروژه به چه چیزهایی نیاز داریم؟

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

سخت افزارهای مورد نیاز نرم افزارهای مورد نیاز
  GebraBit IAM20380 module  Keil compiler 
  GebraBit STM32F303 module   STM32CubeMX program
 ST-LINK/V2 programmer

اولین قدم برای راه اندازی ماژول GebraBit IAM20380 با استفاده از رابط I2C آن است که ابتدا پروتکل ارتباطی SPI را با استفاده از جامپر های روی برد  انتخاب کرده و سپس مانند تصویر زیر ماژول  GebraBit IAM20380 را به صورت Pin To Pin بر روی ماژول GebraBit STM32F303 قرار دهیم:

توجه : تصویر بالا صرفا برای نمایش نحوه قرار گیری ماژول GebraBit IAM20380 بر روی ماژول GebraBit STM32F303  استفاده شده است . لذا برای استفاده از پروتکل ارتباطیI2C کاربر باید نسبت به انتخاب صحیح وضعیت جامپر های روی برد اقدام کند.

تنظیمات STM32CubeMX

در ادامه تنظیمات مربوط به هریک از بخش های I2C , RCC , Debug , Clock را در میکروکنترلر STM32F303 برای راه اندازی ماژول GebraBit IAM20380 را مرور می کنیم.

تنظیمات RCC

با توجه به وجود کریستال 8Mhz در ماژول GebraBit STM32F303 ، کلاک خارجی را در بخش RCC انتخاب می کنیم:

تنظیمات Debug&Programming

با توجه به دسترسی به پین های SWCLK و SWDIO در ماژول GebraBit STM32F303 ، برای کاهش تعداد پین هنگام  Debug&Programming در بلوک SYS گزینه Serial Wire را در بخش Debug انتخاب می کنیم:

تنظیمات I2C

برای ارتباط از طریق I2C با ماژول GebraBit STM32F303 پین های PB8 و PB9 را برای عدم تداخل با حالت Serial Wire هنگام  Debug&Programming ، به عنوان SCL و SDA انتخاب می کنیم :

تنظیمات Clock

تنظیمات کلاک مربوط به هریک از بخش های میکروکنترلر STM32F303 در این کد به شرح ذیل می باشد:

تنظیمات Project Manager

تنظیمات Project Manager به صورت زیر بوده که در اینجا ما از کامپایلر MDK-ARM ورژن 5.32 استفاده کرده ایم:

بعد از اتمام تمام تنظیمات فوق ، بر روی GENERATE CODE  کلیک کرده و با اضافه کردن کتابخانه و درایور(تهیه شده توسط GebraBit) IAM20380 ، کد خود را به راحتی توسعه می دهیم.فایل STM32CubeMX , کتابخانه و درایور و پروژه KEIL را می توانید از انتهای این آموزش دانلود کنید.

کتابخانه و درایور IAM20380

GebraBit علاوه بر طراحی ماژولار سنسورها و آی سی های مختلف ، پیشرو در ارائه انواع کتابخانه های ساختاریافته و مستقل از سخت افزار به زبان  C، جهت سهولت کاربران در راه اندازی و توسعه نرم افزاری آنها نیز بوده است.

بدین منظور پس از تهیه هر یک از ماژول های  GebraBit  ، کاربر می تواند با مراجعه به بخش آموزش ماژول مربوطه، کتابخانه مختص به آن ماژول که حاوی فایل .h و .c (Header and Source) و یک برنامه نمونه آموزشی تحت سخت افزار های GebraBit STM32F303, GebraBit ATMEGA32A یا Arduino می باشد را دانلود کند.

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

فایل هدر IAM20380.h

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

ساختار Gyro_Data

تمامی اطلاعاتی که می توان از یک ماژول GebraBit IAM20380 دریافت کرد، در این ساختار تعریف شده است:

ساختار IAM_20380_Conf

تنظیمات اصلی ماژول GebraBit IAM20380 که مربوط به رجیستر های 26 و 27 می باشد، در این ساختار تعریف شده است:

ساختار IAM_20380_FIFO_CFG

تنظیمات FIFO ماژول GebraBit IAM20380 که شامل رجیستر های 26 و 35 و 56 و 106 می باشد، در این ساختار تعریف شده است:

ساختار IAM_20380_LP

تنظیمات حالت LOW POWER ماژول GebraBit IAM20380 که شامل رجیستر های 25 و 30 می باشد، در این ساختار تعریف شده است:

ساختار IAM_20380_INT_CFG

تمامی تنظیمات وقفه Interrupt  ماژول GebraBit IAM20380 اعم از نوع وقفه، زمان وقوع، سطح منطق و….. که شامل رجیستر های 55 و 56 می باشد، در این ساختار تعریف شده است:

ساختار IAM_20380_INT_STATUS

وضعیت وقفه Interrupt رخ داده در ماژول GebraBit IAM20380 که با خواندن رجیستر های 54 و 58 قابل بررسی می باشد ،در این ساختار تعریف شده است:

ساختار IAM_20380_PWR

تمامی تنظیمات مربوط به POWER MANAGEMENT ماژول GebraBit IAM20380 که شامل رجیستر های 107 و 108 می باشد، در این ساختار تعریف شده است:

ساختار IAM_20380_SET

در نهایت IAM_20380_SET ساختار کلی ماژول GebraBit IAM20380 بوده که با استفاده از ساختار های ذکر شده بالا تعریف شده است.در واقع کاربر برای تنظیمات ماژول GebraBit IAM20380 ، فقط این ساختار را مقدار دهی میکند و سپس با استفاده از تابع IAM_20380_init ، تمامی مقادیر را برای ماژول GebraBit IAM20380 ، به اصطلاح Initialize می کند.

فایل سورس IAM20380.c

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

برنامه نمونه در Keil

بعد از تولید پروژه Keil با استفاده از STM32CubeMX و اضافه کردن کتابخانه IAM20380 ارائه شده توسط GebraBit ، به بررسی قسمت اصلی برنامه آموزشی نمونه، فایل main.c و مشاهده خروجی ماژول GebraBit IAM20380 در قسمت watch در محیط Debugging برنامه Keil می پردازیم.

شرح فایل main.c

اگر به ابتدای فایل main.c دقت کنید،متوجه می شوید که هدر IAM_20380.h برای دسترسی به ساختار ها و توابع مورد نیاز ماژول GebraBit IAM20380 ، اضافه شده است.در قسمت بعدی متغیرهایی نظیر FIFO_Buffer[515] برای ذخیره بافر IAM20380 و متغیری به نام Setting_Struct از نوع ساختار IAM_20380_SET (این ساختار در هدرIAM_20380.h بوده و در بخش توضیحات کتابخانه IAM20380 توضیح داده شد) که برای پیکربندی ماژول GebraBit IAM20380 می باشد،تعریف شده است.

در بخش بعدی کد نوشته شده، پیکربندی و تنظیمات ماژول GebraBit IAM20380  با استفاده از ساختار متغیر Setting_Struct (از نوع ساختار IAM_20380_SET ) انجام شده است.در نهایت با ارجاع ساختار Setting_Struct به آرگومان تابع IAM_20380_init() ، ماژول GebraBit IAM20380 پیکربندی می شود.

 و در نهایت در قسمت while برنامه ، مقادیر ماژول GebraBit IAM20380 در 3 محور X , Y , Z به طور پیوسته دریافت میشود:

در متن برنامه نوشته شده در main.c توابع دیگری نیز استفاده شده است که به صورت کامنت درآمده اند.می توانید با uncomment کردن هر یک از عملکرد آنها نیز بهره مند شوید.

خروجی برنامه

حال پروگرامر STLINK V2 را با استفاده از آداپتور تبدیل STLINKV2 به GebraBit STM32F303 متصل می کنیم:

  با اتصال پروگرامر STLINK V2 به GebraBit STM32F303 دیگر نیازی به اعمال تغذیه به  ماژول های GebraBit STM32F303 و GebraBit IAM20380 نمی باشد، زیرا ولتاژ کاری خود را مستقیما از پروگرامر STLINK V2 دریافت میکنند.

در نهایت وارد حالت Debug شده و با اضافه کردن متغیر Gyro_Data_Value (از نوع ساختار Gyro_Data بوده و در فایل IAM20380.C تعریف شده است) به پنجره  watch و اجرای برنامه ، تغییرات مقادیر ماژول GebraBit IAM20380 را در 3 محور X , Y , Z مشاهده می کنیم:

در ادامه می توانید پروژه راه اندازی ماژول GebraBit IAM20380 را با استفاده از ماژول GebraBit STM32F303 در محیط Keil و فایل STM32CubeMX ، شماتیک ماژول ها و دیتاشیت IAM20380 را دانلود کنید.

1. سنسور IAM-20380 چیست و چه کاربردی دارد؟

سنسور IAM-20380 یک 3-Axis Gyroscope کم‌مصرف از شرکت TDK است که برای Motion Sensing با دقت بالا طراحی شده است. این سنسور از رابط‌های دیجیتال I²C / SPI پشتیبانی می‌کند و محدوده اندازه‌گیری آن معمولاً ±250 تا ±2000 dps است. ساختار MEMS داخلی آن باعث پایداری حرارتی و کاهش drift می‌شود. IAM-20380 در کاربردهای صنعتی، رباتیک، پهپادها و کنترل حرکتی استفاده می‌شود.

🔗 Reference: Official Datasheet – IAM-20380


2. اصول عملکرد ژیروسکوپ MEMS در سنسور IAM-20380 چگونه است؟

سنسور IAM-20380 بر اساس اثر Coriolis کار می‌کند؛ یعنی تغییر حرکت جرم داخلی باعث تولید سیگنال الکتریکی می‌شود. این سیگنال پس از تقویت و عبور از Digital Low-Pass Filter (DLPF) به داده خام تبدیل می‌شود. این ساختار باعث می‌شود دقت (accuracy) و پایداری آن در سرعت‌های زاویه‌ای بالا حفظ گردد. پردازنده داخلی نیز داده‌ها را روی رجیسترهای 16bit ارائه می‌دهد.

🔗 Reference: Official Datasheet – IAM-20380


3. ولتاژ تغذیه مورد نیاز IAM-20380 چقدر است و چه تلورانسی دارد؟

سنسور IAM-20380 معمولاً با 1.71V تا 3.6V کار می‌کند و مصرف توان آن در حالت فعال حدود چند میلی‌وات است. تلورانس ولتاژ با طراحی LDO مناسب روی PCB باید رعایت شود تا Noise ورودی کم باقی بماند. در بسیاری از کاربردها استفاده از یک منبع 3.3V پایدار توصیه می‌شود. همچنین سنسور دارای محافظت داخلی در برابر نوسانات لحظه‌ای است.

🔗 Reference: Official Datasheet – IAM-20380


4. دقت اندازه‌گیری (accuracy) در IAM-20380 چگونه تعیین می‌شود؟

دقت IAM-20380 به فاکتورهایی مانند Noise Density، Bandwidth، و Drift حرارتی بستگی دارد. مقدار Typical Noise برای این مدل حدود چند mdps/√Hz است. تنظیم DLPF و Full-Scale Range نیز مستقیماً بر accuracy نهایی اثر دارد. برای کاربردهای دقیق بهتر است سنسور قبل از استفاده Calibration شود.

🔗 Reference: Official Datasheet – IAM-20380


5. ارتباط I²C در سنسور IAM-20380 چه سرعتی را پشتیبانی می‌کند؟

IAM-20380 از Standard Mode (100 kHz) و Fast Mode (400 kHz) پشتیبانی می‌کند. ساختار رجیستری آن ساده است و شامل رجیسترهای WHO_AM_I، CONFIG و خروجی‌های X/Y/Z می‌باشد. برای پایدار بودن ارتباط، توصیه می‌شود Pull-up مناسب روی SDA/SCL استفاده شود، معمولاً 2.2kΩ تا 4.7kΩ. همچنین این سنسور قابلیت Multi-Master دارد.

🔗 Reference: Official Datasheet – IAM-20380


6. آیا IAM-20380 از SPI نیز پشتیبانی می‌کند؟

بله، IAM-20380 دارای رابط SPI چهار سیمه با سرعت بالا است. مزیت SPI نسبت به I²C پایداری بیشتر در محیط‌های نویزی می‌باشد. Addressing در SPI حذف شده و انتقال داده سریع‌تر انجام می‌شود. طراح معمولاً برای کاربردهای صنعتی SPI را ترجیح می‌دهد.

🔗 Reference: Official Datasheet – IAM-20380


7. چه روش‌هایی برای Calibration در IAM-20380 پیشنهاد می‌شود؟

Calibration شامل Zero-Rate Offset، Gain Correction و Temperature Compensation است. ساده‌ترین روش قرار دادن سنسور روی سطح ثابت و ثبت متوسط نمونه‌هاست. در کاربردهای دقیق‌تر، الگوریتم‌های Extended Kalman Filter (EKF) و روش Allan Deviation نیز مفید هستند. IAM-20380 برای Self-Test نیز App Note رسمی دارد.

🔗 Reference: AN-000143 Self-Test


8. فرکانس نمونه‌برداری (ODR) در IAM-20380 چگونه تنظیم می‌شود؟

ODR از طریق رجیسترهای CONFIG و SMPLRT_DIV تنظیم می‌شود. مقادیر معمول شامل 100Hz، 200Hz تا 1kHz است. انتخاب ODR مناسب تأثیر مستقیم بر Noise، latency و پردازش دارد. در سیستم‌های کنترل real-time بهتر است ODR حداقل 500Hz باشد.

🔗 Reference: Official Datasheet – IAM-20380


9. روش اجرای Self-Test در IAM-20380 چیست؟

برای اجرای Self-Test باید بیت‌های مربوط به ST در رجیسترهای کنترل فعال شوند. سپس خروجی سنسور در دو حالت فعال و غیر فعال Self-Test مقایسه می‌شود. اختلاف خروجی باید در بازه‌های مشخص‌شده در App Note باشد. این روش برای اطمینان از سلامت MEMS ضروری است.

🔗 Reference: AN-000143 Self-Test


10. حساسیت (Sensitivity) در IAM-20380 چگونه محاسبه می‌شود؟

مقدار حساسیت با Full-Scale Range مرتبط است. برای مثال در ±1000 dps مقدار LSB حساسیت حدود 32.8 LSB/dps است. فرمول تبدیل به صورت:
Rate(dps) = Raw / Sensitivity
این مقدار در جدول‌های Datasheet موجود است.

🔗 Reference: Official Datasheet – IAM-20380


11. آیا سنسور IAM-20380 مقاومت خوبی در برابر نویز دارد؟

بله، نویز داخلی MEMS این مدل نسبتاً پایین است و با DLPF قابل کاهش می‌باشد. مقدار Noise Typical کمتر از 0.01 dps/√Hz است. استفاده از Ground Plane، مسیر کوتاه و فیلترهای RC روی خطوط تغذیه، عملکرد ضدنویز را بهبود می‌دهد.

🔗 Reference: Official Datasheet – IAM-20380


12. خطای حرارتی (Temperature Drift) در IAM-20380 چقدر است؟

در دماهای مختلف Drift به دلیل تغییر خواص MEMS اتفاق می‌افتد. مقدار Typical Drift حدود چند dps/°C است. با استفاده از روش‌های Compensation نرم‌افزاری و Calibration در دو دمای متفاوت می‌توان خطا را تا 70٪ کاهش داد.

🔗 Reference: Official Datasheet – IAM-20380


13. بهترین روش کاهش Offset در سنسور IAM-20380 چیست؟

Offset در شرایط بدون حرکت اندازه‌گیری می‌شود. با گرفتن 500 تا 2000 نمونه و انجام Average می‌توان Zero Offset را تعیین کرد. سپس این مقدار همیشه از خروجی کم می‌شود. همچنین Drift حرارتی با جدول‌سازی دما بهبود می‌یابد.

🔗 Reference: AN-000143 Self-Test


14. سیم‌کشی صحیح IAM-20380 روی PCB چگونه است؟

برای بهترین عملکرد بهتر است سنسور در مرکز برد و روی Ground Plane یکپارچه قرار گیرد. مسیرهای SDA/SCL یا MOSI/MISO کوتاه طراحی شوند و خازن‌های Decoupling 100nF و 1µF کنار سنسور قرار گیرند. فاصله از موتورهای Brushless نویزی نیز ضروری است.

🔗 Reference: EVB Guide – IAM-2038x


15. شرایط قرارگیری سنسور IAM-20380 از نظر محورهای XYZ چگونه است؟

جهت‌گیری محورهای X/Y/Z در Datasheet مشخص شده و باید مطابق با چرخش بدنه سیستم انتخاب شود. خطای نصب باعث افزایش offset و نیاز به Transformation Matrix نرم‌افزاری می‌شود. یک اشتباه 90 درجه‌ای می‌تواند خطای شدید در کنترل ربات ایجاد کند.

🔗 Reference: Official Datasheet – IAM-20380


16. میزان توان مصرفی IAM-20380 چقدر است؟

توان مصرفی در حالت فعال حدود 2–3 mW و در حالت Sleep Mode کمتر از 0.5 mW است. این مقدار برای سیستم‌های باتری‌محور ایده‌آل است. حالت Cycle Mode نیز برای مصرف بسیار پایین طراحی شده است.

🔗 Reference: Official Datasheet – IAM-20380


17. آیا IAM-20380 برای پهپادها مناسب است؟

بله، این سنسور با Noise کم، Drift پایین و مصرف انرژی کم، انتخاب مناسبی برای Stabilization پهپاد است. اکثر Flight Controllerها ODR بالای 1kHz نیاز دارند که IAM-20380 پشتیبانی می‌کند. پایداری آن در ارتعاشات نیز مناسب ارزیابی شده است.

🔗 Reference: Official Product Page


18. استفاده از IAM-20380 در رباتیک صنعتی چگونه است؟

در ربات‌ها، از IAM-20380 برای Motion Feedback و کنترل سرعت زاویه‌ای استفاده می‌شود. پاسخ سریع و Latency کم باعث می‌شود در Servo Control بسیار کاربردی باشد. بسیاری از سیستم‌های AGV از این سنسور بهره می‌برند.

🔗 Reference: Official Datasheet – IAM-20380


19. چرا خروجی IAM-20380 نویز زیاد دارد؟

علت می‌تواند عدم استفاده از DLPF، عدم Calibration یا نویز تغذیه باشد. کابل‌های طولانی نیز Noise را تشدید می‌کنند. همچنین ODR بالا بدون فیلتر مناسب خروجی را ناپایدار می‌کند.

🔗 Reference: Official Datasheet – IAM-20380


20. چرا سنسور IAM-20380 در I²C ACK نمی‌دهد؟

معمولاً عدم Pull-up مناسب یا انتخاب اشتباه Address باعث این مشکل می‌شود. همچنین اگر تغذیه 3.3V پایدار نباشد، سنسور در حالت Reset باقی می‌ماند. بررسی WHO_AM_I ضروری است.

🔗 Reference: Official Datasheet – IAM-20380


21. چرا مقدار Offset در IAM-20380 زیاد است؟

عدم تثبیت حرارتی (برای مثال گرمایش اولیه 30 ثانیه) عامل اصلی است. همچنین نصب کج سنسور، ضربه مکانیکی یا کیفیت بد PCB این مشکل را ایجاد می‌کند. کالیبراسیون اولیه ضروری است.

🔗 Reference: AN-000143 Self-Test


22. چرا خروجی IAM-20380 Saturate می‌شود؟

وقتی سرعت زاویه‌ای از FS تنظیم‌شده بیشتر شود، مقدار خروجی Saturate می‌گردد. انتخاب Full-Scale مناسب مثل ±2000 dps مشکل را حل می‌کند. همچنین نویز شدید می‌تواند باعث Overflow شود.

🔗 Reference: Official Datasheet – IAM-20380


23. چرا IAM-20380 در SPI داده غلط می‌دهد؟

اتصال اشتباه MISO/MOSI، زمان‌بندی Clock، یا Mode نادرست باعث این خطا می‌شود. توجه به CPOL/CPHA مطابق Datasheet ضروری است. برخی MCUها نیاز به تغییر لبه نمونه‌برداری دارند.

🔗 Reference: Official Datasheet – IAM-20380


24. راه‌اندازی IAM-20380 در Arduino چگونه است؟

در Arduino با استفاده از Wire یا SPI می‌توان سنسور را راه‌اندازی کرد. کافی است رجیستر Power-Management را فعال کنید، FS Range را انتخاب کرده و مقادیر خروجی X/Y/Z را بخوانید. بسیاری از کدهای نمونه MPU-based مشابه هستند و به راحتی Adapt می‌شوند.

🔗 Reference: Official Product Page


25. راه‌اندازی IAM-20380 در STM32 چگونه است؟

در STM32 می‌توان از HAL_I2C و HAL_SPI برای خواندن رجیستر استفاده کرد. DMA برای Sample Rate بالا (مثلاً 1kHz) پیشنهاد می‌شود. ابتدا WHO_AM_I را بخوانید و سپس CONFIG و DLPF را تنظیم کنید.

🔗 Reference: Official Datasheet – IAM-20380


26. آیا IAM-20380 دارای FIFO داخلی است؟

بله، این سنسور یک FIFO دارد که برای کاهش حجم ارتباط MCU و سنسور استفاده می‌شود. می‌توانید بلوک‌های داده را در بازه‌های زمانی مشخص بخوانید. این موضوع برای Logging بسیار مفید است و مصرف توان MCU را کم می‌کند.

🔗 Reference: Official Datasheet – IAM-20380


27. قابلیت Sleep Mode در IAM-20380 چگونه فعال می‌شود؟

با تنظیم بیت SLEEP در رجیستر Power-Management، سنسور وارد حالت کم‌مصرف می‌شود. در این حالت بخش‌های داخلی خاموش شده و تنها مدار کنترل تغذیه فعال است. خروج از Sleep چند میلی‌ثانیه طول می‌کشد.

🔗 Reference: Official Datasheet – IAM-20380


28. چرا استفاده از فیلتر DLPF در IAM-20380 مهم است؟

DLPF به شکل مؤثر Noise و jitter را حذف می‌کند. انتخاب مقدار کم (۵Hz یا ۱۰Hz) خروجی را بسیار Smooth می‌کند، ولی latency افزایش می‌یابد. برای کنترل real-time مقدار 20–42Hz بهترین گزینه است.

🔗 Reference: Official Datasheet – IAM-20380


29. آیا IAM-20380 در شرایط رطوبت بالا (Humidity) پایدار است؟

بله، رنج رطوبتی استاندارد صنعتی را پشتیبانی می‌کند. با این حال در محیط‌های بسیار مرطوب توصیه می‌شود سنسور در محفظه محافظ قرار گیرد. رطوبت دائم می‌تواند Drift را افزایش دهد.

🔗 Reference: Official Datasheet – IAM-20380


30. چه تفاوتی بین IAM-20380 و IAM-20380HT وجود دارد؟

نسخه HT برای دماهای شدید طراحی شده و عملکرد آن در محدوده دمایی Extended بهتر است. مشخصات الکتریکی مشابه هستند اما نسخه HT برای کاربردهای صنعتی سنگین توصیه می‌شود.

🔗 Reference: Official Datasheet – IAM-20380


31. تفاوت IAM-20380 با سنسورهای MPU-6000 چیست؟

سنسورهای سری MPU دارای Accelerometer داخلی هستند، اما IAM-20380 تنها Gyroscope است. مصرف توان IAM-20380 کمتر است و دقت آن در محورهای زاویه‌ای بهتر کنترل شده است. همچنین ODR و DLPF آن قابل تنظیم‌تر می‌باشد.

🔗 Reference: Product Page IAM-20380


32. چه کاربردهایی برای IAM-20380 در اتومبیل و صنعت وجود دارد؟

استفاده اصلی در سیستم‌های حرکت، ناوبری، IMU و تثبیت‌کننده‌های صنعتی است. در Robotics Arm نیز برای کنترل سرعت زاویه‌ای استفاده می‌شود. مقاومت بالا در برابر لرزش از ویژگی‌های مهم آن است.

🔗 Reference: Product Page IAM-20380


33. آیا IAM-20380 برای کاربردهای پزشکی مناسب است؟

برای دستگاه‌هایی مثل Endoscopy Motion Tools می‌توان از IAM-20380 استفاده کرد. مصرف پایین و ابعاد کوچک مزیت اصلی است. با این حال باید توجه داشت که گواهی‌نامه پزشکی ندارد و در دستگاه‌های حیاتی استفاده نمی‌شود.

🔗 Reference: Official Datasheet – IAM-20380


34. چه روشی برای فیلترینگ نرم‌افزاری IAM-20380 پیشنهاد می‌شود؟

فیلتر Complementary Filter برای محاسبه زاویه مناسب است. در سیستم‌های پیشرفته‌تر از Kalman Filter استفاده می‌شود. میزان Noise و Drift ورودی باید در ماتریس Q/R لحاظ شود.

🔗 Reference: Official Datasheet – IAM-20380


35. آیا سنسور IAM-20380 از Shock یا ضربه مکانیکی آسیب می‌بیند؟

در برابر ضربه‌های عادی مقاوم است ولی شوک شدید می‌تواند MEMS داخلی را آسیب بزند. استفاده از محافظ سیلیکونی در اطراف PCB مناسب است. همچنین نباید سنسور در خط تولید در معرض حرارت شدید باشد.

🔗 Reference: Official Datasheet – IAM-20380


36. سنسورهای مشابه و معروف با سنسور iam-20380 کدامند و چه تفاوت‌هایی با آن دارند؟

این سنسورها همگی در خانواده IMUهای سه‌محوره ژیروسکوپ قرار می‌گیرند و برای کاربردهای حرکتی، رباتیک، سیستم‌های تثبیت و کنترل مناسب هستند. تفاوت اصلی آن‌ها در نویز ژیروسکوپ، پهنای باند، پایداری دمایی و حساسیت محور متقاطع است که روی دقت نهایی سیستم اثر می‌گذارد. IAM-20380 معمولاً به‌عنوان گزینه‌ای کم‌مصرف و با نویز خوب شناخته می‌شود، درحالی‌که برخی مدل‌های جدیدتر مانند ICM-42605 عملکرد بهتری در نویز و پایداری ارائه می‌دهند. انتخاب نهایی کاملاً به اولویت شما بین قیمت، نویز، پهنای باند و پایداری حرارتی بستگی دارد.


پارامتر IAM-20380 MPU-6500 ICM-20602 ICM-42605 BMI270
محدوده ژیروسکوپ (dps) ±250/500/1000/2000 ±250/500/1000/2000 ±250/500/1000/2000 ±250/500/1000/2000 ±125/250/500/1000/2000
نویز ژیروسکوپ (°/s/√Hz) ~0.005 ~0.01 ~0.004 ~0.0035 ~0.004
پهنای باند / DLPF (Hz) 5 – 230 5 – 256 5 – 328 5 – 400 25 – 200
حساسیت محور متقاطع < 2% < 3% < 2% < 1% < 2%
پایداری حرارتی متوسط ضعیف خوب عالی خوب
مصرف توان پایین متوسط متوسط پایین بسیار پایین

🔗 Reference: Official Datasheet – IAM-20380

برای اطلاع دقیق از مقادیر کاری و حداکثر مقادیر مجاز آی‌سی‌ها، کاربران باید به دیتاشیت اصلی و رسمی آن قطعات مراجعه کنند

اگر هر یک از اسناد فنی ناقص یا اشتباه است، لطفاً به ما اطلاع دهید

با نظرات خود به تیم جبرا در بهبود کیفیت کمک کنید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

توجه!

محصولات ما صرفاً برای اهداف تحقیقاتی و توسعه طراحی شده‌اند. جبرابیت صراحتاً اعلام می‌کند که در صورت استفاده کاربران از این محصولات در کاربردهای حساس و دقیق از جمله امور مالی یا مواردی که به جان و مال انسان آسیب می‌زنند، هیچ‌گونه مسئولیتی را نمی‌پذیرد.

برای اطلاع دقیق از مقادیر کاری و حداکثر مقادیر مجاز آی‌سی‌ها (IC)، کاربران باید حتماً به دیتاشیت اصلی و رسمی آن قطعات مراجعه کنند.

سبد خرید
پیمایش به بالا