วันจันทร์ที่ 24 กันยายน พ.ศ. 2555

HeartRate Monitor


HeartRate Monitor

  • PDF
heartrate-titleอีกความปรารถนาหนึ่งของนักสร้างโครงงานอิเล็กทรอนิกส์นั่นคือ การสร้างเครื่องมือวัดปริมาณทางการแพทย์ในแบบที่พอจะดูแนวโน้มว่า ร่างกายของเรามันน่าจะปกติหรือกำลังมีแนวโน้มว่าจะมีปัญหา ที่ทำกันได้ง่ายหน่อยก็คือ เทอร์โมมิเตอร์เพื่อนำมาวัดอุณหภูมิร่างกาย แต่ที่นำมาเสนอให้ลองสร้างกันนี้ มันเจ๋งกว่านั้นเยอะ เพราะนี่คือ เครื่องวัดอัตราการเต้นของหัวใจ (Heart rate monitor)


ตัวตรวจจับการเต้นของหัวใจ - เพราะมีสิ่งนี้จึงทำให้มีโครงงานนี้
โครงงานนี้จะเกิดขึ้นไม่ได้เลยหากไม่มีตัวตรวจจับพิเศษที่ทำหน้าที่ในการวัดอัตราการเต้นของหัวใจแล้วส่งค่าออกมาเป็นพัลส์ ในรูปที่ 1 แสดงหน้าตาของตัวตรวจจับอัตราการเต้นหัวใจที่ใช้ในโครงงานนี้ การวัดของตัวตรวจจับนี้จะเป็นการวัดทางอ้อมด้วยการหนีบหัววัดเข้าที่ใบหูหรือปลายนิ้ว ดังรูป
heartrate-uniconboard-001

heartrate-uniconboard-002

สัญญาณจากหัววัดจะส่งไปยังหน่วยประมวลผลสัญญาณที่อยู่ในกล่องพลาสติกเล็กๆ จนได้เป็นสัญญาณพัลส์ที่สัมพันธ์กับอัตราการเต้นของหัวใจส่งออกมายังไมโครคอนโทรลเลอร์ เพื่อประมวลประมวลและตีความ ก่อนแสดงค่าที่วัดได้ผ่านทางจอแสดงผลหรือคอมพิวเตอร์ต่อไป
การเชื่อมต่อและทดสอบ
รูปด้านล่างเป็นวงจรการเชื่อมต่อบอร์ดไมโครคอนโทรลเลอร์ Unicon ที่มีการติดตั้งบอร์ดแสดงผลกราฟิก LCD สีรุ่น GLCD-XT และชุดอุปกรณ์วัดอัตราการเต้นของหัวใจ ZX-HeartRate โดยวงจรและข้อมูลของบอร์ดแสดงผล GLCD-XT แสดงไว้ในกรอบแยกที่ 1
heartrate-uniconboard-003


heartrate-uniconboard-004

เกี่ยวกับซอฟต์แวร์ควบคุมการทำงาน
โปรแกรมควบคุมการทำงานแสดงในโปรแกรมที่ 1 แบ่งการทำงานออกเป็น 3 ส่วนหลักคือ

1. ฟังก์ชั่น bubbleSort ทำหน้าที่จัดเรียงข้อมูลของพัลส์ที่ได้มาจากตัวตรวจจับ แล้วทำการตัดค่าที่สูงสุดและต่ำสุดออก จากนั้นนำค่าที่เหลือมาเฉลี่ย เพื่อให้ได้ค่าของสัญญาณที่แน่นอนมากที่สุด
2. ฟังก์ชั่น setup เป็นการเตรียมการเกี่ยวกับการแสดงผลทั้งหมดของโครงงานที่จอแสดงผลกราฟิก LCD สีหรือ GLCD-XT ให้แสดงรูปและข้อความที่ต้องการ
3. ฟังก์ชั่น loop เป็นส่วนของโปรแกรมหลักที่ทำการอ่านค่าจากตัวตรวจจับ ซึ่งเป็นสัญญาณพัลส์ นับค่านำวนพัลส์ที่ได้ภายในเวลาหนึ่งนาที จากนั้นทำการเรียกฟังก์ชั่น bubbleSort เพื่อจัดการให้ค่าอัตราการเต้นของหัวใจมาแสดงผลที่จอแสดงผลกราฟิก LCD สีต่อไป

