- Komponen yang Diperlukan
- Sensor Denyut SEN-11574
- Diagram Sirkuit untuk Sensor Pulsa yang berinteraksi dengan Mikrokontroler PIC
- PIC16F877A Penjelasan Kode untuk Monitor Detak Jantung
Denyut jantung adalah parameter terpenting dalam memantau kesehatan seseorang. Di era modern perangkat wearable, ada banyak perangkat yang dapat mengukur detak jantung, tekanan darah, langkah kaki, kalori yang terbakar, dan banyak hal lainnya. Perangkat ini memiliki sensor denyut di dalamnya untuk merasakan denyut nadi. Hari ini, kita juga akan menggunakan sensor pulsa dengan Mikrokontroler PIC untuk menghitung detak jantung per menit dan Inter-Beat Interval, nilai-nilai ini selanjutnya akan ditampilkan pada LCD karakter 16x2. Kami akan menggunakan mikrokontroler PIC16F877A PIC dalam proyek ini. Kami sudah menghubungkan sensor pulsa dengan Arduino untuk Sistem Pemantauan Pasien.
Komponen yang Diperlukan
- Mikrokontroler PIC16F877A
- Kristal 20 Mhz
- 33pF kapasitor 2 pcs
- Resistor 4.7k 1 buah
- LCD Karakter 16x2
- Pot 10K untuk kontrol kontras LCD
- SEN-11574 Sensor pulsa
- Tali velcro
- Adaptor daya 5V
- Breadboard dan kabel hookup
Sensor Denyut SEN-11574
Untuk mengukur detak jantung kita membutuhkan sensor denyut. Di sini kami telah memilih sensor pulsa SEN-11574 yang dengan mudah tersedia di toko online atau offline. Kami menggunakan sensor ini karena ada kode sampel yang disediakan dari pabrikan, tetapi itu adalah kode Arduino. Kami mengubah kode itu untuk mikrokontroler PIC kami.
Sensornya sangat kecil dan sempurna untuk membaca detak jantung di seluruh daun telinga atau di ujung jari. Diameternya 0,625 ”dan tebal 0,125” dari sisi PCB bundar.
Sensor ini memberikan sinyal analog dan sensor dapat digerakkan dengan 3V atau 5V, konsumsi sensor saat ini adalah 4 mA, yang sangat bagus untuk aplikasi seluler. Sensor dilengkapi dengan tiga kabel dengan kabel hookup sepanjang 24 ”dan header berg male di ujungnya. Selain itu, sensor ini dilengkapi dengan Velcro Finger Strap untuk dikenakan di ujung jari.
Skema Pulse Sensor juga disediakan oleh pabrikan dan juga tersedia di sparkfun.com.
Skema sensor terdiri dari sensor detak jantung optik, rangkaian RC atau filter noise cancellation, yang dapat dilihat pada diagram skema. R2, C2, C1, C3 dan penguat operasional MCP6001 digunakan untuk keluaran analog diperkuat yang andal.
Ada beberapa sensor lain untuk Pemantauan Detak Jantung tetapi sensor denyut SEN-11574 banyak digunakan dalam proyek Elektronika.
Diagram Sirkuit untuk Sensor Pulsa yang berinteraksi dengan Mikrokontroler PIC
Di sini kita telah menghubungkan sensor pulsa di 2 nd pin dari mikrokontroler satuan. Karena sensor menyediakan data analog, kita perlu mengubah data analog menjadi sinyal digital dengan melakukan perhitungan yang diperlukan.
The Kristal osilator dari 20Mhz terhubung di dua pin OSC dari unit mikrokontroler dengan dua kapasitor 33pF keramik. The LCD yang terhubung di port RB dari mikrokontroler.
PIC16F877A Penjelasan Kode untuk Monitor Detak Jantung
Kode ini sedikit rumit untuk pemula. Pabrikan menyediakan kode sampel untuk sensor SEN-11574, tetapi itu ditulis untuk platform Arduino. Kita perlu mengubah kalkulasi untuk microchip kita, PIC16F877A. Kode lengkap diberikan di akhir proyek ini dengan Video Demonstrasi. Dan file C pendukung dapat didownload dari sini.
Alur kode kami relatif sederhana dan kami membuat langkah-langkah menggunakan kasus sakelar . Sesuai pabrikan, kami perlu mendapatkan data dari sensor setiap 2 milidetik. Jadi, kami menggunakan rutinitas layanan interupsi timer yang akan mengaktifkan fungsi setiap 2 milidetik.
Alur kode kami dalam pernyataan sakelar akan berjalan seperti ini:
Kasus 1: Baca ADC
Kasus 2: Hitung Detak Jantung dan IBI
Kasus 3: Tunjukkan detak jantung dan IBI pada LCD
Kasus 4: IDLE (Tidak melakukan apa-apa)
Di dalam fungsi penghitung waktu, kami mengubah status program ke Kasus 1: Baca ADC setiap 2 milidetik.
Jadi, dalam fungsi utama , kami mendefinisikan status program dan semua kasus sakelar .
void main () { system_init (); main_state = READ_ADC; while (1) { switch (main_state) { case READ_ADC: { adc_value = ADC_Read (0); // 0 adalah nomor saluran main_state = CALCULATE_HEART_BEAT; istirahat; } kasus CALCULATE_HEART_BEAT: { count_heart_beat (adc_value); main_state = SHOW_HEART_BEAT; istirahat; } case SHOW_HEART_BEAT: { if (QS == true) {// A Heartbeat was Found // BPM dan IBI telah ditentukan // Quantified Self "QS" true saat Arduino menemukan detak jantung QS = false; // setel ulang bendera Kuantifikasi Diri untuk lain waktu // 0,9 digunakan untuk mendapatkan data yang lebih baik. sebenarnya sebaiknya tidak 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); } } keadaan_lain = IDLE; istirahat; kasus IDLE: { break; } bawaan: { } } } }
Kami menggunakan dua periferal perangkat keras PIC16F877A: Timer0 dan ADC.
Di dalam file timer0.c, TMR0 = (uint8_t) (tmr0_mask & (256 - (((2 * _XTAL_FREQ) / (256 * 4)) / 1000)));
Perhitungan ini memberikan interupsi pengatur waktu 2 milidetik. Rumus perhitungannya adalah
// TimerCountMax - (((delay (ms) * Focs (hz)) / (PreScale_Val * 4)) / 1000)
Jika kita melihat fungsi timer_isr , itu-
batal timer_isr () { main_state = READ_ADC; }
Dalam fungsi ini status program diubah menjadi READ_ADC setiap 2 md.
Kemudian fungsi CALCULATE_HEART_BEAT diambil dari kode contoh Arduino.
batal kalkulasi_heart_beat (int adc_value) { Signal = adc_value; sampleCounter + = 2; // lacak waktu di mS dengan variabel ini int N = sampleCounter - lastBeatTime; // pantau waktu sejak ketukan terakhir untuk menghindari derau // temukan puncak dan palung gelombang nadi jika (Signal <thresh && N> (IBI / 5) * 3) {// hindari derau dikrotik dengan menunggu 3/5 dari IBI terakhir jika (Sinyal <T) {// T adalah palung T = Sinyal; // melacak titik terendah dalam gelombang nadi } } …………. ………………………..
Selanjutnya, kode lengkap diberikan di bawah ini dan dijelaskan dengan baik oleh komentar. Data sensor detak jantung ini selanjutnya dapat diunggah ke cloud dan dipantau melalui internet dari mana saja, sehingga menjadikannya sistem Pemantauan Detak Jantung berbasis IoT, ikuti tautan untuk mempelajari lebih lanjut.
Unduh file C Pendukung untuk Proyek Sensor Pulsa PIC ini dari sini.