Home » فروشگاه » ماژول ضربان قلب GebraBit BH1790GLC
محصول اوریجینال جبرابیت
تست شده
کیفیت مهندسی
مهندسی پزشکی

ماژول ضربان قلب GebraBit BH1790GLC

7.500.000 ریال

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

توجه!

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

سنسورهای بایو مدیکال

سنسورهای بایو مدیکال، دستگاه های الکترونیکی خاصی هستند که می توانند سیگنال های زیست پزشکی را به سیگنال های الکتریکی قابل اندازه گیری تبدیل کنند. امروزه سنسورهای بایو مدیکال عنصر کلیدی در ابزارها و تجهیزات تشخیصی پزشکی هستند.

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

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

سنسورهای نوری مانیتور ضربان قلب

سنسورهای نوری مانیتور ضربان قلب رایج‌ترین نوع سنسورهای پالسی در بین سنسورهای پالسی استفاده شده در دستگاه‌های پوشیدنی‌ هستند. بیشتر آنها داده های ضربان قلب را از طریق “فتوپلتیسموگرافی” (PPG) یا فرآیند استفاده از نور برای اندازه گیری جریان خون جمع آوری می کنند. دستگاه های پوشیدنی‌ مجهز به نمایشگر نوری ضربان قلب دارای LED‌های کوچکی در قسمت زیرین خود هستند که نور سبز را به پوست مچ دست می‌تاباند. طول موج های مختلف نور از این امیترهای نوری با خونی که در مچ دست فرد جریان دارد، تعامل دارد. هنگامی که آن نور از خون جاری در مچ دست فرد منعکس می شود ، حسگر دیگری در دستگاه، این اطلاعات را می گیرد، سپس می‌توان آن داده‌ها را به همراه اطلاعات حرکتی که توسط شتاب‌سنج دستگاه شناسایی می‌شود، با الگوریتم‌های خاصی به پالس‌هایی قابل فهم تبدیل کرد.

مروری بر سنسورBH1790GLC

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

از ویژگی‌های این سنسور میتوان به وجود یک فیلتر IR CUT و یک LED درایور با قابلیت انتخاب جریان، در ساختار داخلی این سنسور اشاره کرد.

این سنسور در پکیج WLGA010V28 سایز 2.80 ×2.80×1.0mm   تولید میشود  و میتوان از این سنسور در ساخت سنسور‌های پوشیدنی، تلفن‌های هوشمند و تبلت‌ها استفاده کرد.

مشخصات فنی​

کاربردها​

  • Output type: Digital – I2C
  • Number of LEDs: 2EXT
  • Number of PDs :1
  • Wavelength Range: 470nm to 600nm
  • Wavelength Peak: 520nm
  • ADC Resolution: 14 Bit
  • Type of Filter: Built-in Ir-cut and Green Filter
  • Medical instrumentation (ECG) including:
  • – Patient monitoring: Holter, event, stress, and vital signs including ECG, AED, and telemedicine
  • – Personal care and fitness monitors
  • (heart rate, respiration, and ECG)
  • High-precision, simultaneous, multichannel data acquisition

ماژول GebraBit BH1790GLC

ماژولGebraBit BH1790GLCدارای یک سنسور نوری برای آی‌سی مانیتور ضربان قلب است که در این سنسور درایور LED و فوتودیود تشخیص نور سبز گنجانده شده است. در نتیجه دو LED1 و LED2 روی این ماژول تعبیه شده‌اند. ماژول GebraBit BH1790GLC برای روشن کردن سنسور BH1790GLC به یک ولتاژ ورودی 3V3 نیاز دارد. در این ماژول برای خواندن داده‌ها و ارتباط با سنسور رابط I2C  مورد نیاز است.

با توجه به پکیج WLGA010V28 سنسور BH1790GLC و عدم دسترسی به پین های آن ، کاربر برای توسعه سخت افزاری و البته توسعه نرم افزاری سنسور،نیاز به یک مدار راه انداز و درایور دارد.GebraBit برای راحتی کاربران، این امر را با پیاده سازی مدار سنسور BH1790GLC و ارایه دسترسی به پین های سیگنال های ارتباطی و تغذیه ، محق ساخته است.

کافیست ماژول GebraBit BH1790GLC را در BreadBoard قرار داده سپس با اعمال ولتاژ مورد نیاز، ماژول  GebraBit BH1790GLC را با هریک از برد های اردوینو، رزبری پای ، دیسکاوری و مخصوصا ماژول GebraBit STM32F303 یا GebraBit ATMEGA32  که پیشنهاد ما استفاده از ماژول های توسعه میکروکنترلری GebraBit هست،راه اندازی و دیتا را دریافت کنید.  

دلیل پیشنهاد ما در راه اندازی ماژول GebraBit BH1790GLC  با ماژول های توسعه میکروکنترلری GebraBit مانند GebraBit STM32F303 یا GebraBit ATMEGA32  ،وجود رگولاتور داخلی 3V3 در آنها و  سازگاری ترتیب پین های همه ماژول های GebraBit  با هم بوده(استاندارد GEBRABUS) که فقط کافیست ماژول  GebraBit BH1790GLC را مانند تصویر بالا در سوکت مربوطه قرار داده و بدون نیاز به سیم کشی ،ماژول سنسور مورد نظر را توسعه دهید.

توجه: با توجه به اینکه پین PA14 ماژول میکروکنترلرGebraBit STM32F303 برای پروگرام کردن میکروکنترلر استفاده میشود،تنظیم I2C بر روی پین های PA14 و PA15 در این ورژن مقدور نمی باشد ،لذا در اتصال I2C به ماژول میکروکنترلرGebraBit STM32F303 در این ورژن (ورژن شماره2) ، ماژول GebraBit BH1790GLC  نمی تواند به صورت Pin to Pin بر روی آن قرار گیرد.

ویژگی‌های ماژول GebraBit BH1790GLC​

  • Integrated emitting LEDs
  • User-selectable I2C logic level voltage
  • User-selectable LED1 & LED2 Anode Supply Voltage
  • I2C interface for reading data and configuring 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)

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

سنسور BH1790GLC

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

جامپرVDIO SEL

