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

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

18.660.000 ریال

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

نوع ماژول

ماژول اندازه‌گیری بیوپتانسیل

ولتاژ تغذیه

3V3, 5V

جریان مصرفی

10 mA to 30 mA (Typ. 20 mA)

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

2

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

2.048 Mhz

نوع خروجی

SPI, Digital

رزولوشن ADC

16 Bit

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

125SPS to 8kSPS

ابعاد

Gebra medium (36.29mm x 46.18mm)

دمای کاری

-40 to +85 °C

توجه!

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

مروری بر سنسور ADS1192

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

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

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

مشخصات فنی

  • Output type: Digital – SPI
  • Number Of Channels: 2
  • ADC Resolution: 16 Bit
  • Data rate: 125SPS 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 ADS1192

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

Gebra ADS1192 یک ماژول سنسور ECG با دقت 16 بیت است که دارای دو کانال هم‌زمان نمونه‌برداری و طراحی چهار سیمه می‌باشد. این ماژول برای تغذیه هم بخش آنالوگ و هم بخش دیجیتال خود، به دو ولتاژ مجزا نیاز دارد؛ بنابراین، برای اینکه کاربر بتواند ولتاژ تغذیه موردنظر خود را بین 3.3V تا 5V انتخاب کند، دو جامپر انتخابی (jumper selector) در نظر گرفته شده است.

Gebra ADS1192 برای منبع کلاک (clock source) دو گزینه ارائه می‌دهد:

  1. نوسان‌ساز داخلی (Internal Oscillator) ماژول ADS1192
  2. نوسان‌ساز کریستالی خارجی 2.048 MHz

انتخاب منبع کلاک از طریق جامپر انتخابی به نام ‘CLK SEL’ jumper انجام می‌شود. علاوه بر این، یک جامپر دیگر به نام “EXT CLK” jumper نیز در این ماژول وجود دارد که نشان‌دهنده استفاده از یک منبع ساعت خارجی است.

همچنین در Gebra ADS1192، به دلیل وجود سوکت TYPE-C مادگی، تنها از دو کانال سنسور ADS1192 استفاده می‌شود. برای این منظور، یک کابل خاص EKG پنج سیمه طراحی شده، اما کاربران فقط به چهار سیم از این پنج سیم نیاز دارند!

این ویژگی‌ها، GebraBit ADS1192 را به یک انتخاب حرفه‌ای و انعطاف‌پذیر برای اندازه‌گیری سیگنال‌های ECG تبدیل می‌کنند.

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

  • User selectable analog and digital supply voltage
  • User selectable ADS1192 clock source (Internal or external )
  • 2.048 Mhz  crystal oscillator
  • Benefits from 2 channel of ADS1192
  • Custom-built TYPE-C 5 lead ECG cable  
  • ON/OFF LED indicator
  • Access to important I/O of ADS1192
  • 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)

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

سنسور ADS1192

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

type-C کانکتور

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

این دستگاه را میتوان به وسیله‌ی یک کابل ECG پنج لید با کانکتور type-c به بدن متصل کرد که یک لید از پنج لید کابل ECG بدون اتصال باقی میماند.

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

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

برای اتصال دستگاه به بدن و مانیتورینگ ضربان قلب کافیست کانکتور type-c کابل ECG را به سوکت مربوطه روی ماژول وصل کرده و لید قرمز را به شانه‌ی راست،لید زرد را به شانه‌ی چپ، لید مشکی را به پای راست و لید سبز را به پای چپ فرد و لید سفید بدون اتصال باقی میماند.

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

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

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

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

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

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

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

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

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

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

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

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

LED نمایشگر وضعیت روشن/خاموش سنسور

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

پین های ماژول

پین های تغذیه

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

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

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

دیگر پین ها

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

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

اتصال SPI با GebraBit STM32F303

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

اتصال SPI با GebraBit ATMEGA32A

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

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

اتصال SPI با ARDUINO UNO

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

ماژول اندازه‌گیری بیوپتانسیل

ولتاژ تغذیه

3V3, 5V

جریان مصرفی

10 mA to 30 mA (Typ. 20 mA)

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

2

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

2.048 Mhz

نوع خروجی

SPI, Digital

رزولوشن ADC

16 Bit

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

125SPS to 8kSPS

ابعاد

Gebra medium (36.29mm x 46.18mm)

دمای کاری

-40 to +85 °C

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