กรอบแยกที่ 1
heartrate-uniconboard-006
คุณสมบัติที่สำคัญ
• โมดูลแสดงผลแบบกราฟิกสี ความละเอียด 128 x 160 จุด
• แสดงภาพกราฟิกลายเส้นและพื้นสี ไม่รองรับไฟล์รูปภาพใดๆ
• มีไฟส่องหลัง
• แสดงผลเป็นตัวอักษรขนาดปกติ (5x7 จุด) ได้ 21 ตัวอักษร 16 บรรทัด
• มีสวิตช์กดติดปล่อยดับพร้อมใช้งาน (สวิตช์ OK) 1 จุด โดยต่อร่วมกับตัวต้านทานปรับค่าได้  (KNOB) ซึ่งเชื่อมต่อไปยังขาพอร์ต 8 ของบอร์ด Unicon ทำให้อ่านค่าสัญญาณดิจิตอลและอะนาลอกได้ในขาพอร์ตเดียวกัน


กรอบแยกที่ 2 การดัดแปลงสายสัญญาณของตัวตรวจวัดอัตราการเต้นของหัวใจ
สำหรับผู้ที่จัดซื้อ ZX-HeartRate ชุดอุปกรณ์ตรวจวัดอัตราการเต้นของหัวใจจาก TPE shop หรือ INEX จะสามารถใช้งานกับบอร์ด Unicon ได้ทันที แต่ถ้าหากซื้อมาจาก ThaiEasyElec พันธมิตรของ TPE จะต้องมีขั้นตอนการดัดแปลงสายสัญญาณเล็กน้อย

เตรียมของ
สิ่งที่ต้องใช้ประกอบด้วย หัวแร้งบัดกรี, ตะกั่ว, ไขควงปากแบน, คอนเน็กเตอร์ JST 2 มม. 3 ขาตัวผู้แบบลงแผ่นวงจรพิมพ์, คีมปากแหลมหรือแหนบ และสาย JST3AA-8
ขั้นตอนการดัดแปลง
(1) ใช้ไขควงปากแบนค่อยๆ งัดฝากล่องของชุดประมวลผลสัญญาณออก
heartrate-uniconboard-008

(2) รื้อกาวยางที่ใช้ยึดแผงวงจรออกทั้งหมด
(3) ใชัหัวแร้งปลดสายสัญญาณเดิมออก
(4) บัดกรีคอนเน็กเตอร์ JST 2 มม. 3 ขาตัวผู้แบบลงแผ่นวงจรพิมพ์เข้าไปแทนที่
(5) ใช้กาวสองหน้ายึดแผงวงจรประมวลผลเข้ากับพื้นกล่องด้านใน

(6) นำสาย JST3AA-8 มาสลับสายต่อตามรูป
heartrate-uniconboard-009

(7) เสียบสาย JST3AA-8 ที่สลับสายแล้วเข้ากับคอนเน็กเตอร์ JST 2 มม. 3 ขาตัวผู้ที่เปลี่ยนใหม่จากขั้นตอนที่ (4) อาจใช้กาวตราช้างหยดลงไปเล็กน้อยเพื่อช่วยให้การเชื่อมต่อแน่นหนามากขึ้น
heartrate-uniconboard-010

(8) ค่อยๆ นำสายสอดผ่านร่องข้างกล่องออกมา หยดกาวยางที่ร่องสาย เพื่อให้สายสัญญาณติดกับกล่อง ไม่ขาดง่ายเวลาบิดสายไปมา แล้วปิดฝากล่องอย่างเดิม
เพียงเท่านี้ก็จะได้ชุดอุปกรณ์ตรวจวัดอัตราการเต้นของหัวใจที่พร้อมใช้งานกับบอร์ด Unicon แล้ว

-------------------------------- รายการอุปกรณ์ ----------------------------------
• ZX-HeartRate ชุดอุปกรณ์ตรวจวัดอัตราการเต้นของหัวใจ
• บอร์ด Unicon ที่ติดตั้งบอร์ดแสดงผลรุ่น GLCD-XT แล้ว

รู้จัก Unicon Board