با توجه به وضعیت مقاومت  0R این جامپر ، سطح منطق (Logic Level) ارتباط دیجیتالI2C  سنسور و سایر پین‌های دیجیتال از بین 1V8 و 3V3 انتخاب می شود.

جامپر سلکتور ولتاژ LED (VLED SEL)

با توجه به وضعیت مقاومت‌ 0R  جامپر “VLED SEL” ولتاژ تغذیه آند LED های سبز بین “5V” یا “3V3” تعیین می‌شود.

LEDهای سبز

همانطور که گفته شد در سنسورهای نوری مانیتورینگ ضربان قلب ، فرآیند مانیتورینگ با تابش نور سبز به خون بدن فرد آغاز میشود ، ال ای دی‌های 1 و 2 تعبیه شده رو این ماژول نیز به همین منظور و برای تابش نور سبز به خون فرد، روی ماژول قرار گرفته اند.

تغذیه LED

با توجه به وضعیت جامپرها و اعمال ولتاژ به ماژول توسط پین مربوطه، LED ماژول روشن می شود.

پین های ماژول

پین های تغذیه

  • 5V و 3V3 و 1V8 : این پین‌ها می توانند با توجه به وضعیت Jumper Selector های VDIO و VLED، تغذیه اصلی سنسور و LED ها را تامین کنند.
  • GND : این پین زمین مشترک برای تغذیه ماژول است.

پین‌های I2C

  • SDA : این پین، پین دیتای ارتباط I2C می باشد، که به پین دیتای متناظر در میکروکنترلر(پردازنده) ، متصل می شود.با توجه به وضعیت جامپر VDIO، می‌توانید از سطح منطق(Logic Level) با ولتاژ 1V8 یا 3V3  استفاده کنید.این پین با یک مقاومت  پول آپ (Pull Up) شده است.
  • SCL : این پین، پین کلاک ارتباط I2C می باشد، که به پین کلاک متناظر در میکروکنترلر(پردازنده) ، متصل می شود.با توجه به وضعیت جامپر VDIO ، می‌توانید از سطح منطق(Logic Level) با ولتاژ 1V8 یا 3V3 استفاده کنید.این پین با یک مقاومت  پول آپ (Pull Up) شده است.

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

اتصال I2C با GebraBit STM32F303

برای اتصال I2C ماژول GebraBit BH1790GLC به ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDA و SCL رو پین های PB9 و PB8 (برای راحتی کار در STMCUBEMX)مراحل زیر را دنبال کنید:

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

نحوه اتصال موارد ذکر شده در بالا،در این تصویر مشاهده می شود:

اتصال I2C با GebraBit ATMEGA32A

با توجه به اینکه پین های I2C میکروکنترلر ATMEGA32A بر اساس استاندارد GEBRABUS متناظر با پین های I2C  دیگر ماژول های GEBRABIT می باشد،  ماژول GebraBit BH1790GLC را به صورت Pin to Pin به راحتی بر روی ماژول GebraBit ATMEGA32A قرار داده و  با ماژول GebraBit BH1790GLC از طریق I2C ارتباط برقرار کنید.

در اینجا برای درک بهتر، اتصال جداگانه ماژول ها نشان داده شده است.

توجه: در صورت استفاده از ماژول‌های میکروکنترلری GebraBit توجه داشته باشید که جامپر سلکتورهای VDIO و VLEDماژول GebraBit  BH1790GLC روی 3V3 باشد تا راحت تر بتوانید ولتاژ3V3 را از ماژول میکروکنترلری بگیرید و ماژول GebraBit  BH1790GLC را فعال کنید

اتصال I2C با ARDUINO UNO

برای اتصال I2C ماژول GebraBit BH1790GLC به ARDUINO UNO مراحل زیر را دنبال کنید:

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

نحوه اتصال موارد ذکر شده در بالا،در این تصویر مشاهده می شود:

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

هدف از انجام این پروژه، آشنایی کامل با عملکرد و راه‌اندازی ماژول ضربان قلب GebraBit BH1790GLC با استفاده از برد Arduino UNO است. در این پروژه یاد می‌گیریم که چگونه سنسور اپتیکال BH1790GLC با استفاده از بازتاب نور سبز از سطح پوست، تغییرات جریان خون را تشخیص داده و آن را به سیگنال الکتریکی قابل اندازه‌گیری تبدیل می‌کند. هدف دیگر، آموزش نحوه‌ی ایجاد ارتباط I²C بین سنسور و آردوینو، خواندن داده‌های خام نوری و پردازش آن‌ها برای به‌دست‌آوردن مقدار ضربان قلب (BPM) است. همچنین در طی این پروژه با مفاهیم مهمی مانند تنظیم نرخ نمونه‌برداری، شدت نور LED آشنا می‌شویم. در نهایت خروجی به صورت عددی و  در  Monitor Serial نمایش داده می‌شود تا بتوان رفتار سیگنال ضربان قلب را در لحظه مشاهده کرد.

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

  • نحوه‌ی کار سنسور BH1790GLC و مفهوم اندازه‌گیری اپتیکال ضربان قلب با استفاده از نور بازتابی از پوست.
  • برقراری ارتباط I²C بین سنسور و برد آردوینو و شناسایی آدرس دستگاه در شبکه I²C.
  • خواندن داده‌های خام نوری (LED ON/OFF) از رجیسترهای داخلی سنسور.
  • نصب و استفاده از کتابخانه‌های ROHM و GebraBit در Arduino IDE برای راه‌اندازی سریع سنسور.
  • تبدیل داده‌های خام به سیگنال قابل تحلیل و محاسبه‌ی تعداد ضربان قلب بر حسب BPM.
  • تنظیم پارامترهای عملکرد سنسور مانند شدت LED، نرخ نمونه‌برداری و زمان یکپارچه‌سازی برای بهبود دقت.
  • نمایش سیگنال و نتایج ضربان قلب به‌صورت عددی در Serial Monitor و Serial Plotter.

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

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

سخت‌افزارهای مورد نیازنرم‌افزارهای مورد نیاز
Arduino UNO (یا بردهای سازگار مثل Nano / Mega)Arduino IDE
ماژول ضربان قلب GebraBit BH1790GLCدرایور USB Arduino (CH340 یا مشابه)
کابل USB برای اتصال آردوینو به کامپیوترکتابخانه‌های BH1790GLC و FlexiTimer2
سیم جامپر (M–F) یا بردبورد برای اتصال I²C

