Pada kesempatan yang berbahagia kali ini saya akan mencoba menjelaskan mengenai bagaimana cara membuat alat untuk mengukur detak jantung atau heart beat, selain heart beat juga mengukur suhu menggunakan sensor suhu DS18B20, kegunaan alat ini yaitu bisa digunakan untuk mengukur detak jantung manusia dan juga suhu tubuh manusia, dari pada LM35 sensor DS18B20 ini lebih bagus karena tingkat sensitifitasnya tinggi, memang sensor ini lebih mahal dibanding LM35 tapi harga menunjukkan performa, maka dari itu lebih baik untuk masalah suhu serahkan pada sensor ini, prinsip kerja heartbeat yang digunakan yaitu menghitung titik puncak atau tegangan puncak, saat tegangan puncak terjadi akan mulai dihitung selama lima detik, setelah lima detik maka diasumsikan sinyal akan sama terus untuk lima detik setelahnya, maka dari itu dikalikan X agar menjadi satu menit. Agar bagus alat ini dilengkapi Buzzer yang berada di PortB.0, untuk lebih jelasnya berikut adalah skema dan programnya.
a. Minimum System
b. Sensor Heart Beat / Pulse Sensor
* NOTE : Hubungkan kabel berikut
VCC = 5 v Supply
GND = Gnd
Out = PINA.7 ( ADC 7 )
c. Sensor Suhu DS18b20
*NOTE = Kabel dihubungkan ke port berikut
VCC = Supply 5v
GND = Gnd
D0 = PortD.7
d. Program Bascom AVR
$regfile = "8535def.dat"
$crystal = 12000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Ddrb.0 = 1
Dim I1 As Integer , Ss As String * 6
Dim Id1(8) As Byte
Dim A As Byte
Dim W As Byte
Dim Au As Integer
Dim B As Integer
Dim Dataadc As Word
Dim X As Integer
Start Adc
Deflcdchar 0 , 8 , 20 , 11 , 4 , 4 , 4 , 3 , 32
Config 1wire = Portd.7
Cursor Off
Cls
'setting sensor suhu
W = 1wirecount()
Upperline
Lcd "Sensor = "
Waitms 500
Lcd W
Wait 3
Cls
Id1(1) = 1wsearchfirst()
'CRC
If Id1(8) = Crc8(id1(1) , 7) Then
Locate 1 , 1
Lcd "CRC OK "
Wait 1
Locate 2 , 1
Lcd "ID:"
For A = 1 To 8
Cls
Upperline
Lcd "ID Sensor = " ; Hex(id1(a));
Next
End If
Wait 2
Cls
'---------------
Main:
Do
'mengambil data suhu
1wreset
1wwrite &H55
1wwrite &HCC
1wverify Id1(1)
1wwrite &HBE
I1 = 1wread(2)
1wreset
1wwrite &HCC
1wwrite &H44
'---------------------------------
Wait 1
'merubah ke celcius dan tipe data string
'-------
I1 = I1 * 10
I1 = I1 / 16
Ss = Str(i1)
Ss = Format(ss , " 0.0")
Cls
Upperline
Lcd "Siap Deteksi"
Locate 2 , 1
Lcd "Tmp = " ; Ss ; " " ; Chr(0) ;
Wait 3
Cls
'mengambil bilai adc heart beat
Dataadc = Getadc(7)
Au = 0
B = 0
'mengambil nilai puncak / threshold
If Dataadc > 512 Then
Goto Deteksi
End If
Loop
'melakukan perhitungan BPM
Deteksi:
Cls
Cursor Off
Do
Dataadc = Getadc(7)
If Dataadc > 512 Then
Incr Au
Portb.0 = 1
Else
Portb.0 = 0
End If
Incr B
Waitms 200
'ambil lima 5 detik pertama 'frekuensi sampling
Loop Until B = 25
'untuk menjadi 1 menit
X = Au * 12
'untuk menampilkan suhu dan bpm
Upperline
Lcd "DETAK = " ; X
Locate 2 , 1
Lcd "Tmp = " ; Ss ; " " ; Chr(0) ;
'-------
Portb.0 = 0
Wait 3
Goto Main
$crystal = 12000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Ddrb.0 = 1
Dim I1 As Integer , Ss As String * 6
Dim Id1(8) As Byte
Dim A As Byte
Dim W As Byte
Dim Au As Integer
Dim B As Integer
Dim Dataadc As Word
Dim X As Integer
Start Adc
Deflcdchar 0 , 8 , 20 , 11 , 4 , 4 , 4 , 3 , 32
Config 1wire = Portd.7
Cursor Off
Cls
'setting sensor suhu
W = 1wirecount()
Upperline
Lcd "Sensor = "
Waitms 500
Lcd W
Wait 3
Cls
Id1(1) = 1wsearchfirst()
'CRC
If Id1(8) = Crc8(id1(1) , 7) Then
Locate 1 , 1
Lcd "CRC OK "
Wait 1
Locate 2 , 1
Lcd "ID:"
For A = 1 To 8
Cls
Upperline
Lcd "ID Sensor = " ; Hex(id1(a));
Next
End If
Wait 2
Cls
'---------------
Main:
Do
'mengambil data suhu
1wreset
1wwrite &H55
1wwrite &HCC
1wverify Id1(1)
1wwrite &HBE
I1 = 1wread(2)
1wreset
1wwrite &HCC
1wwrite &H44
'---------------------------------
Wait 1
'merubah ke celcius dan tipe data string
'-------
I1 = I1 * 10
I1 = I1 / 16
Ss = Str(i1)
Ss = Format(ss , " 0.0")
Cls
Upperline
Lcd "Siap Deteksi"
Locate 2 , 1
Lcd "Tmp = " ; Ss ; " " ; Chr(0) ;
Wait 3
Cls
'mengambil bilai adc heart beat
Dataadc = Getadc(7)
Au = 0
B = 0
'mengambil nilai puncak / threshold
If Dataadc > 512 Then
Goto Deteksi
End If
Loop
'melakukan perhitungan BPM
Deteksi:
Cls
Cursor Off
Do
Dataadc = Getadc(7)
If Dataadc > 512 Then
Incr Au
Portb.0 = 1
Else
Portb.0 = 0
End If
Incr B
Waitms 200
'ambil lima 5 detik pertama 'frekuensi sampling
Loop Until B = 25
'untuk menjadi 1 menit
X = Au * 12
'untuk menampilkan suhu dan bpm
Upperline
Lcd "DETAK = " ; X
Locate 2 , 1
Lcd "Tmp = " ; Ss ; " " ; Chr(0) ;
'-------
Portb.0 = 0
Wait 3
Goto Main
Return
e. VIDEO HASILNYA
No comments:
Post a Comment