บอร์ดไมโครคอนโทรลเลอร์ 8 บิตที่ดาวน์โหลดและสื่อสารกับคอมพิวเตอร์ผ่านพอร์ต USB ได้โดยตรง ไม่ต้องใช้ชิปแปลงสัญญาณใดๆ เพิ่มเติม และทำงานเข้ากันได้กับ Arduino โครงการไมโครคอนโทรลเลอร์โอเพ่นซอร์สยอดนิยม  




ทันทีที่ Atmel ได้ออกชิปไมโครคอนโทรลเลอร์ AVR 8 บิต ในอนุกรม ATmega ตัวใหม่ที่มี โมดูล USB ในตัว ซึ่งไม่เพียงแต่สื่อสารกับคอมพิวเตอร์ผ่านพอร์ต USB เพื่อแปลงกายเป็นอุปกรณ์ USB เท่านั้น มันยังรองรับการดาวน์โหลดโปรแกรมเพื่อเขียนลงในหน่วยความจำโปรแกรมของตัวชิปได้อีกด้วย นั่นจึงทำให้เกิดการเปลี่ยนแปลงครั้งสำคัญในการพัฒนาระบบสมองกลฝังตัว เมื่อมีไมโครคอนโทรลเลอร์ที่โปรแกรมได้โดยตรงผ่านพอร์ต USB ไม่ต้องใช้ชิปแปลงสัญญาณ USB เป็นพอร์ตอนุกรมแบบที่คุ้นเคย ทำให้ลดความยุ่งยากในการออกแบบฮาร์ดแวร์ จำนวนอุปกรณ์ที่ใช้ก็ลดลง ส่งผลถึงต้นทุนของระบบที่ลดลงไปด้วย


ATmega32U4 ไมโครฯ 8 บิตที่มาพร้อม USB บูตโหลดเดอร์ในตัว
ถ้าจะว่ากันด้วยข้อเท็จจริง Atmel ไม่ได้ออกชิปไมโครคอนโทรลเลอร์ที่โปรแกรมผ่านทางพอร์ต USB ได้โดยตรงเป็นเจ้าแรก ก่อนหน้านี้มี Freescale ที่ออกชิปในอนุกรม HCS08 เบอร์ MC9S08JS16 มาให้ลองใช้งานกัน แต่ทว่าเบอร์ที่ออกมานั้นไม่มีโมดูลแปลงสัญญาณอะนาลอกเป็นดิจิตอล (ADC) ทำให้ไม่ได้รับการตอบรับมากนักจากนักทดลอง นักพัฒนาระบบสมองกลฝังตัวทั้งมือสมัครเล่นและมือเก๋าที่เชื่อว่า ADC เป็นความสามารถที่ไมโครคอนโทรลเลอร์สมัยใหม่ต้องมี
Atmel ผลิตไมโครคอนโทรลเลอร์ที่รองรับการโปรแกรมหน่วยความจำ
โปรแกรมแฟลชมาก่อนหน้านี้อย่างน้อย 2 เบอร์คือ ATmega8U2 และ ATmega16U2 แต่ทั้งสองเบอร์ล้วนไม่มีโมดูลแปลงสัญญาณอะนาลอก
เป็นดิจิตอล จึงเป็นได้เพียงชิปที่ออกมาเพื่อนำไปใช้ในอุปกรณ์ USB ที่เน้นการทำงานกับสัญญาณดิจิตอลเป็นหลัก
จนกระทั่ง Atmel ออกชิปเบอร์ ATmega32U4 ที่มีโมดูลแปลงสัญญาณอะนาลอกเป็นดิจิตอล ความละอียด 10 บิตในตัว และออกมาคราวนี้มีอินพุตอะนาลอกมากถึง 12 ช่องเลยทีเดียว ทำให้เริ่มมีกระแสตอบรับจากนักพัฒนาในทุกระดับ รวมไปถึงกลุ่มของไมโครคอนโทรลเลอร์โอเพ่นซอร์สชื่อดังอย่าง Arduino มีความพยายามในการนำชิปเบอร์นี้เข้ามาพัฒนาเป็นฮาร์ดแวร์ในอนุกรมใหม่ของ Arduino โดยเน้นข้อได้เปรียบตรงที่มี USB บูตโหลดเดอร์ในตัว ทำให้การดาวน์โหลดโปรแกรมจากคอมพิวเตอร์ผ่านพอร์ต USB กระทำได้อย่างสะดวกขึ้น ออกแบบฮาร์ดแวร์ได้ง่ายขึ้น ใช้จำนวนอุปกรณ์ต่อร่วมลดลง

