Home » فروشگاه » ماژول ECG تک کانال GebraBit ADS1191
محصول اوریجینال جبرابیت
تست شده
کیفیت مهندسی
ECG

ماژول ECG تک کانال GebraBit ADS1191

16.650.000 ریال

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

نوع ماژول

ماژول نظارت بر ضربان قلب و تنفس

ولتاژ تغذیه

3V3, 5V

جریان مصرفی

10 mA to 30 mA (Typ. 20 mA)

تعداد کانال‌ها

1

فرکانس کریستال

2.048 Mhz

نوع خروجی

SPI, Digital

رزولوشن ADC

16 Bit

سرعت انتقال داده

125SPS to 8kSPS

ابعاد

Gebra medium (36.29mm x 46.18mm)

دمای کاری

-40 to +85 °C

توجه!

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

مروری بر سنسور ADS1191

ADS1191 یک سنسور  آنالوگ Front_end 16بیتی سه (3_Lead) دو کاناله مانیتورینگ ضربان قلب و تنفس  ،  با توانایی نمونه برداری همزمان و تشخیص جدا شدن لید میباشد که در پکیج 32 پین TQFPسایز small (5×5mm) قرار دارد و  با نرخ داده تا 8kSPS و در محدوده‌ی دمایی -40 °C  تا +85 °C  کار می کند.

در ساخت این قطعه از یک مبدل آنالوگ به دیجیتال دلتا_سیگما (ΔΣ)، یک منبع داخلی، یک گین امپلی فایر قابل  تنظیم و یک اسیلاتور بهره گرفته شده است.

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

مشخصات فنی

  • Number Of Channels: 2
  • Output type: Digital – SPI
  • ADC Resolution: 16 Bit
  • Data rate: 125SPSP to 8kSPS

کاربردها

  • Medical Instrumentation (ECG) including:
  • Patient monitoring; Holter, event, stress, and vital signs including ECG, AED, telemedicine
  • Sports and fitness (heart rate, respiration, and ECG)

ماژول ECG تک کانال GebraBit ADS1191

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

ماژول GebraBit ADS1191، یک ماژول 16 بیتی سنسور ECG سه لید با یک کانال نمونه‌برداری می‌باشد. که به دو ولتاژ برای تغذیه آنالوگ و دیجیتال ADS1191 نیاز دارد.

GebraBit ADS1191 دارای انتخاب برای منبع کلاک ADS1191 میباشد که یکی از آنها اسیلاتور داخلی ADS1191 و دیگری کریستال اسیلاتور خارجی 2.048MHz است.

همچنین ماژول GebraBit ADS1191، به دلیل در نظر گرفتن سوکت مادگی جک 3.5 میلی‌متری، از یکی از چنل‌های سنسور ADS1191 استفاده می‌کند بدین معنا که در این محصول هر کابل ECG  3لید با جک 3.5 میلی متری می‌تواند نیازهای کاربر را برآورده کند. در این ماژول برای خواندن داده‌ها و برقراری ارتباط با سنسور، یک رابط SPI مورد نیاز است.

ویژگی‌های ماژول GebraBit ADS1191

  • User selectable analog and digital supply voltage
  • User selectable ADS1191 clock source (Internal or external )
  • 2.048 Mhz crystal oscillator
  • Benefits from 1 channel of ADS1191
  • Can use 3-lead ECG cable with 3.5mm phone male jack
  • ON/OFF LED indicator
  • Access to important I/O of ADS1191
  • SPI interface for reading data and configuring the sensor
  • 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 medium (36.29mm x 46.18mm)

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

سنسور ADS1191

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

جک هدفون 3.5mm

این جک هدفون به منظور اتصال لیدهای ECG به ماژول بوده و برای دریافت سیگنال های ضربان قلب استفاده میشود.

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

با اتصال جک هدفون نری کابل ECG به سوکت مربوطه روی ماژول و چسباندن صحیح لیدها ، ماژول فعال شده و مانیتورینگ ضربان قلب انجام میشود.

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

جامپر تعیین منبع کلاک داخلی/ خارجی سنسور

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

نکته: اگر جامپر سلکتور تعیین منبع کلاک داخلی/ خارجی سنسور بر روی داخلی قرار گرفته شود و جامپر سلکتور منبع کلاک خارجی روی سمت چپ باشد، کلاک داخلی سنسور بر روی پین CLK در دسترس قرار خواهد گرفت.

جامپرسلکتور منبع کلاک خارجی

