- Komponen yang Diperlukan
- Sensor Pulse SEN-11574
- Litar Diagram untuk Sensor Pulse yang bersambung dengan PIC Microcontroller
- Penjelasan Kod PIC16F877A untuk Monitor Denyutan Jantung
Kadar degupan jantung adalah parameter terpenting dalam memantau kesihatan seseorang. Di era moden peranti yang boleh dipakai, terdapat banyak alat yang dapat mengukur degupan jantung, tekanan darah, langkah kaki, kalori yang dibakar dan banyak perkara lain. Peranti ini mempunyai sensor nadi di dalamnya untuk merasakan kadar nadi. Hari ini, kami juga akan menggunakan sensor denyut nadi dengan PIC Microcontroller untuk mengira degupan jantung seminit dan Inter-Beat Interval, nilai-nilai ini akan dipaparkan lebih lanjut pada LCD 16x2 watak. Kami akan menggunakan mikrokontroler PIC16F877A PIC dalam projek ini. Kami sudah menghubungkan sensor nadi dengan Arduino untuk Sistem Pemantauan Pesakit.
Komponen yang Diperlukan
- Pengawal mikro PIC16F877A
- 20 Mhz Kristal
- Kapasitor 33pF 2 pcs
- Perintang 4.7k 1 pcs
- LCD Aksara 16x2
- Periuk 10K untuk kawalan kontras LCD
- Sensor nadi SEN-11574
- Tali Velcro
- Penyesuai kuasa 5V
- Papan roti dan wayar penyambung
Sensor Pulse SEN-11574
Untuk mengukur degup jantung kita memerlukan sensor nadi. Di sini kami telah memilih sensor nadi SEN-11574 yang mudah didapati di kedai dalam talian atau luar talian. Kami menggunakan sensor ini kerana terdapat kod contoh yang diberikan oleh pengeluar, tetapi itu adalah kod Arduino. Kami menukar kod itu untuk mikrokontroler PIC kami.
Sensornya sangat kecil dan sesuai untuk membaca degupan jantung di cuping telinga atau di hujung jari. Dengan diameter 0,625 "dan tebal 0,125" dari sisi PCB bulat.
Sensor ini memberikan isyarat analog dan sensor dapat didorong dengan 3V atau 5V, penggunaan semasa sensor adalah 4 mA, yang bagus untuk aplikasi mudah alih. Sensor dilengkapi dengan tiga wayar dengan kabel penyambung panjang 24 inci dan kepala lelaki berg di hujungnya. Sensor ini juga dilengkapi dengan Velcro Finger Strap untuk memakainya di hujung jari.
Skema Pulse Sensor juga disediakan oleh pengeluar dan juga terdapat di sparkfun.com.
Skema sensor terdiri daripada sensor denyut jantung optik, litar RC pembatalan kebisingan atau penapis, yang dapat dilihat dalam rajah skematik. R2, C2, C1, C3 dan penguat operasi MCP6001 digunakan untuk output analog terkuat yang boleh dipercayai.
Terdapat beberapa sensor lain untuk Pemantauan Denyut Jantung tetapi sensor nadi SEN-11574 banyak digunakan dalam projek Elektronik.
Litar Diagram untuk Sensor Pulse yang bersambung dengan PIC Microcontroller
Di sini kita telah menyambungkan sensor pulse merentasi 2 nd pin mikropengawal unit. Oleh kerana sensor menyediakan data analog, kita perlu menukar data analog menjadi isyarat digital dengan melakukan pengiraan yang diperlukan.
The Crystal pengayun 20Mhz disambungkan di dua pin OSC unit pengawal mikro dengan dua kapasitor 33pF seramik. The LCD disambungkan seluruh pelabuhan RB mikropengawal.
Penjelasan Kod PIC16F877A untuk Monitor Denyutan Jantung
Kodnya agak rumit untuk pemula. Pengilang memberikan contoh kod untuk sensor SEN-11574, tetapi ia ditulis untuk platform Arduino. Kita perlu menukar pengiraan untuk microchip kita, PIC16F877A. Kod lengkap diberikan pada akhir projek ini dengan Video Demonstrasi. Dan fail C yang menyokong boleh dimuat turun dari sini.
Aliran kod kami agak mudah dan kami membuat langkah menggunakan kotak suis . Mengikut pengeluar, kita perlu mendapatkan data dari sensor dalam setiap 2 milisaat. Oleh itu, kami menggunakan rutin perkhidmatan mengganggu pemasa yang akan mengaktifkan fungsi dalam setiap 2 milisaat.
Aliran kod kami dalam penyataan suis akan seperti ini:
Kes 1: Baca ADC
Kes 2: Kira Denyutan Jantung dan IBI
Kes 3: Tunjukkan degupan jantung dan IBI pada LCD
Kes 4: IDLE (Jangan buat apa-apa)
Di dalam fungsi gangguan pemasa, kita mengubah keadaan program ke Kes 1: Baca ADC setiap 2 milisaat.
Jadi, dalam fungsi utama , kami menentukan keadaan program dan semua kes beralih .
kekosongan utama () { system_init (); main_state = READ_ADC; sementara (1) { switch (main_state) { case READ_ADC: { adc_value = ADC_Read (0); // 0 adalah nombor saluran main_state = CALCULATE_HEART_BEAT; rehat; } kes CALCULATE_HEART_BEAT: { calcul_heart_beat (adc_value); main_state = SHOW_HEART_BEAT; rehat; } kes SHOW_HEART_BEAT: { if (QS == true) {// Denyutan Jantung Ditemui // BPM dan IBI telah Ditentukan // Diri yang Dikuantifikasikan "QS" benar apabila Arduino mendapati degupan jantung QS = false; // tetapkan semula bendera Diri yang Dikuantifikasi untuk lain kali // 0.9 digunakan untuk mendapatkan data yang lebih baik. sebenarnya tidak boleh digunakan BPM = BPM * 0.9; IBI = IBI / 0.9; lcd_com (0x80); lcd_puts ("BPM: -"); lcd_print_number (BPM); lcd_com (0xC0); lcd_puts ("IBI: -"); lcd_print_number (IBI); } } main_state = IDLE; rehat; kes IDLE: { rehat; } lalai: { } } } }
Kami menggunakan dua peralatan perkakasan PIC16F877A: Timer0 dan ADC.
Di dalam fail timer0.c, TMR0 = (uint8_t) (tmr0_mask & (256 - (((2 * _XTAL_FREQ) / (256 * 4)) / 1000)));
Pengiraan ini memberikan gangguan pemasa 2 milisaat. Formula pengiraannya adalah
// TimerCountMax - (((delay (ms) * Focs (hz)) / (PreScale_Val * 4)) / 1000)
Sekiranya kita melihat fungsi timer_isr , itu-
void timer_isr () { main_state = READ_ADC; }
Dalam fungsi ini keadaan program diubah menjadi READ_ADC dalam setiap 2ms.
Kemudian fungsi CALCULATE_HEART_BEAT diambil dari kod contoh Arduino.
batal hitung_heart_beat (int adc_value) { Signal = adc_value; sampleCounter + = 2; // menjejaki masa dalam mS dengan pemboleh ubah ini int N = sampleCounter - lastBeatTime; // pantau waktu sejak rentak terakhir untuk mengelakkan bunyi bising // cari puncak dan palung gelombang nadi jika (Isyarat <ambang && N> (IBI / 5) * 3) {// elakkan bunyi dikritik dengan menunggu 3/5 IBI terakhir sekiranya (Isyarat <T) {// T adalah palung T = Isyarat; // jejaki titik terendah dalam gelombang nadi } } …………. ………………………..
Selanjutnya, kod lengkap diberikan di bawah dan dijelaskan dengan baik oleh komen. Data sensor denyutan jantung ini dapat dimuat naik ke awan lebih jauh dan dipantau melalui internet dari mana saja, yang menjadikannya sistem Pemantauan Jantung Jantung berasaskan IoT, ikuti pautan untuk mengetahui lebih lanjut.
Muat turun fail C Penyokong untuk Projek PIC Pulse Sensor ini dari sini.