คุณสมบัติของ ATmega32U4
• เป็นไมโครคอนโทรลเลอร์ 8 บิตแบบ RISC กำลังงานต่ำ
• หน่วยความจำโปรแกรมแฟลช 32 กิโลไบต์ รองรับการโปรแกรมในวงจร เขียน-ลบได้ 10,000 รอบ
• หน่วยความจำข้อมูลแรม 2.5 กิโลไบต์
• หน่วยความข้อมูลอีอีพรอม 1 กิโลไบต์ เขียนลบได้ 100,000 รอบ
• ทั้งหน่วยความจำโปรแกรมและอีอีพรอมเก็บรักษาข้อมูลได้ 20 ปี
• บรรจุ USB บูตโหลดเดอร์มาจากผู้ผลิต จึงโปรแกรมหน่วยความจำผ่านพอร์ต USB ได้โดยไม่ต้องใช้เครื่องโปรแกรมภายนอก
• รองรับการโปรแกรมจากภายนอกทั้งแบบ SPI และ JTAG
• พอร์ตอินพุตเอาต์พุตแบบโปรแกรมได้รวม 26 ขา และตอบสนองการอินเตอร์รัปต์จากการเปลี่ยนแปลงลอจิกที่ขาพอร์ต
• วงจรเชื่อมต่อพอร์ต USB ภายในชิป รองรับ USB2.0 ทั้งแบบความเร็วเต็มที่ (full speed) และแบบความเร็วต่ำ (low speed)
• ความถี่สัญญาณนาฬิกาจากภายนอกสูงสุด 16MHz มีวงจรเฟสล็อกลูปเพื่อทวีคูณความถี่ให้ทำงานได้สูงสุดถึง 96MHz
• เลือกแหล่งกำเนิดสัญญาณนาฬิกาได้ทั้งจากภายในและภายนอก โดยความถี่สูงสุดของวงจรกำเนิดสัญญาณนาฬิกาภายในแบบ RC คือ 8MHz การเปลี่ยนโหมดหรือแหล่งกำเนิดสัญญาณนาฬิกาทำได้ตลอดเวลาโดยไม่ต้องงรีเซตหรือจ่ายไฟเลี้ยงใหม่
• มีไทเมอร์เคาน์เตอร์ 4 ตัว ประกอบด้วย
- ไทเมอร์เคาน์เตอร์ 8 บิต
- ไทเมอร์เคาน์เตอร์ 16 บิต 2 ตัว รองรับการทำงานในโหมดตรวจจับสัญญาณ (แคปเจอร์ - capture) และโหมดเปรียบเทียบสัญญาณ
-ไทเมอร์เคาน์เตอร์ความเร็วสูง 10 บิต มีวงจรเฟสล็อกลูปความถี่ 64MHz และทำงานในโหมดเปรียบเทียบสัญญาณได้
• มีโมดูลกำเนิดสัญญาณ PWM 3 ชุด
- PWM ขนาด 8 บิต 4 ช่อง
- PWM แบบโปรแกรมความละเอียดของสัญญาณได้ 2 ถึง 16 บิต 4 ช่อง
- PWM ความเร็วสูงแบบโปรแกรมความละเอียดของสัญญาณได้ 2 ถึง 11 บิต 6 ช่อง
• มีเอาต์พุตของวงจรเปรียบเทียบสัญญาณ (output compare)
• โมดูลแปลงสัญญาณอะนาลอกเป็นดิจิตอล ความละเอียด 10 บิต  12 ช่อง
• โมดูลสื่อสารข้อมูลอนุกรม USART แบบโปรแกรมได้พร้อมส่วนควบคุมการถ่ายทอดข้อมูล
• โมดูลสื่อสารข้อมูลผ่านบัส SPI และ I2C
•  มีวงจรตรวจจับไฟเลี้ยงต่ำกว่าที่กำหนดหรือบราวเอาต์แบบโปรแกรมได้
• มีโหมดการทำงานเพื่อลดการใช้พลังงานหรือโหมดสลีปเลือกได้ 6 โหมด
• ใช้ไฟเลี้ยงในย่าน +2.7 ถึง +5.5V หากเลือกใช้สัญญาณนาฬิกาหลักความถี่ 8MHz จากภายในชิปใช้ไฟเลี้ยงได้ไม่เกิน +2.7V
• อุณหภูมิใช้งาน  -40 ถึง +85°C
• มีตัวถังแบบ QFN และ TQFP 44 ขา ให้เลือกใช้งาน