درصورتیکه مقاومت 0R سمت راست باشد کریستال اسیلاتور 2.048MHz  تعبیه شده بر روی برد به عنوان منبع خارجی فعال خواهد شد و در صورتیکه مقاومت 0R  سمت چپ باشد، منبع کلاک داخلی  از پین CLK دریافت میشود.

کریستال اسیلاتور 2.048MHz

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

جامپر سلکتور ولتاژ تغذیه‌ی آنالوگ (AVDD)

با توجه به وضعیت مقاومت  0R این جامپر ، ولتاژ تغذیه آنالوگ سنسور از بین 3V3  و 5V انتخاب میشود.

جامپر سلکتور ولتاژ تغذیه‌ی دیجیتال (DVDD)

با توجه به وضعیت مقاومت  0R این جامپر ، ولتاژ تغذیه دیجیتال سنسور از بین 3V3  و 5V انتخاب میشود.

پین های ماژول

پین های تغذیه

5V و 3V3 : این پین‌ها می توانند با توجه به وضعیت Jumper Selector های AVDD وDVDD ، تغذیه اصلی سنسور را تامین کنند.

GND : این پین زمین مشترک برای تغذیه ماژول است.

پین های SPI

  • 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 ADS1191 به صورت همزمان استفاده کنید، کافیست پین های SDO , SDI , SCK همه ماژول ها و میکرکنترلر(پردازنده) را به هم متصل کرده و به CS هر کدام، یک پین منحصر به فرد اختصاص دهید.

پین های ورودی/خروجی

  • GP1 : این پین، پین GPIO1 ماژول است که میتوان از آن به عنوان پین ورودی / خروجی همه منظوره استفاده کرد. 
  • GP2 : این پین، پین GPIO2 ماژول است که میتوان از آن به عنوان پین ورودی / خروجی همه منظوره استفاده کرد. 

دیگر پین ها

  • RST : از این پین برای راه اندازی مجدد (ریست کردن ) سنسور استفاده میشود.
  • RDY : این پین، پین خروجی دیجیتال ماژول است که وقتی دیتا آماده میشود در حالت active-low  قرار میگیرد.
  • STA : این پین، پین استارت ماژول است و از آن برای روشن کردن سنسور استفاده میشود.

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

اتصال SPI با GebraBit STM32F303

برای اتصال SPI ماژول GebraBit ADS1191به ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDI و SDO و SCK و CS رو پین های PB5 و PB4 و PB3 و PC13 (برای راحتی کار در STMCUBEMX) ماژول GebraBit ADS1191را به صورت Pin to Pin به راحتی بر روی ماژول GebraBit STM32F303 قرار دهید.

اتصال SPI با GebraBit ATMEGA32A

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

توجه: در صورت استفاده از ماژول‌های میکروکنترلری GebraBit توجه داشته باشید که جامپر سلکتورهای VDD ماژول GebraBit  ADS1191 روی 3V3 باشد تا راحت تر بتوانید ولتاژ3V3 را از ماژول میکروکنترلری بگیرید.

اتصال SPI با ARDUINO UNO

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

ماژول نظارت بر ضربان قلب و تنفس

ولتاژ تغذیه

3V3, 5V

جریان مصرفی

10 mA to 30 mA (Typ. 20 mA)

تعداد کانال‌ها

1

فرکانس کریستال

2.048 Mhz

نوع خروجی

SPI, Digital

رزولوشن ADC

16 Bit

سرعت انتقال داده

125SPS to 8kSPS

ابعاد

Gebra medium (36.29mm x 46.18mm)

دمای کاری

-40 to +85 °C

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

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

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

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

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

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

سخت افزارهای مورد نیازنرم افزارهای مورد نیاز
  GebraBit ADS1191 module Arduino IDE
 Arduino UNO
 Logic Level Converter

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

توجه کنید که برای راه اندازی این ماژول احتیاج به Logic Level Converter دارید زیرا سطح منطقی این ماژول 3V3 ولت میباشد و در صورت اتصال مستقیم ماژول به آردوینو امکان آسیب به سنسور خواهد شد.

رنگADS1191Arduino
طلاییSDID11 (MOSI)
زردSDOD12 (MISO)
قهوه ایSCKD13 (SCK)
طوسیCSD10 (SS)
سبزRSTD7
بنفشRDYD2
نارنجیSTAA5
قرمز3V33V3
آبیNC5V
مشکیGNDGND

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

پس از اتصال آردوینو به ماژول توسط Logic Level Converter، کتابخانه ADS1191 را دانلود و به نرم افزار آردوینو اضافه کنید.

کتابخانه های مورد نیاز
 ADS1191 Library