ابتدا مانند تصویر زیر ماژول ضربان قلب GebraBit BH1790GLC  را به صورت زیر به آردوینو متصل می کنیم:

  • توجه کنید که برای راه اندازی این ماژول احتیاج به Logic Level Converter دارید و در صورت اتصال مستقیم ماژول به آردوینو امکان آسیب به سنسور خواهد شد.
  • پس از اتصال آردوینو به ماژول توسط Logic Level Converter، کتابخانه  BH1790GLC  دانلود و به نرم افزار آردوینو اضافه و برنامه پیوست را اجرا کنید.

سورس کد

برای اجرای این پروژه به bh1790.h احتیاج داریم.

ثابت‌های عمومی: کدهای بازگشت (Return Codes)

#define BH1790_RC_OK         (0)
#define BH1790_RC_NO_EXIST   (-1)
#define BH1790_RC_I2C_ERR    (-2)

کدهای وضعیت توابع کتابخانه:

  • OK یعنی موفق،
  • NO_EXIST یعنی سنسور پیدا نشد (پاسخ/ID نامعتبر)،
  • I2C_ERR یعنی خطای ارتباط I²C.

آدرس  I²C سنسور

#define BH1790_SLAVE_ADDRESS (0x5BU)

آدرس 7بیتی I²C سنسور 0x5B است. (پس در اسکنر I²C باید همین آدرس دیده شود.)

آدرس رجیسترها

#define BH1790_PARTID              (0x10U)  // R
#define BH1790_RESET               (0x40U)  // W
#define BH1790_MEAS_CTRL1          (0x41U)  // R/W
#define BH1790_MEAS_CTRL2          (0x42U)  // R/W
#define BH1790_MEAS_START          (0x43U)  // R/W
#define BH1790_DATAOUT_LEDOFF_LSBS (0x54U)  // R
#define BH1790_DATAOUT_LEDOFF_MSBS (0x55U)  // R
#define BH1790_DATAOUT_LEDON_LSBS  (0x56U)  // R
#define BH1790_DATAOUT_LEDON_MSBS  (0x57U)  // R
#define BH1790_MANUFACTURERID      (0x92U)  // R

رجیسترهای مهم برای:

  • شناسه‌ها (PARTID, MANUFACTURERID)
  • ریست نرم‌افزاری (RESET)
  • کنترل اندازه‌گیری (MEAS_CTRL1/2, شروع با MEAS_START)
  • خواندن داده خام در دو وضعیت: وقتی LED خاموش است (LEDOFF) و روشن است (LEDON)؛ هرکدام ۲ بایت (LSB/MSB) دارند.

مقادیر مورد انتظار شناسه‌ها

#define BH1790_PARTID_VAL         (0x0DU)
#define BH1790_MANUFACTURERID_VAL (0xE0U)

وقتی این رجیسترها را بخوانید، باید این مقادیر را برگردانند. برای تشخیص صحیح بودن چیپ استفاده می‌شود.

پارامترهای پیکربندی رجیستر RESET

// 7bit: SWRESET
#define BH1790_PRM_SWRESET (0x01U)

نوشتن این مقدار «ریست نرم‌افزاری» سنسور را انجام می‌دهد.

پارامترهای پیکربندی رجیستر MEAS_CTRL1

// 7bit: RDY
#define BH1790_PRM_CTRL1_RDY         (0x01U) // فعال بودن اسیلاتور داخلی
// 2bit: LED_LIGHTING_FREQ (فرکانس مدوله‌کردن LED)
#define BH1790_PRM_CTRL1_FREQ_128HZ  (0x00U)
#define BH1790_PRM_CTRL1_FREQ_64HZ   (0x01U)
// 1-0bit: RCYCLE (نرخ خواندن داده)
#define BH1790_PRM_CTRL1_RCYCLE_64HZ (0x01U)
#define BH1790_PRM_CTRL1_RCYCLE_32HZ (0x02U)
  • بیت RDY: آماده‌بودن بلوک کلاک/اسیلاتور.
  • LED_LIGHTING_FREQ: فرکانس روشن/خاموش‌شدن پالس LED (۶۴ یا ۱۲۸ هرتز).
  • RCYCLE: نرخ خروجی/نمونه‌برداری داده (۳۲ یا ۶۴ هرتز).

پارامترهای پیکربندی رجیستر MEAS_CTRL2

// 7-6bit: LED_EN (حالت درایو LED1/LED2)
#define BH1790_PRM_CTRL2_EN_NONE       (0x00U) // LED1: Pulsed,   LED2: Pulsed
#define BH1790_PRM_CTRL2_EN_LED1       (0x01U) // LED1: Constant, LED2: Pulsed
#define BH1790_PRM_CTRL2_EN_LED2       (0x02U) // LED1: Pulsed,   LED2: Constant
#define BH1790_PRM_CTRL2_EN_LED1_LED2  (0x03U) // LED1: Constant, LED2: Constant
// 5bit: LED_ON_TIME (زمان روشن‌بودن هر پالس)
#define BH1790_PRM_CTRL2_ONTIME_0_3MS  (0x00U)
#define BH1790_PRM_CTRL2_ONTIME_0_6MS  (0x01U)
// 3-0bit: LED_CURRENT (جریان LED)
#define BH1790_PRM_CTRL2_CUR_0MA       (0x00U)
#define BH1790_PRM_CTRL2_CUR_1MA       (0x08U)
#define BH1790_PRM_CTRL2_CUR_2MA       (0x09U)
#define BH1790_PRM_CTRL2_CUR_3MA       (0x0AU)
#define BH1790_PRM_CTRL2_CUR_6MA       (0x0BU)
#define BH1790_PRM_CTRL2_CUR_10MA      (0x0CU)
#define BH1790_PRM_CTRL2_CUR_20MA      (0x0DU)
#define BH1790_PRM_CTRL2_CUR_30MA      (0x0EU)
#define BH1790_PRM_CTRL2_CUR_60MA      (0x0FU)

 LED_EN: تعیین می‌کند LED1/LED2 به‌صورت پالسی یا ثابت درایو شوند. (برای برخی بردها هر دو LED سبز هستند.)

 :LED_ON_TIME: عرض پالس روشن‌بودن LED (۰٫۳ یا ۰٫۶ میلی‌ثانیه).

 : LED_CURRENT: جریان درایو LED از ۰ تا ۶۰ mA (انتخاب متناسب با روشنایی/مصرف).