این ماژول را میتوان به وسیله‌ی یک کابل ECG پنج لید با کانکتور type-c به بدن متصل کرد که یک لید از پنج لید کابل ECG بدون اتصال باقی میماند. هر لید این کابل، دارای رنگ مخصوصی است که با توجه به آن، محل اتصال لید با بدن شخص میشود.

برای اتصال دستگاه به بدن و مانیتورینگ ضربان قلب کافیست کانکتور type-c کابل ECG را به سوکت مربوطه روی ماژول وصل کرده و لید قرمز را به شانه‌ی راست،لید زرد را به شانه‌ی چپ، لید مشکی را به پای راست و لید سبز را به پای چپ فرد و لید سفید بدون اتصال باقی میماند.

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

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

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;

همانطور که می دانید سنسور ADS1192 دارای دو کانال دیتای (نوارقلب) ECG می باشد. شما برای دیدن نتایج در Plotter آردوینو میتوانید با کامنت کردن و آن کامنت کردن خطوطی که در برنامه توضیح داده شده است، دیتای کانال دلخواه خود را مشاهده کنید. (توجه: حتما برای دیدن خروجی بر روی Plotter از نسخه های قدیمی آردونیو استفاده کنید (1.8.20 به قبل))

به طور مثال خروجی کد پایین در Plotter آردوینو دیتای کانال یک نوار قلب می باشد.

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

// ________________________________________________________________________________________________________
// 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 تنظیم کنید در غیر این صورت دیتای درستی دریافت نخواهید کرد.

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

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

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

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

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

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

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

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

1. ADS1192 چگونه کار می‌کند و اصول عملکرد آن چیست؟

ADS1192 یک ADC ۲۴ بیتی با low-noise و high-precision است که برای measurement سیگنال‌های بیولوژیکی مانند ECG و EMG طراحی شده است. این سنسور با استفاده از PGA داخلی، سیگنال‌های کوچک را تقویت می‌کند و داده‌های دیجیتال را با interface SPI یا I²C ارائه می‌دهد. ساختار low-power آن باعث مصرف انرژی پایین در applications پوشیدنی و portable می‌شود.

🔗 Reference: Official Datasheet – ADS1192


2. محدوده ورودی و ولتاژ مرجع ADS1192 چقدر است؟

ADS1192 دارای ورودی differential است و محدوده سیگنال ورودی ±VREF × PGA gain است. ولتاژ مرجع پایدار و low-noise برای حفظ accuracy measurement ضروری است. استفاده از reference با tolerance پایین و bypass capacitor مناسب باعث افزایش precision و کاهش drift می‌شود.

🔗 Reference: Official Datasheet – ADS1192


3. نحوه راه‌اندازی ADS1192 با Arduino چگونه است؟

برای راه‌اندازی ADS1192 با Arduino، خطوط SPI باید به میکروکنترلر متصل شوند و کتابخانه رسمی TI یا نمونه کد موجود در GitHub استفاده شود. با تنظیم رجیسترهای configuration و انتخاب sampling rate مناسب، داده‌های ۲۴ بیتی به صورت دیجیتال قابل خواندن هستند و می‌توان سیگنال‌های ECG و EMG را پردازش کرد.

🔗 Reference: TI GitHub ADS1192 Library


4. نحوه راه‌اندازی ADS1192 با STM32 چگونه است؟

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

🔗 Reference: Evaluation Board User Guide – ADS1192EVM


5. چگونه drift در ADS1192 کاهش می‌یابد؟

drift ناشی از تغییر دما و aging قطعات است. با استفاده از کالیبراسیون دوره‌ای، reference voltage پایدار و طراحی PCB با مسیرهای کوتاه و ground plane کامل می‌توان drift را کاهش داد. این اقدامات دقت و linearity measurement را در طول زمان حفظ می‌کنند.

🔗 Reference: Official Datasheet – ADS1192


6. چگونه خطای offset در ADS1192 تصحیح می‌شود؟

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

🔗 Reference: Application Note – ECG Front-End Design


7. مشکلات رایج در اتصال SPI با ADS1192 چیست؟

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

🔗 Reference: Evaluation Board User Guide – ADS1192EVM


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

می‌توان از فیلتر notch داخلی یا فیلتر RC در ورودی‌ها استفاده کرد. twisted pair و shield در کابل‌ها نیز نویز را کاهش می‌دهند. انتخاب sampling rate مناسب و استفاده از PGA با gain بهینه باعث افزایش SNR و کاهش interference می‌شود.

🔗 Reference: Technical Article – Low Noise ADC


9. طراحی PCB برای ADS1192 چه نکاتی دارد؟

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

🔗 Reference: Application Note – ECG Front-End Design


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

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