اگر نمی‌دانید چطور کتابخانه‌های GebraBit را به آردوینو اضافه کنید، به لینک آموزشی زیر مراجعه کنید.

نحوه افزودن کتابخانه های GebraBit به آردوینو

نحوه اتصال لیدها به بدن

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

با اتصال جک هدفون نری کابل ECG به سوکت مربوطه روی ماژول و چسباندن صحیح لیدها ، ماژول فعال شده و مانیتورینگ ضربان قلب انجام میشود.

برای اتصال این سه لید به بدن، روش‌های مختلفی وجود دارد و روش ذکرشده تنها یکی از این روش‌ها است. پیش از چسباندن لیدها، حتماً سطح مورد نظر را با الکل تمیز کنید. وجود گرد و غبار و چربی یا مو روی سطح مورد نظر می‌تواند کیفیت سیگنال‌های دریافتی از ماژول را کاهش دهد و دقت اندازه‌گیری را تحت تأثیر قرار دهد.

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

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

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

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

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

بعد از اتصال لید ها به بدن و ماژول به آردوینو و اضافه کردن کتابخانه سنسور به نرم افزار آردوینو به مسیر زیر بروید و کد نمونه را باز کنید.                    File > Examples > GebraBit_ADS1191-2 > ECG_Plotter

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

اتصالات ماژول به آردوینو در کامنت های بالای کد ذکر شده است:

//  |ads119X pin label | Arduino Connection   |Pin Function      |
//  |----------------- |:--------------------:|-----------------:|
//  | VDD              | +3V3                 |  Supply voltage  |
//  | RST              | D7                   |  Reset           |
//  | STA              | A5                   |  Start Input     |
//  | RDY              | D2                   |  Data Ready Outpt|
//  | CS               | D10                  |  Chip Select     |
//  | SDI              | D11                  |  Slave In        |
//  | SDO              | D12                  |  Slave Out       |
//  | SCK              | D13                  |  Serial Clock    |
//  | GND              | Gnd                  |  Gnd             |

کتابخانه های مورد نیاز برای راه اندازی سنسور وارد برنامه شده اند:

#include "GebraBit_ADS1191-2.h"
#include "ecgAlgo1191-2.h"
#include <SPI.h>

در صورتی که پین های DRDY(RDY) ، CS ، START(STA) ، PWDN(RST) ماژول را به پایه های دیگری از آردوینو متصل کردید کد زیر را باتوجه به اتصالات خودتان تغییر دهید.

const int ADS119X_DRDY_PIN = 2;
const int ADS119X_CS_PIN = 10;
const int ADS119X_START_PIN = A5;
const int ADS119X_PWDN_PIN = 7;

توجه: حتما برای دیدن خروجی بر روی Plotter از نسخه های قدیمی آردونیو استفاده کنید (1.8.20 به قبل)

//To see the output of another channel on the plotter, change CH1Filterout to CHXFilterout, uncomment the specific channel number lines, and comment out the CH2 lines.
Serial.println(CH1Filterout);

متن کد فایل آردوینو:

// ________________________________________________________________________________________________________
// Copyright (c) 2020 GebraBit Inc. All rights reserved.
//
// This software, related documentation and any modifications thereto (collectively �Software�) is subject
// to GebraBit and its licensors' intellectual property rights under U.S. and international copyright
// and other intellectual property rights laws.
//
// GebraBit and its licensors retain all intellectual property and proprietary rights in and to the Software
// and any use, reproduction, disclosure or distribution of the Software without an express license agreement
// from GebraBit is strictly prohibited.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT IN
// NO EVENT SHALL GebraBit BE LIABLE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
// OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
// OF THE SOFTWARE.
// @Author       	: Sepehr Azimi
// inspired by ADS1292R ProtoCentral source code
// ________________________________________________________________________________________________________
//
//  |ads119X pin label | Arduino Connection   |Pin Function      |
//  |----------------- |:--------------------:|-----------------:|
//  | VDD              | +3V3                 |  Supply voltage  |
//  | RST              | D7                   |  Reset           |
//  | STA              | A5                   |  Start Input     |
//  | RDY              | D2                   |  Data Ready Outpt|
//  | CS               | D10                  |  Chip Select     |
//  | SDI              | D11                  |  Slave In        |
//  | SDO              | D12                  |  Slave Out       |
//  | SCK              | D13                  |  Serial Clock    |
//  | GND              | Gnd                  |  Gnd             |
//
// ________________________________________________________________________________________________________


#include "GebraBit_ADS1191-2.h"
#include "ecgAlgo1191-2.h"
#include <SPI.h>