شروع اندازه‌گیری رجیستر MEAS_START

#define BH1790_PRM_MEAS_ST (0x01U)

نوشتن این بیت، روند اندازه‌گیری را استارت می‌کند.

شناسه‌های نوعِ پارامتر (برای API سطح بالاتر)

#define BH1790_PRM_CTRL1_FREQ   (0U)
#define BH1790_PRM_CTRL1_RCYCLE (1U)
#define BH1790_PRM_CTRL2_EN     (2U)
#define BH1790_PRM_CTRL2_ONTIME (3U)
#define BH1790_PRM_CTRL2_CUR    (4U)

برای اینکه در توابع پیکربندی، نوع پارامتر را با یک ID ارجاع بدهید (سوئیچ/کیس روی نوع پارامتر).

پروتوتایپ توابع عمومی

int8_t bh1790_Init(void);
int8_t bh1790_SoftReset(void);
// I2C must be implemented by user
int8_t bh1790_Write(uint8_t adr, uint8_t *data, uint8_t size);
int8_t bh1790_Read (uint8_t adr, uint8_t *data, uint8_t size);

 :  bh1790_Init: راه‌اندازی اولیه (چکِ IDها، تنظیم رجیسترها، آماده‌سازی).

 :  bh1790_SoftReset: ریست نرم‌افزاری.

 :  bh1790_Write/Read: رابط سطح پایین I²C که باید توسط شما یا لایه‌ی پلتفرم پیاده‌سازی شود (ارسال آدرس رجیستر و داده/دریافت داده).

جمع‌بندی کاربردی

  • برای راه‌اندازی: با  bh1790_Init() و سپس تنظیم‌های دلخواه در MEAS_CTRL1/2، بعد MEAS_START را ست کنید.
  • داده‌ی خام از چهار رجیستر DATAOUT_* خوانده می‌شود (دو بایت LED خاموش و دو بایت LED روشن). اختلاف/نسبت این دو، پایه‌ی استخراج سیگنال ضربان است.
  • اگر I²C خطا داد یا IDها مطابق نبودند، کدهای بازگشت منفی به شما می‌گویند مشکل از سخت‌افزار/اتصال/آدرس‌دهی است.

اگر خواستی، همین هدر را مبنا بگیریم و یک پیاده‌سازی آردوینویی (Wire) برای bh1790_Write/Read و یک init نمونه با تنظیمات پیشنهادی 32Hz/LED 10–20mA آماده کنم.

  1.  برنامه نمونه در آردوینو     

 بعد از اتصال ماژول به آردوینو و اضافه کردن کتابخانه سنسور به نرم افزار آردوینو به مسیر زیر بروید و کد نمونه را باز کنید.                                   

  File > Examples > BH1790GLC

شرح فایل نمونه

این کد در واقع برنامه‌ی اصلی آردوینو برای خواندن ضربان قلب از سنسور BH1790GLC است. گام‌به‌گام (بلوک‌به‌بلوک) توضیحش می دهیم:

تعریف‌ها و متغیرهای اولیه

#define SAMPLING_CNT_32HZ (32)

BH1790GLC bh1790glc;
volatile bool timer_flg;
void timer_isr(void);

static uint8_t s_cnt_freq = 0;

:  SAMPLING_CNT_32HZ تعداد نمونه‌ها در هر چرخه‌ی ۱ ثانیه است (چون نرخ نمونه‌برداری ۳۲ هرتز است).

:  bh1790glc یک شیء از کلاس درایور سنسور BH1790GLC است.

:  timer_flg یک فلگ (علامت) است که توسط تایمر تنظیم می‌شود و در loop() بررسی می‌گردد.

:  s_cnt_freq شمارنده‌ی نمونه‌ها است.

تابع setup()