Arduino Leonardo + ATmega32U4 = บอร์ด Unicon
เมื่อ Atmel ออกชิปไมโครคอนโทรลเลอร์ ATmega32U4 และได้เข้าไปทำข้อตกลงในการสนับสนุนคณะทำงานของ Arduino อย่างเป็นทางการ จึงทำให้เกิดฮาร์ดแวร์ของ Arduino ในรุ่นใหม่ที่รองรับ ATmega32U4 นั่นคือ Arduino Leonardo ได้มีการเผยแพร่โค้ดบูตโหลดเดอร์ของ Arduino Leonardo ออกมาระยะหนึ่งแล้ว แต่จำกัดอยู่ในวงนักพัฒนาเท่านั้น วิศวกรของ INEX (บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด) โดยคุณวรพจน์ กรแก้ววัฒนกุลจึงนำมาพัฒนาต่อ โดยทำการออกแบบส่วนของฮาร์ดแวร์และกำหนดตำแหน่งขาต่อใช้งานของ ATmega32U4 ให้สอดคล้องกับ Arduino Leonardo พร้อมกับแก้ไขโค้ดของบูตโหลดเดอร์ เพื่อสร้างเป็นฮาร์ดแวร์ใหม่ที่ชื่อ Unicon พร้อมกันนั้นได้ทำการเพิ่มเติมชื่อและโปรไฟล์ของฮาร์ดแวร์ที่สร้างขึ้นใหม่นี้ลงใน Arduino IDE เวอร์ชัน 1.0 รวมถึงสร้างไฟล์ติดตั้งที่มีการติดตั้งซอฟต์แวร์ ARduino 1.0 และไดรเวอร์ USB เบื้องต้นของบอร์ด Unicon เพื่อให้ผู้ใช้งานสามารถติดตั้งและใช้งานบลอร์ด Unicon ได้ง่ายขึ้น
ดังนั้นบอร์ด Unicon จึงเป็นฮาร์ดแวร์ที่เข้ากันได้กับ Arduino Leonardo รุ่นแรกที่พัฒนาโดยวิศวกรชาวไทย Unicon มาจากคำว่า Unique ที่แปลว่า เป็นหนึ่งเดียว กับคำว่า Controller ที่แปลว่าตัวควบคุม ดังนั้น Unicon จึงมีความหมายโดยรวมว่า บอร์ดควบคุมที่มีความเป็นหนึ่งเดียวกันระหว่างตัวไมโครคอนโทรลเลอร์หลักและส่วนการติดต่อเพื่อดาวน์โหลดโปรแกรมผ่านพอร์ต USB

คุณสมบัติทางเทคนิคที่สำคัญของบอร์ด Unicon