volatile uint8_t globalHeartRate = 0;
volatile uint8_t globalRespirationRate=0;

const int ADS119X_DRDY_PIN = 2;
const int ADS119X_CS_PIN = 10;
const int ADS119X_START_PIN = A5;
const int ADS119X_PWDN_PIN = 7;

int16_t CH1WaveBuff, CH1Filterout;
int16_t CH2WaveBuff, CH2Filterout;

ads119x ADS119X;
ecg_algorithm ECG_ALGORITHM;

void setup()
{
  delay(2000);

  SPI.begin();
  SPI.setBitOrder(MSBFIRST);
  //CPOL = 0, CPHA = 1
  SPI.setDataMode(SPI_MODE1);
  // Selecting 1Mhz clock for SPI
  SPI.setClockDivider(SPI_CLOCK_DIV16);

  pinMode(ADS119X_DRDY_PIN, INPUT);
  pinMode(ADS119X_CS_PIN, OUTPUT);
  pinMode(ADS119X_START_PIN, OUTPUT);
  pinMode(ADS119X_PWDN_PIN, OUTPUT);

  Serial.begin(57600);
  ADS119X.ads119xInit(ADS119X_CS_PIN,ADS119X_PWDN_PIN,ADS119X_START_PIN);
  Serial.println("Initiliziation is done");
}

void loop()
{
  ads119xOutputValues ecgValues;

  boolean ret = ADS119X.getads119xEcgSamples(ADS119X_DRDY_PIN,ADS119X_CS_PIN,&ecgValues);
  if (ret == true)
  {
    CH1WaveBuff = (int16_t)(ecgValues.sDaqVals[0]) ;
    CH2WaveBuff = (int16_t)(ecgValues.sDaqVals[1]) ;

    if(ecgValues.leadoffDetected == false)
    {

      ECG_ALGORITHM.ECG_ProcessCurrSample(&CH1WaveBuff, &CH1Filterout);   // filter out the line noise @40Hz cutoff 161 order
      ECG_ALGORITHM.QRS_Algorithm_Interface(CH1Filterout,&globalHeartRate); // calculate
      // Uncomment for CH2
      //ECG_ALGORITHM.ECG_ProcessCurrSample(&CH2WaveBuff, &CH2Filterout);   // filter out the line noise @40Hz cutoff 161 order
      //ECG_ALGORITHM.QRS_Algorithm_Interface(CH2Filterout,&globalHeartRate); // calculate

    }else{
      // Uncomment for CH1
      CH1Filterout = 0;
      // Uncomment for CH2
      //CH2Filterout = 0;
    }
    //To see the output of another channel on the plotter, change CH1Filterout to CHXFilterout, uncomment the specific channel number lines, and comment out the CH2 lines.
    Serial.println(CH1Filterout);
  }
}

آردوینو خود را به کامپیوتر متصل کنید و مدل و پورت آردوینو خود را انتخاب کنید.

سپس نمونه کد را ابتدا Verify و سپس Upload کنید

بعد از Upload کردن کد به Tools > Serial Plotter را باز کرده و می توانید خروجی ماژول را مشاهده کنید 

حتما BaudRate را روی 57600 تنظیم کنید در غیر این صورت دیتای درستی دریافت نخواهید کرد.

در ادامه می توانید کتابخانه ADS1191, شماتیک و دیتاشیت ماژول را دانلود نمایید.

ویدیو و تصاویر خروجی برنامه:

تصویر خروجی کانال اول ECG:

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

برای بهبود کیفیت سیگنال خروجی، لازم است که نویزهای محیطی و بیولوژیکی کاهش یابند. برخی از راهکارهای موثر شامل موارد زیر هستند:

  • کاهش تداخلات الکترومغناطیسی: استفاده از کابل‌های شیلددار، فیلترهای حذف نویز و فاصله‌گیری از تجهیزات الکترونیکی پرقدرت.
  • حذف نویز برق شهر:  به‌کارگیری فیلتر Notch در فرکانس 50/60Hz.
  • کاهش نویز حرکتی:  تثبیت صحیح الکترودها روی پوست، استفاده از فیلترهای Adaptive  برای پردازش سیگنال.
  • پیش‌پردازش سیگنال:  اعمال فیلترهای باندپاس (معمولاً بین 0.5Hz تا 100Hz) و روش‌های پردازش سیگنال مانند Wavelet Transform  یا PCA/ICA  برای تفکیک نویز از سیگنال اصلی.

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

1. ADS1191 چیست و چگونه کار می‌کند؟