🔗 Reference: Official Datasheet – ADS1192


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

ADS1192 به‌صورت دو کاناله طراحی شده است و می‌تواند به‌صورت differential دو سیگنال ECG یا EMG را همزمان اندازه‌گیری کند. برای applications چندکاناله، می‌توان از multiplexer خارجی یا چند ADS1192 استفاده کرد. ترتیب خواندن کانال‌ها و همزمانی sampling برای پردازش صحیح داده‌ها اهمیت دارد.

🔗 Reference: Evaluation Board User Guide – ADS1192EVM


12. چه فیلترهای داخلی در ADS1192 وجود دارد؟

ADS1192 دارای فیلتر low-pass داخلی برای حذف نویز high-frequency و notch filter برای کاهش interference شبکه برق (50/60Hz) است. این فیلترها باعث بهبود SNR و دقت measurement می‌شوند و می‌توانند با رجیسترهای configuration فعال یا تنظیم شوند.

🔗 Reference: Official Datasheet – ADS1192


13. چگونه کالیبراسیون gain در ADS1192 انجام می‌شود؟

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

🔗 Reference: Application Note – ECG Front-End Design


14. چگونه ADS1192 برای wearable devices مناسب است؟

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

🔗 Reference: Evaluation Board User Guide – ADS1192EVM


15. نحوه اندازه‌گیری EMG با ADS1192 چگونه است؟

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

🔗 Reference: Application Note – ECG Front-End Design


16. چگونه خطای offset و drift همزمان کنترل می‌شود؟

با ترکیب offset calibration داخلی، انتخاب reference voltage پایدار و طراحی PCB مناسب، خطاهای offset و drift به حداقل می‌رسند. این اقدامات باعث می‌شوند measurement در طول زمان دقیق باقی بماند و سیگنال‌های کوچک مانند ECG قابل اعتماد باشند.

🔗 Reference: Official Datasheet – ADS1192


17. مشکلات رایج measurement با ADS1192 چیست؟

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

🔗 Reference: Technical Article – Low Noise ADC


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

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

🔗 Reference: Product Page – ADS1192


19. نحوه کاهش خطای quantization در ADS1192 چیست؟

ADS1192 دارای رزولوشن ۲۴ بیت است که quantization error بسیار کم ایجاد می‌کند. با انتخاب proper PGA gain و reference voltage دقیق، خطای quantization کاهش می‌یابد. این موضوع در measurement سیگنال‌های کوچک مانند ECG بسیار اهمیت دارد.

🔗 Reference: Official Datasheet – ADS1192


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

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

🔗 Reference: Product Page – ADS1192


21. چگونه sampling rate در ADS1192 انتخاب می‌شود؟

Sampling rate در ADS1192 با تنظیم رجیسترهای configuration مشخص می‌شود و می‌تواند بین 125 SPS تا 16 kSPS تغییر کند. انتخاب مناسب sampling rate برای جلوگیری از aliasing و حفظ SNR اهمیت دارد. برای سیگنال‌های ECG معمولاً 500–1kSPS کافی است.

🔗 Reference: Official Datasheet – ADS1192


22. چگونه low-power mode در ADS1192 فعال می‌شود؟

ADS1192 دارای sleep و standby mode است که مصرف انرژی را کاهش می‌دهند. با تنظیم رجیسترهای power-down و استفاده از clock خارجی کم مصرف، می‌توان battery life در wearable devices را افزایش داد و همزمان accuracy measurement را حفظ کرد.

🔗 Reference: Official Datasheet – ADS1192


23. چگونه نویز common-mode کاهش می‌یابد؟

با اتصال proper RLD (Right Leg Drive) برای ECG و استفاده از خطوط twisted pair برای differential inputs می‌توان common-mode noise را کاهش داد. PGA داخلی ADS1192 نیز کمک می‌کند تا سیگنال desired تقویت شود و نویز حذف گردد.

🔗 Reference: Application Note – ECG Front-End Design


24. نحوه اتصال چند ADS1192 برای سیستم چند کاناله چیست؟

برای applications چند کاناله، می‌توان از چند ADS1192 با SPI مشترک و Chip Select جداگانه استفاده کرد. ترتیب خواندن داده‌ها و همزمانی sampling بسیار مهم است تا سیگنال‌ها با دقت بالا جمع‌آوری شوند و interference بین کانال‌ها کاهش یابد.

🔗 Reference: Evaluation Board User Guide – ADS1192EVM


25. چگونه artifactهای حرکتی در ECG کاهش می‌یابد؟

