...

ห้องสมุด Arduino สำหรับการตรวจวัดอัตราการเต้นของหัวใจด้วยเครื่องวัดออกซิเจนในเลือด

ห้องสมุด Arduino สำหรับการตรวจวัดอัตราการเต้นของหัวใจด้วยเครื่องวัดออกซิเจนในเลือด

ห้องสมุด Arduino สำหรับการตรวจวัดอัตราการเต้นของหัวใจด้วยเครื่องวัดออกซิเจนในเลือด

หนึ่งในพารามิเตอร์ที่ได้รับการตรวจสอบในโครงการการจัดการการนอนหลับของฉัน

มันคือชีพจร เพื่อวัดมัน ฉันพัฒนาอุปกรณ์โดยอาศัยพฤติกรรมของฮีโมโกลบินและออกซีฮีโมโกลบินต่อความยาวคลื่นแสงที่แตกต่างกัน. โดยพื้นฐานแล้วเป็นเรื่องเกี่ยวกับการวัดปริมาณแสงบางประเภทที่สามารถผ่านหรือสะท้อนไปยังบริเวณที่มีการชลประทานที่ดีของร่างกายได้ ความถี่ที่เกิดวัฏจักรที่สมบูรณ์ของปรากฏการณ์นี้ทำให้สามารถวัดค่าได้ ชีพจร.