ADS1191 یک ADC آنالوگ به دیجیتال با وضوح بالا و low-noise است که برای applications پزشکی مانند ECG و EMG طراحی شده است. این سنسور سیگنال‌های آنالوگ کوچک را با دقت ۱۶ بیتی یا ۲۴ بیتی نمونه‌برداری می‌کند و داده‌ها را از طریق رابط SPI به میکروکنترلر ارسال می‌کند. عملکرد آن شامل تقویت سیگنال ورودی، فیلتر low-pass داخلی و تبدیل دیجیتال با precision بالا است. استفاده از ADS1191 به کاهش نویز و افزایش accuracy در سیستم‌های حساس کمک می‌کند.

🔗 Reference: Official Datasheet – ADS1191


2. مشخصات ولتاژ و جریان ADS1191 چگونه است؟

ADS1191 دارای ولتاژ تغذیه ۲٫۷ تا ۵٫۵ ولت است و جریان مصرفی آن در حالت فعال حدود ۲٫۵ میلی‌آمپر است. این مصرف کم برای applications پوشیدنی و battery-powered اهمیت دارد. همچنین محدوده common-mode input برای ورودی‌های differential بین ۰ تا VDD تنظیم شده تا دقت اندازه‌گیری بالا حفظ شود. توجه به این پارامترها در طراحی مدار ضروری است.

🔗 Reference: Official Datasheet – ADS1191


3. چگونه داده‌ها از ADS1191 خوانده می‌شوند؟

ADS1191 از رابط SPI برای انتقال داده استفاده می‌کند. داده‌های ۲۴ بیتی شتاب و ولتاژ خروجی از رجیسترهای داخلی به میکروکنترلر منتقل می‌شوند. برای خواندن داده‌ها باید ترتیب chip select و clock به دقت رعایت شود. نمونه‌برداری با نرخ ODR قابل تنظیم، امکان هماهنگی با الگوریتم‌های filtering را فراهم می‌کند.

🔗 Reference: Evaluation Board User Guide – ADS1191EVM


4. نحوه کالیبراسیون ADS1191 چگونه است؟

کالیبراسیون شامل offset و gain adjustment برای حذف خطای DC و افزایش linearity است. می‌توان از رجیسترهای calibration داخلی استفاده کرد یا با اعمال سیگنال مرجع خارجی، precision اندازه‌گیری را افزایش داد. کالیبراسیون دوره‌ای باعث کاهش drift و بهبود accuracy در طول زمان می‌شود.

🔗 Reference: Application Note – ECG Front-End Design Guide


5. چگونه نویز محیطی روی ADS1191 را کاهش داد؟

استفاده از PCB با ground plane کامل، مسیر کوتاه برای خطوط SPI و جداسازی analog و digital supply باعث کاهش EMI می‌شود. همچنین bypass capacitor و فیلتر RC در ورودی‌ها نویز high-frequency را کاهش می‌دهند. این اقدامات به بهبود SNR و دقت measurement کمک می‌کنند.

🔗 Reference: Technical Article – Low Noise ADC


6. کاربرد ADS1191 در دستگاه‌های ECG چگونه است؟

در ECG، ADS1191 سیگنال‌های کوچک قلب را با دقت بالا دریافت و دیجیتال می‌کند. دقت low-noise و high-resolution آن باعث می‌شود که waveform قلب با جزئیات دقیق ثبت شود. این داده‌ها برای تشخیص arrhythmia، heart rate و سایر پارامترهای پزشکی استفاده می‌شوند.

🔗 Reference: Product Page – ADS1191


7. کاربرد ADS1191 در wearable devices چگونه است؟

برای دستگاه‌های پوشیدنی، مصرف انرژی پایین و اندازه کوچک ADS1191 اهمیت دارد. این سنسور می‌تواند سیگنال‌های بیوالکتریک مانند EMG و ECG را بدون نیاز به منبع تغذیه قوی دریافت کند و داده‌ها را برای پردازش real-time ارسال نماید. طراحی مدار با باتری کم‌ظرفیت نیز امکان‌پذیر است.

🔗 Reference: Evaluation Board User Guide – ADS1191EVM


8. چگونه می‌توان ADS1191 را از sleep mode خارج کرد؟

با تنظیم رجیستر power management و ارسال دستور wake-up، سنسور فعال شده و شروع به نمونه‌برداری می‌کند. استفاده از sleep mode در زمان عدم نیاز به measurement مصرف انرژی را کاهش می‌دهد. پس از خروج از sleep، سنسور آماده ارسال داده‌های real-time است.

🔗 Reference: Official Datasheet – ADS1191