void setup() {
  uint16_t ret16 = ERROR_NONE;

  timer_flg = false;
  Serial.begin(115200);
  while (!Serial);
  • مقدار اولیه‌ی خطا صفر می‌شود.
  • ارتباط سریال برای نمایش داده‌ها با سرعت 115200 بیت راه‌اندازی می‌شود.
  • while(!Serial) منتظر می‌ماند تا ارتباط سریال برقرار شود.
  Wire.begin();
  Wire.setClock(400000L);

فعال‌سازی I²C برای ارتباط با سنسور.

تنظیم فرکانس I²C روی 400kHz (حالت fast mode).

  s_cnt_freq = 0;
  ret16 = hr_bh1790_Init();

مقداردهی اولیه شمارنده.

فراخوانی تابع hr_bh1790_Init() برای راه‌اندازی سنسور (چک شناسه و تنظیم رجیسترهای کنترلی).

  if (ret16 == ERROR_NONE) {
    Serial.println(F("BPM, wearing"));

اگر راه‌اندازی موفق باشد، پیغام آغاز محاسبه‌ی ضربان چاپ می‌شود.

 FlexiTimer2::stop();
    FlexiTimer2::set(250, 1.0/8000, timer_isr);  // 32Hz timer
    FlexiTimer2::start();

از کتابخانه‌ی FlexiTimer2 برای ساخت تایمر دقیق نرم‌افزاری استفاده می‌شود.

تنظیم تایمر به‌طوری‌که هر 31.25 میلی‌ثانیه (≈32Hz) تابع timer_isr() اجرا شود.

هر بار که تایمر تریگر می‌شود، فلگ timer_flg را فعال می‌کند.

 ret16 = hr_bh1790_StartMeasure();

شروع اندازه‌گیری از سنسور (فعال کردن رجیستر MEAS_START).

در صورت خطا، پیغام مناسب چاپ می‌شود.

  } else {
  Serial.println(F("Error: hr_bh1790_Init function"));

اگر سنسور پیدا نشود یا مقدار ID اشتباه باشد، خطا در سریال چاپ می‌شود.

تابع loop()

void loop() {
  uint8_t  bpm     = 0U;
  uint8_t  wearing = 0U;
  uint16_t ret16   = ERROR_NONE;

متغیرهای محلی برای ذخیره‌ی ضربان قلب (BPM) و وضعیت تماس انگشت (wearing) تعریف می‌شوند.

if (timer_flg) {
    ret16 = hr_bh1790_Calc(s_cnt_freq);

در هر تریگر تایمر (وقتی timer_flg=true شود)، یک نمونه‌ی جدید از داده‌های سنسور گرفته و پردازش می‌شود.
تابع hr_bh1790_Calc() وظیفه‌ی محاسبه‌ی داخلی و فیلترکردن داده‌ها را دارد.

   if (ret16 == ERROR_NONE) {
      s_cnt_freq++;
      if (s_cnt_freq >= SAMPLING_CNT_32HZ) {
        s_cnt_freq = 0;
        hr_bh1790_GetData(&bpm, &wearing);
        Serial.print(bpm, DEC);
        Serial.print(F(","));
        Serial.println(wearing, DEC);
      }
  • در هر فراخوانی موفق، شمارنده‌ی نمونه افزایش می‌یابد.
  • بعد از جمع شدن ۳۲ نمونه (۱ ثانیه)، شمارنده صفر و داده‌ی BPM و وضعیت پوشیدن خوانده می‌شود.
  • مقادیر در پورت سریال چاپ می‌شوند (مثلاً: 78,1 یعنی 78 ضربه در دقیقه و در حال تماس با پوست).
    } else {
      Serial.println(F("Error: hr_bh1790_Calc function"));

در صورت خطا در پردازش داده، پیغام هشدار چاپ می‌شود.

          timer_flg = false;
  }
}

در پایان هر سیکل، فلگ ریست می‌شود تا در تریگر بعدی تایمر دوباره فعال گردد.

تابع وقفه‌ی تایمر

 void timer_isr(void) {
  timer_flg = true;
}

این تابع هر 31.25 میلی‌ثانیه اجرا می‌شود و صرفاً فلگ را فعال می‌کند تا loop() بداند زمان نمونه‌گیری رسیده است.

تابع bh1790_Write()

int8_t bh1790_Write(uint8_t adr, uint8_t *data, uint8_t size)
{
  byte rc = 0;
  int8_t ret = 0;
  
  rc = bh1790glc.write(adr, data, size);
  if (rc == 0) ret = BH1790_RC_OK;
  else ret = BH1790_RC_I2C_ERR;

  return (ret);
}
  • این تابع داده‌ای را در رجیستر خاصی از BH1790GLC می‌نویسد.
  • از تابع write() کتابخانه‌ی ROHM استفاده می‌کند.
  • اگر نوشتن موفق بود، BH1790_RC_OK برمی‌گرداند، در غیر این‌صورت خطای I²C.

تابع bh1790_Read()

 int8_t bh1790_Read(uint8_t adr, uint8_t *data, uint8_t size)
{
  byte rc = 0;
  int8_t ret = 0;

  rc = bh1790glc.read(adr, data, size);
  if (rc == 0) ret = BH1790_RC_OK;
  else ret = BH1790_RC_I2C_ERR;
  
  return (ret);
}

مشابه تابع قبل اما برای خواندن داده از رجیسترها.

داده‌ها در بافر data ذخیره می‌شوند.

در صورت موفقیت، مقدار بازگشتی صفر (OK) است.

جمع‌بندی عملکرد کلی

  1.  :setup()ارتباط I²C، سریال و تایمر را آماده می‌کند و سنسور را راه‌اندازی می‌کند.
  2.  :loop()هر 31ms داده‌ی جدید می‌خواند، هر ثانیه یک بار BPM را محاسبه و چاپ می‌کند.
  3.  :timer_isr()فقط زمان‌بندی نمونه‌گیری را کنترل می‌کند.
  4. bh1790_Read/Write() :دسترسی سطح پایین به رجیسترهای سنسور از طریق I²C را فراهم می‌کنند.

اجرای کد    

آردوینو خود را به کامپیوتر متصل کنید و مدل و پورت آردوینو خود را انتخاب کنید. سپس نمونه کد را ابتدا Verify و سپس Upload کنید . بعد از Upload کردن کد Serial Monitor را باز کرده و می توانید خروجی های سنسور را مشاهده کنید .

1. BH1790GLC چگونه ضربان قلب را اندازه‌گیری می‌کند؟

سنسور BH1790GLC با استفاده از یک فوتودیود حساس به نور سبز (green) و یک درایور LED، نور سبز را به پوست تابانده و نور بازتابی ناشی از پالس خون (Pulse Wave) را دریافت می‌کند. این بازتاب با I²C خوانده می‌شود و پس از فیلتر و پردازش می‌تواند به مقدار ضربان (Heart Rate) تبدیل شود. طراحی آنالوگ داخلی به‌گونه‌ای است که نویز را کاهش داده و حساسیت بالا دارد.
🔗 Reference: BH1790GLC Datasheet


2. محدوده ولتاژ تغذیه BH1790GLC چقدر است؟

BH1790GLC از بخش آنالوگ (Analog) با ولتاژ بین ۲.۵ تا ۳.۶ ولت پشتیبانی می‌کند و بخش IO آن (برای I²C) نیز بین ۱.۷ تا ۳.۶ ولت کار می‌کند. این محدوده ولتاژ آن‌را برای استفاده در دستگاه‌های قابل حمل با باتری لیتیومی بسیار مناسب می‌سازد. انتخاب منبع تغذیه با نویز پایین اهمیت زیادی دارد چون نویز تغذیه می‌تواند بر دقت اندازه‌گیری تأثیر منفی بگذارد.
🔗 Reference: BH1790GLC Datasheet


3. چگونه فرکانس نمونه‌برداری (sampling rate) در BH1790GLC تعیین می‌شود؟

BH1790GLC امکان پیکربندی فرکانس نمونه‌برداری از طریق رجیسترهای کنترلی فراهم می‌کند. نمونه‌برداری می‌تواند روی ۳۲ Hz یا ۶۴ Hz تنظیم شود، که انتخاب آن به کاربرد (مانند پایش ضربان آهسته یا سریع) بستگی دارد. فرکانس بالاتر باعث افزایش مصرف انرژی می‌شود ولی وضوح زمانی (temporal resolution) بهتری فراهم می‌کند.
🔗 Reference: ROHM Sensors & MEMS Catalog


4. آیا BH1790GLC از رابط دیجیتال I²C پشتیبانی می‌کند؟

بله. BH1790GLC یک رابط I²C دارد که امکان خواندن داده‌های سنسور و تنظیم پارامترهایی مانند LED current و Duty Cycle را فراهم می‌کند. این رابط دیجیتال باعث ساده‌تر شدن اتصال به میکروکنترلرها (مثل Arduino یا STM32) می‌شود و دیگر نیازی به ADC خارجی برای خواندن سیگنال آنالوگ نیست.
🔗 Reference: BH1790GLC Datasheet


5. چگونه جریان LED در BH1790GLC تنظیم می‌شود؟

BH1790GLC دارای درایور LED داخلی است که امکان تنظیم جریان LED را از طریق رجیستر I²C فراهم می‌کند. با تنظیم جریان LED می‌توان تعادل بین حساسیت (SNR) و مصرف انرژی را برقرار کرد. جریان پایین LED باعث مصرف کمتر ولی حساسیت پایین‌تر می‌شود، در حالی که جریان بالاتر حساسیت بیشتری دارد اما توان مصرفی بالا می‌رود.
🔗 Reference: BH1790GLC Datasheet


6. چگونه نویز در BH1790GLC کاهش یابد؟

برای کاهش نویز، می‌توان از چند روش استفاده کرد: اولاً تنظیم مناسب LED current و duty cycle، ثانیاً استفاده از فیلتر نرم‌افزاری (مثل پایین‌گذر یا میانگین‌گیری) بر روی داده‌های بازتابی، ثالثاً طراحی PCB با زمین واحد (ground plane) و مسیرهای کوتاه برای سیگنال I²C و تغذیه. همچنین کار در فرکانس نمونه‌برداری پایین‌تر می‌تواند به کاهش نویز کمک کند.
🔗 Reference: BH1790GLC Datasheet


7. لی‌آوت PCB برای BH1790GLC چه نکاتی باید داشته باشد؟

در طراحی PCB برای BH1790GLC مهم است که مسیر تغذیه و I²C کوتاه باشد تا نویز القایی کاهش یابد. لازم است که زمین (GND) یکپارچه باشد و لوپ‌های سیگنال کوچک باشند. جای‌گذاری خازن دِکوپلینگ نزدیک پین تغذیه ضروری است. ترسیم مناسب خطوط I²C (SCL/SDA) با توجه به امپدانس باس نیز اهمیت دارد.
🔗 Reference: BH1790GLC EVK User Guide


8. چگونه داده‌های BH1790GLC را در Arduino بخوانیم؟

برای خواندن داده‌های BH1790GLC در Arduino، ابتدا I²C را با Wire.begin() راه‌اندازی می‌کنیم. سپس رجیسترهای کنترلی را تنظیم کرده و داده‌های ADC داخلی را با Wire.read() می‌خوانیم. داده‌ها معمولاً ۱۸ بیتی هستند و باید به فرمت مناسب برای پردازش ضربان قلب یا SpO2 تبدیل شوند. استفاده از فیلتر نرم‌افزاری در میکروکنترلر باعث افزایش دقت اندازه‌گیری می‌شود.
🔗 Reference: BH1790GLC EVK Software Manual


9. آیا BH1790GLC امکان اندازه‌گیری SpO2 دارد؟

BH1790GLC به‌صورت مستقیم برای SpO2 طراحی نشده و عمدتاً برای Heart Rate و Activity Monitoring کاربرد دارد. با این حال، با استفاده از دو طول موج متفاوت LED (در نسخه‌های مشابه) می‌توان تقریبی از SpO2 محاسبه کرد، ولی دقت آن به اندازه سنسورهای تخصصی SpO2 نخواهد بود. بنابراین برای کاربردهای پزشکی دقیق باید از سنسورهای مخصوص استفاده شود.
🔗 Reference: BH1790GLC Datasheet


10. چگونه BH1790GLC را در STM32 راه‌اندازی کنیم؟

در STM32 با HAL Library، ابتدا I²C را پیکربندی می‌کنیم و سپس با استفاده از تابع HAL_I2C_Mem_Read() داده‌های سنسور را می‌خوانیم. می‌توان رجیسترهای LED current، sampling rate و mode را تنظیم کرد. توجه داشته باشید که Pull-up مقاومتی برای خطوط SDA و SCL ضروری است تا سطح ولتاژ I²C پایدار باقی بماند و داده‌ها به‌درستی دریافت شوند.
🔗 Reference: BH1790GLC EVK Software Manual


11. چگونه دقت (accuracy) اندازه‌گیری ضربان قلب BH1790GLC را افزایش دهیم؟

برای افزایش accuracy در BH1790GLC، می‌توان LED current را بهینه کرد، داده‌ها را فیلتر پایین‌گذر کرد و نمونه‌برداری مناسب انتخاب نمود. تماس مناسب با پوست و حذف حرکت (motion artifact) نیز بسیار مهم است. استفاده از الگوریتم‌های نرم‌افزاری برای تشخیص پالس‌ها و میانگین‌گیری چند ثانیه‌ای کمک می‌کند تا نویز و خطا کاهش یابد.
🔗 Reference: BH1790GLC Datasheet


12. BH1790GLC هنگام حرکت دست چه مشکلاتی دارد؟

حرکت دست باعث تغییر نور بازتابی و ایجاد noise می‌شود. این موضوع در سنسور BH1790GLC رایج است و می‌تواند موجب reading error یا drop signal شود. برای کاهش مشکل، از الگوریتم‌های motion compensation و فیلترهای نرم‌افزاری استفاده می‌کنند و همچنین تماس محکم سنسور با پوست ضروری است. طراحی صحیح بند یا محفظه دستگاه می‌تواند این اثر را کاهش دهد.
🔗 Reference: BH1790GLC Datasheet


13. BH1790GLC چه مصرف جریانی دارد؟

مصرف جریان BH1790GLC بستگی به LED current و duty cycle دارد. در حالت standby جریان کمتر از ۲ µA و در حالت active حدود 600–700 µA برای LED پایین تا 6 mA برای LED بالاتر است. این امکان کنترل مصرف انرژی در دستگاه‌های باتری‌دار را فراهم می‌کند و انتخاب duty cycle مناسب برای حفظ عمر باتری حیاتی است.
🔗 Reference: BH1790GLC Datasheet


14. BH1790GLC چه کاربردهایی دارد؟

BH1790GLC عمدتاً در دستبندهای سلامتی (Fitness Tracker) و ساعت‌های هوشمند برای پایش ضربان قلب استفاده می‌شود. همچنین در دستگاه‌های ورزشی و سیستم‌های پایش فعالیت روزانه برای اندازه‌گیری Heart Rate و Energy Expenditure کاربرد دارد. طراحی کم‌مصرف و اندازه کوچک آن، استفاده در گجت‌های پوشیدنی را آسان می‌کند.
🔗 Reference: BH1790GLC Product Page


15. BH1790GLC در نور محیط قوی چه عملکردی دارد؟

نور محیط (Ambient Light) می‌تواند باعث اختلال در اندازه‌گیری شود. BH1790GLC با استفاده از LED Modulation و فیلتر دیجیتال تلاش می‌کند تا اثر نور محیط را کاهش دهد. با این حال در شرایط نور مستقیم خورشید، ممکن است دقت کاهش یابد و الگوریتم‌های نرم‌افزاری برای correction لازم است.
🔗 Reference: BH1790GLC Datasheet


16. BH1790GLC چه نرخ نمونه‌برداری (sampling rate) دارد؟

نرخ نمونه‌برداری قابل انتخاب در BH1790GLC بین 32 Hz و 64 Hz است. فرکانس بالاتر دقت بهتر و وضوح بالاتر برای تشخیص ضربان سریع فراهم می‌کند اما مصرف انرژی بیشتری دارد. انتخاب مناسب نرخ نمونه‌برداری با توجه به کاربرد و محدودیت باتری انجام می‌شود.
🔗 Reference: BH1790GLC Datasheet


17. BH1790GLC با چه میکروکنترلرهایی سازگار است؟

BH1790GLC به‌دلیل استفاده از I²C با اکثر میکروکنترلرها مثل Arduino، STM32، ESP32 و Raspberry Pi سازگار است. تنها کافی است پین‌های SDA و SCL به درستی متصل شوند و Pull-up مناسب روی خطوط قرار گیرد. برای عملکرد بهینه باید رجیسترها و پارامترهای LED current و sampling rate تنظیم شوند.
🔗 Reference: BH1790GLC EVK Software Manual


18. BH1790GLC چگونه کالیبره می‌شود؟

کالیبراسیون BH1790GLC شامل تنظیم LED current و offset دیجیتال برای دستیابی به بیشترین SNR است. برای هر فرد و شرایط پوستی ممکن است نیاز به تنظیم مجدد باشد. معمولاً کالیبراسیون نرم‌افزاری با گرفتن چند نمونه اولیه و محاسبه میانگین نور بازتابی انجام می‌شود تا خطای سیستماتیک کاهش یابد.
🔗 Reference: BH1790GLC Datasheet


19. چگونه خطاهای اندازه‌گیری در BH1790GLC اصلاح می‌شوند؟

خطاهای اندازه‌گیری ناشی از حرکت، نور محیط و تغییرات پوستی هستند. برای اصلاح این خطاها از الگوریتم‌های نرم‌افزاری مثل فیلتر میانگین متحرک (Moving Average) و تشخیص پالس استفاده می‌شود. همچنین تنظیم صحیح LED current و duty cycle می‌تواند خطای سیگنال را کاهش دهد.
🔗 Reference: BH1790GLC Datasheet


20. BH1790GLC در چه دماهایی قابل استفاده است؟

محدوده دمای عملیاتی BH1790GLC بین -20°C تا +60°C است. خارج از این محدوده ممکن است عملکرد سنسور غیرقابل اعتماد شود. طراحی دستگاه باید اطمینان دهد که سنسور در محدوده دمای مشخص کار می‌کند تا accuracy و reliability حفظ شود.
🔗 Reference: BH1790GLC Datasheet


21. BH1790GLC در تماس با پوست مرطوب چگونه عمل می‌کند؟

BH1790GLC مقاومت خوبی در برابر رطوبت نسبی (Relative Humidity) تا 90٪ دارد، اما تماس مستقیم با عرق یا آب می‌تواند باعث short-circuit یا اختلال در خواندن داده‌ها شود. برای حفظ عملکرد پایدار، توصیه می‌شود از پوشش محافظ یا طراحی محفظه مناسب استفاده شود تا سنسور مستقیماً با رطوبت تماس نداشته باشد.
🔗 Reference: BH1790GLC Datasheet


22. BH1790GLC چه طول موج نوری استفاده می‌کند؟

LED داخلی BH1790GLC نور سبز با طول موج حدود 530–550 nm ساطع می‌کند. این طول موج برای تشخیص پالس خون در سطح پوست بهینه است. ترکیب فوتودیود حساس و LED سبز باعث دقت بالاتر در اندازه‌گیری Heart Rate و کاهش نویز ناشی از نور محیط می‌شود.
🔗 Reference: BH1790GLC Datasheet


23. BH1790GLC با سنسورهای مشابه چگونه مقایسه می‌شود؟

BH1790GLC با سنسورهایی مانند MAX30102 و AFE4404 قابل مقایسه است. مزیت آن مصرف پایین، اندازه کوچک و حساسیت خوب در نور محیط معمولی است، اما برای اندازه‌گیری دقیق SpO2 یا شرایط بالینی تخصصی مناسب نیست. انتخاب سنسور باید با توجه به کاربرد (Wearable Fitness یا پزشکی) انجام شود.
🔗 Reference: BH1790GLC Product Page


24. BH1790GLC در حالت Low Power چگونه کار می‌کند؟

در حالت Low Power، LED current و duty cycle کاهش می‌یابد تا مصرف انرژی به حداقل برسد. این حالت برای پایش طولانی مدت مناسب است، اما حساسیت و دقت اندازه‌گیری کمی کاهش می‌یابد. استفاده از الگوریتم‌های نرم‌افزاری برای پردازش سیگنال‌ها در این حالت توصیه می‌شود.
🔗 Reference: BH1790GLC Datasheet


25. BH1790GLC چگونه با Arduino Library راه‌اندازی می‌شود؟

کتابخانه‌های Arduino برای BH1790GLC امکان خواندن رجیسترها، تنظیم LED current و sampling rate را فراهم می‌کنند. کافی است I²C فعال باشد و پین‌ها متصل شوند، سپس از توابع آماده برای شروع نمونه‌برداری و خواندن داده‌ها استفاده شود. کتابخانه‌ها شامل مثال‌های نرم‌افزاری برای پردازش Heart Rate هستند.
🔗 Reference: BH1790GLC EVK Software Manual


26. BH1790GLC چگونه تحت تأثیر نور محیط قرار می‌گیرد؟

نور محیط با شدت بالا می‌تواند سیگنال فوتودیود را مخدوش کند. BH1790GLC با modulation LED و فیلتر دیجیتال تلاش می‌کند نویز ناشی از نور محیط را کاهش دهد. الگوریتم‌های نرم‌افزاری برای تشخیص پالس‌ها و میانگین‌گیری نیز اثر نور محیط را کم می‌کنند و accuracy اندازه‌گیری حفظ می‌شود.
🔗 Reference: BH1790GLC Datasheet


27. مشکلات رایج BH1790GLC چیست و چگونه رفع می‌شوند؟

مشکلات رایج شامل signal dropout، motion artifact، نور محیط زیاد، تماس نامناسب با پوست و مصرف انرژی بالا هستند. برای رفع این مشکلات، از فیلتر نرم‌افزاری، الگوریتم‌های motion compensation، تنظیم LED current و طراحی مناسب بند یا پوشش محافظ استفاده می‌شود. رعایت این نکات باعث پایداری و دقت بهتر می‌شود.
🔗 Reference: BH1790GLC Datasheet


28. کاربردهای غیرپزشکی BH1790GLC چیست؟

علاوه بر Fitness Tracker و Smartwatch، BH1790GLC در Gaming Wearable برای تشخیص ضربان قلب و Smart Clothing برای پایش فعالیت بدنی استفاده می‌شود. ویژگی‌های کم‌مصرف و اندازه کوچک باعث تطبیق‌پذیری بالا در گجت‌های پوشیدنی شده است.
🔗 Reference: BH1790GLC Product Page


29. BH1790GLC با پوست تیره چگونه عمل می‌کند؟

پوست تیره باعث کاهش بازتاب نور می‌شود و می‌تواند SNR را کاهش دهد. برای جبران این اثر، LED current افزایش می‌یابد و الگوریتم‌های نرم‌افزاری برای تشخیص پالس و میانگین‌گیری استفاده می‌شوند. تماس مناسب سنسور با پوست همچنان ضروری است تا دقت اندازه‌گیری حفظ شود.
🔗 Reference: BH1790GLC Datasheet


30. چگونه از BH1790GLC در Wearable Device کم‌مصرف استفاده کنیم؟

برای مصرف کم، LED current و duty cycle بهینه تنظیم می‌شوند و حالت Low Power بین نمونه‌برداری‌ها فعال می‌شود. Sleep Mode بین نمونه‌برداری‌ها باعث کاهش مصرف انرژی می‌شود و الگوریتم‌های نرم‌افزاری داده‌ها را پردازش می‌کنند تا دقت مطلوب حفظ شود.
🔗 Reference: BH1790GLC Datasheet


31. BH1790GLC چگونه داده‌ها را با STM32 و DMA منتقل می‌کند؟

با STM32 HAL و DMA، داده‌های I²C BH1790GLC بدون اشغال CPU منتقل می‌شوند. این روش باعث کاهش تأخیر و افزایش efficiency می‌شود. رجیسترها و آدرس‌های سنسور باید قبل از فعال کردن DMA به‌درستی تنظیم شوند تا خواندن داده‌ها پایدار و سریع انجام شود.
🔗 Reference: BH1790GLC EVK Software Manual


32. محدودیت‌های فرکانسی BH1790GLC چیست؟

حداکثر فرکانس نمونه‌برداری BH1790GLC برابر 64 Hz است. فرکانس بالاتر ممکن است باعث عدم پایداری داده‌ها و افزایش نویز شود. انتخاب فرکانس مناسب به کاربرد و نیاز دقت وابسته است و باید با LED current و duty cycle هماهنگ شود.
🔗 Reference: BH1790GLC Datasheet


33. BH1790GLC چگونه با BLE یا Bluetooth هماهنگ می‌شود؟

BH1790GLC داده‌ها را از طریق I²C به میکروکنترلر منتقل می‌کند. سپس MCU داده‌ها را از طریق BLE یا Bluetooth به گوشی یا سرور می‌فرستد. سنسور خود BLE ندارد و بخشی از زنجیره data acquisition و wireless communication است. تنظیم duty cycle مناسب برای کاهش مصرف انرژی در BLE اهمیت دارد.
🔗 Reference: BH1790GLC EVK Software Manual


34. BH1790GLC برای پایش طولانی مدت چگونه تنظیم می‌شود؟

برای پایش طولانی مدت، LED current و duty cycle کم انتخاب می‌شوند و Sleep Mode بین نمونه‌برداری‌ها فعال می‌شود. داده‌ها توسط MCU پردازش و ذخیره می‌شوند تا مصرف انرژی بهینه باشد و دقت اندازه‌گیری حفظ شود. این روش مناسب ساعت‌ها یا روزها پایش مداوم ضربان قلب است.
🔗 Reference: BH1790GLC Datasheet


35. منابع رسمی BH1790GLC از کجا قابل دریافت هستند؟

می‌توانید از صفحه رسمی ROHM شامل Datasheet، EVK Manual و Product Page برای اطلاعات کامل و نرم‌افزارهای نمونه استفاده کنید. این منابع برای راه‌اندازی و توسعه سریع با BH1790GLC ضروری هستند.
🔗 Reference: BH1790GLC Product Page

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

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

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

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

توجه!

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

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

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