สารบัญ

    ในขั้นตอนการออกแบบและการทดสอบของ อุปกรณ์วัดชีพจร ฉันพัฒนาโปรแกรมเล็กๆ ขึ้นมาเพื่อช่วยตรวจสอบความถูกต้องของแอสเซมบลี ก่อนอื่นฉันเขียนโค้ดด้านล่างซึ่งใช้ค่าที่วัดได้เป็นครั้งคราว (อย่างน้อยทุกครั้ง MAXIMUM_MEASUREMENT_TIME และอย่างมากที่สุดในแต่ละครั้ง MINIMUM_MEASUREMENT_TIME) เมื่อพวกเขาเปลี่ยนแปลงค่าต่ำสุดระหว่างอันหนึ่งกับอันก่อนหน้า (ค่าที่สอดคล้องกับ MINIMUM_SIZE) และ ตรวจสอบจากคอมพิวเตอร์ด้วยแอปพลิเคชัน Python เพื่อให้สามารถวิเคราะห์ได้ในภายหลัง

    เมื่อปรับค่าแล้ว (เริ่มจากการวัดที่มีความหนาแน่นมาก) ฉันได้รวบรวมค่าต่างๆ จาก เครื่องวัดความอิ่มตัวของออกซิเจน เมื่อเวลาผ่านไป ผมสามารถสร้างกราฟโดยใช้สเปรดชีต Lotus Symphony Spreadsheets de LibreOffice, เฉพาะเจาะจง.

    gr%C3%A1fica-de-las-medidas-del-ox%C3%ADmetro-de-pulso-con-Calc-de-LibreOffice Librería Arduino para monitorización de la frecuencia cardíaca con oxímetro de pulso

    ด้วยข้อมูลที่รวบรวมดังที่แสดงในภาพด้านบน การดำเนินการต่อไปคือการพิจารณาว่าความหนาแน่นของค่าช่วยให้เราคำนวณด้วยวิธีที่เชื่อถือได้ แต่ "ประหยัด" (ไม่สุ่มตัวอย่างมากกว่าข้อมูลที่จำเป็น) ค่าของ ชีพจร; ดังที่เห็นในกราฟด้านล่าง มาตรการที่ใช้ดูเหมือนจะให้ผลลัพธ์ที่สมเหตุสมผลที่คาดหวัง

    .

    medida-de-la-presencia-de-oxihemoglobina-a-lo-largo-del-tiempo-con-un-ox%C3%ADmetro-de-pulso Librería Arduino para monitorización de la frecuencia cardíaca con oxímetro de pulso

    ต่อไปด้วยข้อมูลจากการเก็บตัวอย่างข้อมูล จำเป็นต้องพัฒนาอัลกอริธึมที่จะวัดอัตราชีพจร โดยยึดตามกราฟว่า เพื่อความง่าย จะถือว่ากราฟแสดงเค้าโครงที่คล้ายกับ คิวอาร์เอส คอมเพล็กซ์ดูเหมือนว่าสิ่งที่ง่ายที่สุดคือการวัดเวลาระหว่างส่วนที่โดดเด่นที่สุดด้วยค่าที่สูงกว่า (ซึ่งสอดคล้องกับโซน qRs ของการสลับขั้วของโพรง) ละทิ้งโซนที่ประจบประแจงและ "ดังกว่า" ซึ่งจึงยากกว่า เพื่อวัด โซลูชันที่นำมาใช้ซึ่งสอดคล้องกับโค้ดทดสอบด้านล่างนั้นทำงานตามขั้นตอนต่อไปนี้:

    • ตรวจจับพื้นที่ที่ถูกวัดในแต่ละกรณีเพื่อสนใจเฉพาะค่าสูงสุดเท่านั้น คิวอาร์เอส และโยนหุบเขาทิ้งไป ในการทำเช่นนี้ สามารถวัดค่าที่สูงกว่าค่าคงที่ที่แน่นอนได้ แต่มีความเสี่ยงที่บุคคลและ/หรือสถานการณ์สามารถเพิ่มหรือลดค่าได้ แม้ว่าจะตามสัดส่วนก็ตาม เพื่อหลีกเลี่ยงปัญหานี้ ค่าในพื้นที่จะถือว่ามากกว่าค่าที่เกินค่าเฉลี่ยด้วยค่าสัมประสิทธิ์ที่แน่นอน ด้วยวิธีนี้ การวัดจะถูกปรับเทียบด้วยตนเองอย่างละเอียดอ่อน และสามารถปรับเพิ่มเติมได้อีกโดยการปรับค่าสัมประสิทธิ์อย่างละเอียด ซึ่งในกรณีของฉัน ฉันได้ทำการทดลองในระหว่างการทดสอบ

      เลือกค่าของโซนจากมากไปน้อยสำหรับการวัด (Rs) ของจุดสูงสุด คิวอาร์เอสให้ใกล้กับจุดสูงสุดของเส้นโค้งมากที่สุด หากต้องการทราบว่าโซนจากน้อยไปหามากถูกยกเลิกก็เพียงพอแล้วที่จะตรวจสอบว่าค่าใหม่น้อยกว่าค่าก่อนหน้าและตรวจสอบว่ายังไม่พบค่าที่ค้นหาเนื่องจากโดยทั่วไปมีหลายค่าในจากมากไปน้อย โซนของ คิวอาร์เอส ขึ้นอยู่กับความหนาแน่นของการสุ่มตัวอย่าง ในการจับเวลาพัลส์ ค่าของช่วงเวลาที่พบจุดนั้นจะถูกจัดเก็บไว้ (หน่วยมิลลิวินาทีที่ส่งคืน มิลลิวินาที ()) และเปรียบเทียบกับอันถัดไป

      เพื่อให้แน่ใจว่าค่าที่วัดได้ใหญ่ที่สุดในโซนจากมากไปหาน้อยของเส้นโค้งสูงสุด จึงมีการใช้ตัวแปร บูลีน (วัด_ชีพจร ในตัวอย่างนี้และ active_pulse_การวัด ในห้องสมุด) ซึ่งจะเปิดใช้งานเมื่อเข้าสู่โซนขึ้นของเส้นโค้งหลักและปิดใช้งานเมื่อพบค่าแรกจากมากไปน้อยซึ่งเป็นค่ากำหนดเวลา

      ตามปกติแล้วจะแสดงระยะเวลาของพัลส์เป็นจำนวนครั้งต่อนาที (ppm) ค่าของเวลาระหว่างพัลส์ที่ได้รับจะถูกแก้ไขโดยการคำนวณโดยการหารเวลารวมของการแสดง (หนึ่งนาที 60000 มิลลิวินาที) ด้วยช่วงเวลาที่ได้รับ ลบมิลลิวินาทีปัจจุบัน (ของค่าปัจจุบัน) ในช่วงเวลาก่อนหน้านี้

      Para evitar medidas falsas (como el dispositivo midiendo en vacío, por ejemplo) se verifica que el resultado se encuentra entre unos valores máximos y mínimos antes de darlo por cierto. Aunque se considera como media que un valor normal para un adulto sano en reposo se encuentra entre 60 y 100 ppm, hay valores admisibles por debajo, es fácil encontrar 40 ppm en un atleta en reposo, hasta 200 ppm sometido a un ejercicio intenso y más de 100 ppm en adultos sedentarios en estados de excitación, precisamente un factor interesante para el proyecto de gestión del sueño que me lleva a desarrollar este อุปกรณ์วัดชีพจร. ด้วยเหตุนี้จึงแนะนำให้ผ่อนคลายค่านิยมเหล่านี้ให้มากเพื่อไม่ให้ความสุดขั้วหายไปซึ่งสามารถแสดงแง่มุมที่เกี่ยวข้องได้อย่างแม่นยำ

      ค่าเฉลี่ยใหม่คำนวณโดยการลดความเกี่ยวข้องของค่าเฉลี่ยปัจจุบันตามจำนวนค่าที่สุ่มตัวอย่างและเพิ่มค่าสุดท้าย นอกจากนี้ ยังถ่วงน้ำหนักด้วยค่าสัมประสิทธิ์ที่ช่วยลดค่าที่วัดได้มากขึ้น .

    ในที่สุด โดยใช้อัลกอริธึมที่อธิบายไว้ก่อนหน้านี้ ฉันพัฒนาไลบรารีเพื่อคำนวณพัลส์โดยการตรวจจับการมีอยู่ของ เฮโมโกลบิน หรือ ออกซีเฮโมโกลบิน (ขึ้นอยู่กับความยาวคลื่นของแสงที่ใช้) จากโค้ดด้านล่างนี้

    ห้องสมุดคาดว่าฟังก์ชันการสุ่มตัวอย่างจะถูกเรียกเป็นระยะ monitor_pulse() เพื่อคำนวณชีพจรซึ่งสามารถปรึกษากับฟังก์ชันได้ สุดท้าย_ชีพจร() หรือด้วยฟังก์ชั่น Average_pulse() ชีพจรเฉลี่ย นอกเหนือจากการเป็นทรัพยากรที่จำกัดแล้ว ฉันยังตัดการใช้การหยุดชะงักเพราะฉันไม่ต้องการคุณค่าในทันที แต่ต้องการค่าที่คงอยู่ตลอดเวลาเพื่อตรวจสอบ ชีพจร ในโครงการจัดการการนอนหลับของฉัน

    . ไม่ว่าในกรณีใด จากการทดสอบที่ฉันทำไป ดูเหมือนจะไม่จำเป็น ไม่ว่าจะโดยอุปกรณ์หรือโดยพฤติกรรมของ ชีพจรการสุ่มตัวอย่างที่ความถี่หนึ่งจะให้ข้อมูลที่เพียงพอและไม่ได้อะไรมาก (ที่เกี่ยวข้อง) จากการเพิ่ม และไม่สามารถลดลงได้มากโดยไม่สูญเสียข้อมูลที่เกี่ยวข้องสำหรับการคำนวณ ในโค้ดเวอร์ชันแรกๆ เพื่อตรวจสอบการอ่านของ เครื่องวัดความอิ่มตัวของออกซิเจน ฉันค้นพบว่าไม่จำเป็นต้องยึดติดกับเวลาการวัดสูงสุด เนื่องจากหากพิจารณาความแปรผันของค่าที่ต่อเนื่องกันอย่างถูกต้อง ก็จะใกล้เคียงกับค่าต่ำสุดมาก

    โปรแกรมตัวอย่างต่อไปนี้แสดงวิธีการใช้ไลบรารีก่อนหน้าในการวัด ชีพจร ด้วย เครื่องวัดความอิ่มตัวของออกซิเจน. นอกจากจะยกตัวอย่างชั้นเรียนแล้ว Pulso การติดตามระดับของ ออกซีเฮโมโกลบิน/เฮโมโกลบิน และด้วยระยะเวลาที่น้อยลงมูลค่าของ ชีพจร คำนวณและเฉลี่ย

    เพื่อให้แน่ใจว่าการวัดมีความเกี่ยวข้อง มีการตั้งโปรแกรมรอก่อนที่จะแสดงค่าใดๆ เนื่องจากค่าอาจไม่ถูกต้อง (เช่น หากผู้ใช้ถอดอุปกรณ์ออก) ค่าต่างๆ จะแสดงเฉพาะเมื่ออยู่ในช่วงที่ถือว่าถูกต้องเท่านั้น

    แสดงความคิดเห็น

    คุณอาจจะพลาด

    ตัวเร่ง Seraphiniteเพิ่มประสิทธิภาพโดย Seraphinite Accelerator
    เปิดความเร็วสูงของไซต์ให้น่าสนใจสำหรับผู้คนและเครื่องมือค้นหา