9. چگونه full-scale range ورودی ADS1191 را تنظیم کنیم؟

ADS1191 با gain قابل تنظیم امکان انتخاب full-scale range برای ورودی differential را فراهم می‌کند. این تنظیمات به افزایش resolution و جلوگیری از saturation کمک می‌کنند. برای سیگنال‌های کوچک ECG، استفاده از gain بالا توصیه می‌شود، در حالی که برای سیگنال‌های بزرگ‌تر باید gain کاهش یابد.

🔗 Reference: Application Note – ECG Front-End Design Guide


10. چگونه از ADS1191 برای خواندن چند کانال سیگنال استفاده کنیم؟

با استفاده از ماژول multiplexer یا مدل‌های چند کاناله ADS1191 می‌توان چند ورودی آنالوگ را اندازه‌گیری کرد. داده‌ها به صورت سریال از طریق SPI خوانده می‌شوند و ترتیب channel selection باید در firmware رعایت شود. این روش برای monitoring همزمان چند سیگنال پزشکی یا صنعتی کاربرد دارد.

🔗 Reference: Evaluation Board User Guide – ADS1191EVM


11. چگونه drift در ADS1191 را کاهش دهیم؟

drift در ADS1191 معمولاً به دلیل تغییر دما و aging قطعات رخ می‌دهد. برای کاهش آن می‌توان از کالیبراسیون دوره‌ای، استفاده از reference voltage پایدار و نگهداری دما در محدوده توصیه شده بهره برد. همچنین طراحی PCB با مسیرهای کوتاه و ground plane کامل به کاهش اثرات محیطی کمک می‌کند. با این اقدامات، دقت اندازه‌گیری در طول زمان حفظ می‌شود.

🔗 Reference: Official Datasheet – ADS1191


12. چگونه خطای offset در ADS1191 را تصحیح کنیم؟

خطای offset می‌تواند باعث تغییر پایه سیگنال شود و accuracy اندازه‌گیری را کاهش دهد. ADS1191 امکان offset calibration داخلی را دارد و می‌توان با اعمال ولتاژ مرجع صفر یا تنظیم رجیسترها، offset را تصحیح کرد. این فرآیند برای سیگنال‌های کوچک ECG/EMG بسیار حیاتی است.

🔗 Reference: Application Note – ECG Front-End Design Guide


13. چه مشکلات رایجی در اتصال SPI به ADS1191 رخ می‌دهد؟

مشکلات رایج شامل signal glitch، misalignment بین clock و data، و عدم رعایت timing توصیه‌شده است. رعایت ترتیب chip select، استفاده از pull-up resistor مناسب و بررسی integrity خطوط SPI می‌تواند خطاها را کاهش دهد. همچنین استفاده از oscilloscope برای بررسی waveform و debugging پیشنهاد می‌شود.

🔗 Reference: Evaluation Board User Guide – ADS1191EVM


14. چگونه نویز 50/60Hz محیط روی ADS1191 کاهش می‌یابد؟

برای کاهش نویز شبکه، می‌توان از فیلتر notch یا digital filter داخلی استفاده کرد. همچنین استفاده از shield و twisted pair در کابل‌های ورودی کمک می‌کند. ADS1191 دارای فیلترهای داخلی برای rejection نویز AC است و انتخاب sampling rate مناسب به کاهش interference کمک می‌کند.

🔗 Reference: Technical Article – Low Noise ADC


15. چه روش‌هایی برای troubleshooting سیگنال ADS1191 وجود دارد؟

اگر سیگنال غیرواقعی یا noisy دریافت می‌کنید، ابتدا اتصال power و ground را بررسی کنید. سپس integrity خطوط SPI، filterها، و reference voltage را کنترل کنید. کالیبراسیون و تنظیم gain مناسب نیز از روش‌های مؤثر است. استفاده از evaluation board می‌تواند برای تشخیص مشکل مفید باشد.

🔗 Reference: Evaluation Board User Guide – ADS1191EVM


16. طراحی PCB برای ADS1191 چه نکاتی دارد؟

برای طراحی PCB، بخش analog و digital باید جدا از هم باشند. استفاده از ground plane کامل، مسیر کوتاه برای خطوط SPI و فیلتر bypass در پاورها ضروری است. placement مناسب capacitors و کاهش loop area برای high-frequency currents نویز را کاهش می‌دهد. رعایت این نکات دقت و stability measurement را افزایش می‌دهد.

🔗 Reference: Application Note – ECG Front-End Design Guide


17. چگونه می‌توان ADS1191 را با Arduino راه‌اندازی کرد؟