• ใช้ไมโครคอนโทรลเลอร์ ATmega32U4 จาก Atmel มีหน่วยความจำแฟลช 32 กิโลไบต์ บรรจุบูตโหลดเดอร์ที่เข้ากันได้กับฮาร์ดแวร์ Arduino Leonardo
• ดาวน์โหลดและสื่อสารข้อมูลผ่านพอร์ต USB ได้โดยตรง โดยไม่ต้องใช้ชิปแปลงสัญญาณอย่าง FT232 หรือ MCP2200 แต่อย่างใด
• สัญญาณนาฬิกาความถี่ 16MHz จากเซรามิกเรโซเนเตอร์คุณภาพสูง
• มีจุดต่อพอร์ตสำหรับใช้งานที่ตรงกับชื่อขาพอร์ตของ Arduino Leonardo
• จุดต่อพอร์ตเป็นแบบ IDC 2.5 มม. ตัวเมีย และ JST 2.0 มม. ตัวผู้ 3 ขา มีการแบ่งแยกฟังก์ชั่นด้วยสีของคอนเน็กเตอร์อย่างชัดเจน
• ใช้ไฟเลี้ยงจากภายนอก +6 ถึง +12V บนบอร์ดมีวงจรควบคุมไฟเลี้ยงคงที่ +5V 1A ต่อผ่านแจ๊กอะแดปเตอร์และเทอร์มินอลบล็อก
• มีสวิตช์กดติดปล่อยดับและ LED สำหรับทดสอบการทำงานของพอร์ตและแสดงสถานะการทำงาน
• มีสวิตช์ RESET
• รองรับบอร์ดแสดงผลกราฟิก LCD สี (รุ่น GLCD-XT จำหน่ายแยก)
• ขนาดเพียง 2.5 x 4 นิ้ว
• พัฒนาโปรแกรมด้วย Arduino 1.0
• ข้อมูลเพิ่มเติมและดาวน์โหลดซอฟต์แวร์สำหรับการพัฒนาโปรแกรม ตัวอย่างโปรแกรม พร้อมทั้งเอกสารต่างๆ ได้ที่ www.uniconboard.com
หน้าตาของบอร์ด Unicon แสดงในรูปพร้อมกับแสดงจุดต่อต่างๆ จะเห็นได้ว่า บอร์ด Unicon สามารถรองรับการเชื่อมต่อกับอุปกรณ์ภายนอกได้หลากหลายและค่อนข้างอเนกประสงค์ ไม่ว่าจะต่อทดลองวงจรกับเบรดบอร์ดก็สามารถใช้จุดต่อแบบ IDC ตัวเมีย 2.54 มม. หรือจะต่อกับแผงวงจรตรวจจับและแผงวงจรเอาต์พุตของ INEX ที่ใช้คอนเน็กเตอร์แบบ JST 2.0 มม. ก็ได้

unicon-detail


ความเข้ากันได้กับ Arduino เวอร์ชันอื่นๆ
บอร์ด Unicon สามารถใช้งานกับโปรแกรมที่เขียนขึ้นและอ้างอิงกับฮาร์ดแวร์ Arduino ได้ทุกเวอร์ชันยกเว้น Arduino Mega ที่อาจมีตำแหน่งและจำนวนของขาพอร์ตไม่ตรงและไม่เท่ากัน แต่รูปแบบของคำสั่ง วิธีการใช้คำสั่งและฟังก์ชั่นในโปรแกรมใช้ร่วมกันได้ เพียงเปลี่ยนขาพอร์ตที่อ้างอิงให้ตรงหรือเหมาะสมกับบอร์ด Unicon ก็ใช้งานได้ตามปกติ
ยกตัวอย่าง โปรแกรม Blink ปกติจะอ้างถึง LED ที่ขา 13 สำหรับบอร์ด Unicon จะอยู่ที่ขา 31 ส่วนการใช้งาน Serial Monitor เพื่อดูหรือรับส่งค่ากับคอมพิวเตอร์ก็สามารถใช้งานได้ตามปกติด้วยคำสั่ง serial.print เพียงแต่พอร์ตที่ใช้สื่อสารจะเป็นพอร์ต USB ที่ทำหน้าที่เป็นพอร์ตอนุกรมเสมือนภายใต้ชื่อของฮาร์ดแวร์ Unicon
นอกจากนั้น Unicon ยังมีจุดต่ออินพุตอะนาลอกมากกว่า Arduino Diecimila, Duemilanove และ Uno โดยมีถึง 12 ขา และมีจุดต่อบัส I2C และ UART ที่แยกต่างหากจากพอร์ตอินพุตเอาต์พุตปกติ แต่ยังสามารถใช้งานเป็นพอร์ตอินพุตเอาต์พุตมาตรฐานได้ ทำให้ Unicon มีความอ่อนตัวสูงมากในการนำไปใช้งานภายใต้งบประมาณที่ประหยัดและคุ้มค่ากว่าเมื่อพิจารณาในภาพรวม

สั่งซื้อออนไลน์ได้ที่ www.inex.co.th