Artifact حرکتی ناشی از جابجایی الکترود و بدن است. با استفاده از electrode gel مناسب، placement درست الکترود و فیلترهای نرم‌افزاری می‌توان اثرات motion artifact را کاهش داد. ADS1192 با high CMRR و low-noise input کمک می‌کند سیگنال ECG واقعی بهتر دریافت شود.

🔗 Reference: Technical Article – Low Noise ADC


26. چه ولتاژ تغذیه‌ای برای ADS1192 مناسب است؟

ADS1192 با ولتاژ 2.0–3.6V کار می‌کند. استفاده از voltage regulator پایدار و bypass capacitor نزدیک پین‌های تغذیه باعث کاهش ripple و بهبود precision measurement می‌شود. انتخاب proper supply برای wearable devices بسیار مهم است.

🔗 Reference: Official Datasheet – ADS1192


27. چه تاثیری انتخاب PGA gain بر measurement دارد؟

PGA gain تعیین‌کننده amplitude سیگنال ورودی است و باید با amplitude سیگنال واقعی تطبیق داده شود. انتخاب gain خیلی بالا باعث saturation و clipping می‌شود و gain کم باعث کاهش resolution. ADS1192 امکان تنظیم PGA از 1 تا 8 را دارد.

🔗 Reference: Official Datasheet – ADS1192


28. نحوه استفاده از internal reference چیست؟

ADS1192 دارای internal reference low-noise است که می‌تواند برای measurement دقیق بدون نیاز به reference خارجی استفاده شود. برای applications حساس، bypass capacitor نزدیک پین reference و حذف interference ضروری است.

🔗 Reference: Official Datasheet – ADS1192


29. چگونه ADC saturation در ADS1192 جلوگیری می‌شود؟

برای جلوگیری از saturation، باید amplitude سیگنال ورودی و PGA gain را تنظیم کرد. اضافه کردن series resistor یا protection circuit برای سیگنال‌های بزرگ کمک می‌کند تا input dynamic range رعایت شود و سیگنال clipping نشود.

🔗 Reference: Evaluation Board User Guide – ADS1192EVM


30. کاربرد ADS1192 در ECG monitoring چیست؟

ADS1192 به دلیل دقت بالا و low-noise input، برای ECG monitoring در بیمارستان‌ها و دستگاه‌های portable پزشکی بسیار مناسب است. می‌تواند سیگنال‌های قلب را با high resolution دریافت کرده و برای پردازش real-time یا ذخیره‌سازی دیجیتال آماده کند.

🔗 Reference: Application Note – ECG Front-End Design


31. کاربرد ADS1192 در EMG چیست؟

ADS1192 با دو کانال و PGA قابل تنظیم، سیگنال‌های عضلانی EMG را با low-noise و high resolution جمع‌آوری می‌کند. این قابلیت برای تحقیقات پزشکی و پروتزهای هوشمند کاربردی است و پردازش real-time داده‌ها امکان‌پذیر می‌شود.

🔗 Reference: Application Note – ECG Front-End Design


32. چگونه SPI timing را برای ADS1192 تنظیم کنیم؟

Timing باید مطابق با مشخصات datasheet رعایت شود: setup و hold time داده‌ها، clock frequency و chip select. رعایت این timing باعث می‌شود داده‌های ۲۴ بیتی بدون خطا منتقل شوند و measurement دقیق باقی بماند.

🔗 Reference: Official Datasheet – ADS1192


33. نحوه کاهش اثر نویز محیط در ADC measurement چیست؟

استفاده از shield، twisted pair و proper grounding بسیار مهم است. فیلترهای داخلی ADS1192 و PGA gain مناسب باعث افزایش SNR و کاهش نویز محیط می‌شوند. همچنین placement مناسب برد و حذف loop area اثرات نویز را کم می‌کند.

🔗 Reference: Technical Article – Low Noise ADC


34. چه مشکلات رایج در wearable devices با ADS1192 وجود دارد؟

مشکلات شامل battery drain، motion artifact، EMI و thermal drift است. استفاده از low-power mode، proper grounding، filtering و کالیبراسیون دوره‌ای باعث کاهش این مشکلات می‌شود. ADS1192 به دلیل مصرف کم و precision بالا مناسب wearable devices است.

🔗 Reference: Evaluation Board User Guide – ADS1192EVM


35. منابع رسمی ADS1192 را چگونه دریافت کنیم؟

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

🔗 Reference: Product Page – ADS1192

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

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

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

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

توجه!

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

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

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