برای راه‌اندازی با Arduino، باید خطوط SPI به میکروکنترلر متصل شوند و کتابخانه رسمی TI یا library موجود در GitHub استفاده شود. پس از تنظیم رجیسترهای configuration، می‌توان داده‌های ۲۴ بیتی را خواند و با conversion مناسب به ولتاژ تبدیل کرد. نمونه‌برداری با نرخ مشخص، امکان پردازش real-time سیگنال را فراهم می‌کند.

🔗 Reference: TI GitHub ADS1191 Library


18. چگونه ADS1191 را با STM32 کنترل کنیم؟

اتصال ADS1191 به STM32 مشابه Arduino است، با استفاده از HAL SPI یا direct register access. تنظیم timing، chip select و interruptها برای خواندن داده‌ها ضروری است. می‌توان از DMA برای انتقال سریع داده‌های ADC استفاده کرد تا پردازش real-time با کمترین CPU load انجام شود.

🔗 Reference: Evaluation Board User Guide – ADS1191EVM


19. چه پارامترهایی در انتخاب sampling rate ADS1191 مهم است؟

sampling rate یا ODR باید با نوع سیگنال و bandwidth مورد نظر هماهنگ باشد. نرخ پایین موجب aliasing می‌شود و نرخ بالا مصرف انرژی را افزایش می‌دهد. برای ECG معمولاً ۵۰۰ تا ۱۰۰۰ SPS کافی است، در حالی که EMG ممکن است نیاز به نرخ بالاتر داشته باشد.

🔗 Reference: Official Datasheet – ADS1191


20. چه محدودیت‌هایی در ورودی differential ADS1191 وجود دارد؟

محدوده input differential باید در ±VREF × PGA gain باشد. عبور از این محدوده باعث saturation و کاهش accuracy می‌شود. رعایت مقاومت‌های series و proper input protection برای جلوگیری از آسیب به ADC توصیه می‌شود.

🔗 Reference: Official Datasheet – ADS1191


21. چه عواملی باعث افت accuracy در ADS1191 می‌شوند؟

افت accuracy در ADS1191 معمولاً ناشی از نویز محیطی، drift دما، خطای offset و gain، و interference در خطوط SPI است. استفاده از فیلترهای analog و digital، کالیبراسیون منظم و طراحی PCB اصولی باعث کاهش خطا می‌شود. رعایت شرایط ولتاژ تغذیه و استفاده از reference voltage پایدار نیز بسیار مهم است.

🔗 Reference: Official Datasheet – ADS1191


22. چگونه خطای gain در ADS1191 تصحیح می‌شود؟

ADS1191 امکان کالیبراسیون gain داخلی را دارد تا اختلاف بین full-scale input و مقدار واقعی اندازه‌گیری شده تصحیح شود. این فرآیند شامل تنظیم رجیسترهای calibration و استفاده از سیگنال مرجع known amplitude است. با این کار linearity و precision در measurement حفظ می‌شود.

🔗 Reference: Application Note – ECG Front-End Design Guide


23. چه مشکلات رایجی در ارتباط SPI با ADS1191 رخ می‌دهد؟

مشکلات رایج شامل misalignment داده و clock، timing error، و عدم رعایت ترتیب chip select است. نویز روی خطوط SPI و کابل‌های طولانی نیز ممکن است داده‌ها را خراب کند. بررسی integrity خطوط، استفاده از pull-up مناسب و oscilloscope برای debugging توصیه می‌شود.

🔗 Reference: Evaluation Board User Guide – ADS1191EVM


24. چگونه نویز common-mode روی ورودی ADS1191 را کاهش دهیم؟

استفاده از electrode یا input shield مناسب، twisted pair برای کابل‌ها و فیلتر RC در ورودی‌ها باعث کاهش نویز common-mode می‌شود. همچنین انتخاب PGA gain مناسب و تنظیم reference voltage پایدار کمک به بهبود SNR می‌کند.

🔗 Reference: Technical Article – Low Noise ADC


25. چگونه چند کانال ECG با یک ADS1191 جمع‌آوری می‌شود؟

ADS1191 معمولاً یک channel دارد، اما با استفاده از multiplexer خارجی یا مدل‌های چند کاناله می‌توان چند سیگنال ECG را نمونه‌برداری کرد. ترتیب channel selection باید در firmware رعایت شود تا داده‌ها به درستی تفکیک شوند. این روش برای monitoring همزمان چند سیگنال پزشکی کاربرد دارد.

🔗 Reference: Evaluation Board User Guide – ADS1191EVM


26. مصرف انرژی ADS1191 چگونه کاهش می‌یابد؟

با استفاده از sleep mode و کاهش sampling rate می‌توان مصرف انرژی را کاهش داد. همچنین خاموش کردن PGA یا بخش‌های غیرضروری در زمان عدم نیاز به measurement موثر است. طراحی مدار با bypass capacitor مناسب نیز به کاهش ripple و کاهش مصرف کمک می‌کند.

🔗 Reference: Official Datasheet – ADS1191


27. چگونه ADS1191 در wearable devices استفاده می‌شود؟

در دستگاه‌های پوشیدنی، ADS1191 به دلیل مصرف انرژی پایین و اندازه کوچک مناسب است. می‌تواند سیگنال ECG و EMG را با precision بالا دریافت کند و داده‌ها را برای پردازش real-time ارسال نماید. استفاده از battery-powered mode و طراحی PCB فشرده اهمیت دارد.

🔗 Reference: Evaluation Board User Guide – ADS1191EVM


28. چگونه سیگنال‌های EMG با ADS1191 اندازه‌گیری می‌شوند؟

EMG دارای سیگنال‌های کوچک و پرنویز است. ADS1191 با gain مناسب و فیلترهای داخلی می‌تواند سیگنال را تقویت و نویز را کاهش دهد. داده‌ها به صورت ۲۴ بیتی دیجیتال ارسال می‌شوند و برای تحلیل فعالیت عضلانی استفاده می‌شوند.

🔗 Reference: Application Note – ECG Front-End Design Guide


29. چه فیلترهای داخلی در ADS1191 وجود دارد؟

ADS1191 دارای فیلتر low-pass و notch داخلی برای حذف نویز 50/60Hz و نویز high-frequency است. این فیلترها باعث افزایش SNR و دقت measurement می‌شوند و معمولاً با sampling rate تنظیم می‌شوند.

🔗 Reference: Official Datasheet – ADS1191


30. چگونه ورودی‌های آنالوگ ADS1191 محافظت می‌شوند؟

ورودی‌ها معمولاً با مقاومت سری و clamping diode محافظت می‌شوند تا از ولتاژ بیش از حد جلوگیری شود. این اقدامات باعث افزایش طول عمر سنسور و جلوگیری از damage در صورت اتصال اشتباه می‌شوند.

🔗 Reference: Evaluation Board User Guide – ADS1191EVM


31. چه نکاتی برای high-precision measurement با ADS1191 مهم است؟

برای measurement با دقت بالا باید از reference voltage پایدار، کالیبراسیون دوره‌ای، و طراحی PCB اصولی استفاده کرد. همچنین انتخاب proper PGA gain و رعایت فیلترها ضروری است. این اقدامات باعث کاهش drift و افزایش linearity می‌شوند.

🔗 Reference: Technical Article – Low Noise ADC


32. چگونه ADC error را در ADS1191 کاهش دهیم؟

خطای ADC شامل offset, gain, drift و quantization error است. با کالیبراسیون، انتخاب proper sampling rate، و استفاده از reference voltage دقیق می‌توان این خطاها را کاهش داد. همچنین توجه به EMI و نویز محیطی بسیار مهم است.

🔗 Reference: Official Datasheet – ADS1191


33. چه مشکلاتی در measurement ECG ممکن است رخ دهد؟

مشکلات شامل baseline drift، نویز 50/60Hz، artifactهای حرکتی و اتصال نامناسب الکترود است. استفاده از فیلترها، grounding مناسب، و کالیبراسیون کمک به کاهش این مشکلات می‌کند. ADS1191 با low-noise input و high-resolution data این مشکلات را به حداقل می‌رساند.

🔗 Reference: Application Note – ECG Front-End Design Guide


34. مقایسه ADS1191 با ADCهای مشابه چگونه است؟

ADS1191 نسبت به بسیاری از ADCهای مشابه، low-noise و high-resolution است و مصرف انرژی کمتری دارد. برای applications پزشکی و صنعتی که سیگنال‌های کوچک و پرنویز وجود دارد، گزینه مناسبی محسوب می‌شود. همچنین interface ساده SPI و libraryهای رسمی، توسعه firmware را آسان می‌کنند.

🔗 Reference: Product Page – ADS1191


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

می‌توانید صفحه رسمی محصول ADS1191 شامل Datasheet، Design Guide، Evaluation Board Manual و GitHub Library را مشاهده و دانلود کنید. این منابع برای طراحی، راه‌اندازی و کالیبراسیون ضروری هستند.

🔗 Reference: Product Page – ADS1191

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

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

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

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

توجه!

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

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

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