ABSTRAK
Sistem pendengaran memegang peranan penting dalam kehidupan karena
masalah pendengaran dapat mengganggu kemampuan komunikasi verbal yang
sangat dibutuhkan dalam aktivitas sehari-hari. Masalah pendengaran sejak lahir
dapat mengakibatkan kesulitan dalam bahasa dan berbicara. Jika dilakukan
identifikasi dan penanganan dini secara pro-aktif, masalah pendengaran dapat
ditangani, dan pendengaran dapat dioptimalkan sehingga anak-anak tersebut dapat
sukses di sekolah dan dapat lebih produktif dalam masyarakat.
BERA (Brainstem Evoked Response Audiometry) merupakan alat yang
digunakan untuk mendeteksi masalah sejak dini pada bayi yang baru lahir dan
anak-anak kecil di mana dokter tidak melihat respon fisik melainkan respon
mental yang dapat diperoleh melalui scan otak. BERA menilai kesatuan dan
kondisi jalur syaraf pendengaran ke otak.
Skripsi ini membahas tentang desain dan pengujian dari prototipe BERA
yang dikoneksikan ke PC (Personal Computer). Fungsi dari PC adalah untuk
mengontrol alat BERA dan menampilkan hasil tes ke monitor. Tujuan
digunakannya PC adalah agar BERA dapat lebih mudah dioperasikan oleh
pengguna. Dalam skripsi ini, hasil tampilan sinyal yang terekam oleh prototipe
alat akan ditampilkan beserta perhitungan responnya.
Universitas Kristen Maranatha
ABSTRACT
The hearing function holds an important role because hearing trouble can
interfere with verbal communication, which is much needed in everyday
activities. Hearing trouble in children from birth can result in difficulties with
language and speech. When pro-active identification and early intervention is
practiced, hearing trouble can be managed, and hearing can be optimized so that
children can succeed in school and can be more productive in society.
BERA (Brainstem Evoked Response Audiometry) are appliance used to
detect early hearing trouble in newborn babies and young children where the
doctor is not looking for a physical response but a mental response and this is
done using a brain scan. BERA assesses the integrity and condition of the hearing
path to the brain.
This thesis discusses the design and testing of prototype BERA connected
to a PC (Personal Computer). PC function is to control BERA appliance and to
display the result of the test in a monitor. The purpose using a PC is to make
BERA more friendly to the user. In this thesis, signal recorded in the prototype
will be displayed with its calculated response.
Universitas Kristen Maranatha
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yesus Kristus atas kasih
setia, rahmat dan karuniaNya yang selalu memberikan tuntunan, pertolongan dan
kekuatan sehingga laporan tugas akhir dengan judul “Perancangan dan Realisasi
Prototipe BERA berbasis PC” dapat diselesaikan.
Penulis menyadari bahwa terciptanya laporan tugas akhir ini adalah berkat
bantuan dari berbagai pihak, oleh karena itu penulis ingin mengucapkan terima
kasih kepada:
1. Bapak Roy Pramono Adhie ST., MT., selaku pembimbing yang telah
membantu dalam pelaksanaan tugas akhir ini.
2. Ibu Ir. Anita Soepartono MSc., selaku koordinator tugas akhir, yang
telah membantu dalam proses pelaksanaan tugas akhir.
3. Bapak Ir. Aan Darmawan MT., selaku Ketua Jurusan Teknik Elektro,
Universitas Kristen Maranatha.
4. Bapak Drs. Ir. Hanapi Gunawan, Msc., Bapak Drs. Zaenal Abidin,
Msc., dan Bapak Dr. Ir. Daniel Setiadikarunia, MT. selaku dosen
penguji yang telah banyak memberikan saran-saran dalam pembuatan
tugas akhir ini.
5. Para dosen, karyawan, dan staf Jurusan Teknik Elektro Universitas
Kristen Maranatha atas ilmu dan bantuan dalam proses perkuliahan.
6. Orang tua, Setyawati, Felix, dan Yani yang selalu memberikan
dukungan dalam doa, dana, dorongan dan semangat dalam
menyelesaikan tugas akhir ini. Terima kasih juga atas kasih sayang
selama ini.
7. Herman, Alex, Faisal, Yohanes, Budi Hertanto, Hendra, Pohan,
Melvin dan semua teman Jurusan Teknik Elektro yang tidak dapat saya
sebutkan satu persatu. Terima kasih atas bantuan, masukan, semangat,
dan persahabatan selama ini.
8. Yohana Mellina Suryadi yang selalu memberikan dukungan, bantuan,
doa, dan kasih dalam melaksanakan tugas akhir ini. Thanks a lot.
Universitas Kristen Maranatha
9. Rekan-rekan sel Thomas Aquinas dan rekan-rekan Komunitas
Tritunggal Mahakudus Bandung. Terima kasih atas dukungan dan
bantuan doanya.
10.Fransiskus Xaverius Hendra Gunawan. Thank you uncle.
11.Rekan-rekan serta semua pihak yang tidak dapat disebutkan
satu-persatu yang telah membantu dan memberikan dukungan baik secara
langsung maupun tidak langsung selama penyusunan laporan ini.
Penulis menyadari bahwa laporan tugas akhir ini memiliki banyak
kekurangan karena keterbatasan ilmu dan pengetahuan yang penulis miliki, oleh
karena itu penulis mengharapkan kritik dan saran yang membangun. Akhir kata,
dengan segala keterbatasan dan kekurangan yang ada, penulis berharap semoga
laporan tugas akhir ini dapat bermanfaat bagi pembaca sekalian.
Bandung, Februari 2007
Penulis
Universitas Kristen Maranatha
DAFTAR ISI
ABSTRAK i
ABSTRACT ii
KATA PENGANTAR iii
DAFTAR ISI v
DAFTAR TABEL viii
DAFTAR GAMBAR ix
DAFTAR LAMPIRAN xii
BAB I PENDAHULUAN 1
I.1 Latar Belakang 1
I.2 Identifikasi Masalah 1
I.3 Tujuan 2
I.4 Pembatasan Masalah 2
I.5 Spesifikasi Alat 2
` I.6 Sistematika Penulisan 2
BAB II LANDASAN TEORI 4
II.1 Mikrokontroler ATMEGA8 4
II.1.1 Arsitektur ATMEGA8 4
II.1.2 Interupsi pada ATMEGA8 5
II.1.3 Komunikasi Serial USART 7
II.1.4 ADC ATMEGA8 15
II.2 Penguat Operasional 22
II.2.1 Penguat Membalik (Inverting Amplifier) 23
II.2.2 Penguat Tak Membalik (Non Inverting Amplifier) 24
II.2.3 Penguat Diferensial 24
II.2.4 Common Mode Rejection Ratio 25
II.2.5 Penguat Instrumentasi 25
II.2.6 Pengikut Tegangan 26
II.2.7 Rangkaian Penjumlah (Summing Amplifier) 27
Universitas Kristen Maranatha
II.3 Filter 28
II.3.1 Low Pass Filter 28
II.3.2 High Pass Filter 30
II.3.3 Band Pass Filter 31
II.3.4 Band Stop Filter 32
II.3.5 Klasifikasi Filter menurut Karakteristik dan Tipe 34
II.4 Konverter Analog ke Digital 35
II.4.1 Konverter Analog ke Digital Lereng Ganda 35
II.4.2 Succesive Approximation Converter 36
II.4.3 Konverter Paralel 36
II.5 Sangkar Faraday 37
II.6 Pengenalan Antarmuka RS-232C 38
II.7 Elektroda 39
II.8 Electroencephalography (EEG) 40
BAB III PERANCANGAN DAN REALISASI 42
III.1 Perangkat Keras 42
III.1.1 Penguat Awal 42
III.1.2 Right Leg Driver (RLD) 44
III.1.3 High Pass Filter 45
III.1.4 Low Pass Filter 47
III.1.5 Notch Filter 48
III.1.6 Summing Amplifier 49
III.1.7 Mikrokontroler ATMEGA8 50
III.1.8 Optocoupler 6N136 51
III.1.9 Interface Komunikasi Serial RS-232 52
III.2 Perangkat Lunak 53
III.2.1 Perangkat Lunak ATMEGA8 53
III.2.2 Perangkat Lunak Delphi 57
BAB IV PENGUJIAN ALAT 62
IV.1 Pengujian Alat Analog 62
IV.1.1 Pengujian Instrumentation Amplifier 62
IV.1.2 Pengujian High Pass Filter 64
Universitas Kristen Maranatha
IV.1.3 Pengujian Low Pass Filter 65
IV.1.4 Pengujian Notch Filter 65
IV.1.5 Pengujian Summing Amplifier 66
IV.2 Pengujian Alat Digital 66
IV.2.1 Pengujian Perangkat Lunak ATMEGA8 66
IV.2.2 Pengujian Perangkat Lunak Delphi 67
IV.3 Pengujian Sistem 71
IV.3.1 Pengujian Sistem Terhadap Masukan Sinyal Sinus
Dan Kotak 71
IV.3.2 Pengujian Terhadap Manusia 78
BAB V KESIMPULAN DAN SARAN 82
V.1 Kesimpulan 82
V.2 Saran 82
DAFTAR PUSTAKA LAMPIRAN
Universitas Kristen Maranatha
DAFTAR TABEL
Tabel II.1 Macam-macam Sumber Interupsi pada AVR ATMEGA8 5
Tabel II.2 Perhitungan Nilai UBRR untuk Berbagai Mode Operasi 9
Tabel II.3 Penentuan Ukuran Karakter 10
Tabel II.4 Penentuan Mode Paritas 12
Tabel II.5 Pemilihan Mode Tegangan Referensi ADC 20
Tabel II.6 Tabel Pemilihan Bit Saluran Pembacaan ADC 21
Tabel II.7 Konfigurasi Clock ADC 22
Tabel II.8 Karakteristik Penguat Operasional Ideal 23
Universitas Kristen Maranatha
DAFTAR GAMBAR
Gambar II.1 Blok Diagram Fungsional ATMEGA8 4
Gambar II.2 Blok Diagram USART ATMEGA8 8
Gambar II.3 Register UBRR 9
Gambar II.4 Register UCSRB 10
Gambar II.5 Register UCSRS 11
Gambar II.6 Register UDR 12
Gambar II.7 Register UCSRA 13
Gambar II.8 Blok Diagram ADC ATMEGA8 15
Gambar II.9 Prescaler ADC 17
Gambar II.10 Diagram Waktu ADC, Konversi Pertama 18
Gambar II.11 Diagram Waktu ADC, Konversi Tunggal 18
Gambar II.12 Diagram Waktu ADC, Konversi Free Running 19
Gambar II.13 Register ADMUX 19
Gambar II.14 Format Data ADC dengan ADLAR = 0 20
Gambar II.15 Format Data ADC dengan ADLAR = 1 20
Gambar II.16 Register ADCSRA 21
Gambar II.17 Rangkaian Penguat Membalik 23
Gambar II.18 Rangkaian Penguat Tak Membalik 24
Gambar II.19 Penguat Diferensial 25
Gambar II.20 Rangkaian Penguat Instrumentasi 25
Gambar II.21 Rangkaian Pengikut Tegangan 27
Gambar II.22 Rangkaian Penjumlah Membalik 27
Gambar II.23 Rangkaian Penjumlah Tak Membalik 28
Gambar II.24 (a) Respon Frekuensi Low Pass Filter 29
(b) Rangkaian Low Pass Filter Orde 1 29
Gambar II.25 Unity Gain Low Pass Filter Sallen and Key Orde 2 29
Gambar II.26 (a) Respon Frekuensi High Pass Filter 30
(b) Rangkaian High Pass Filter Orde 1 30
Universitas Kristen Maranatha
Gambar II.27 Rangkaian Unity Gain High Pass Filter Sallen and Key
Orde 1 31
Gambar II.28 Respon Frekuensi Band Pass Filter 31
Gambar II.29 Respon Frekuensi Band Stop Filter 32
Gambar II.30 Rangkaian Notch Filter 33
Gambar II.31 Konverter Analog ke Digital Lereng Ganda 35
Gambar II.32 Konverter Analog ke Digital Successive Approximation 36
Gambar II.33 Rangkaian Konverter Paralel 3 bit 37
Gambar II.34 Beberapa Bentuk Elektroda EKG 40
Gambar II.35 Contoh Sinyal EEG 41
Gambar III.1 Diagram Blok Prototipe PC-based BERA 42
Gambar III.2 Rangkaian Skematik AD620AN 43
Gambar III.3 Rangkaian Preamplifier 44
Gambar III.4 Rangkaian Right Leg Driver 44
Gambar III.5 Rangkaian High Pass Filter 46
Gambar III.6 Rangkaian LPF Bessel Orde 4 47
Gambar III.7 Rangkaian Notch Filter 49
Gambar III.8 Rangkaian Summing Amplifier 50
Gambar III.9 Rangkaian Mikrokontroler ATMEGA8 51
Gambar III.10 Rangkaian Optocoupler untuk Komunikasi RS-232 dua Arah 52
Gambar III.11 Rangkaian Supply Tegangan untuk Rangkaian Digital 52
Gambar III.12 Rangkaian Antarmuka RS-232 53
Gambar III.13 Diagram Alir Program Utama ATMEGA8 54
Gambar III.14 Diagram Alir Proses Data ATMEGA8 56
Gambar III.15 Diagram Alir Proses Periksa Koneksi 57
Gambar III.16 Diagram Alir Proses Hitung Gain 58
Gambar III.17 Input dari ADC dalam Proses Penghitungan Penguatan 59
Gambar III.18 Diagram Alir Proses Pengambilan Sinyal 61
Gambar IV.1 Pengukuran Tahanan Masukan 63
Gambar IV.2 Program AVR Studio 3.56 67
Universitas Kristen Maranatha
Gambar IV.3 Tampilan Sinyal di PC jika Masukan Sinyal Sinus 100 Hz 68
Gambar IV.4 Tampilan Sinyal di PC jika Masukan Sinyal Kotak 100 Hz 68
Gambar IV.5 Tampilan Sinyal di PC jika Masukan Sinyal Sinus 1 kHz 69
Gambar IV.6 Tampilan Sinyal di PC jika Masukan Sinyal Kotak 1 kHz 69
Gambar IV.7 Tampilan Sinyal di PC jika Masukan Sinyal Sinus 3 kHz 70
Gambar IV.8 Tampilan Sinyal di PC jika Masukan Sinyal Kotak 3 kHz 70
Gambar IV.9 Tampilan di Osiloskop jika Masukan Sinus 100 Hz 72
Gambar IV.10 Tampilan Sinyal di PC jika Masukan Sinus 100 Hz 40 uVpp 72
Gambar IV.11 Tampilan di Osiloskop jika Masukan Kotak 100 Hz 73
Gambar IV.12 Tampilan Sinyal di PC jika Masukan Kotak 1 kHz 40 uVpp 73
Gambar IV.13 Tampilan di Osiloskop jika Masukan Sinus 1 kHz 74
Gambar IV.14 Tampilan Sinyal di PC jika Masukan Sinus 1 kHz 40 uVpp 74
Gambar IV.15 Tampilan di Osiloskop jika Masukan Kotak 1 kHz 75
Gambar IV.16 Tampilan Sinyal di PC jika Masukan Kotak 1 kHz 40 uVpp 75
Gambar IV.17 Tampilan di Osiloskop jika Masukan Sinus 2 kHz 76
Gambar IV.18 Tampilan Sinyal di PC jika Masukan Sinus 2 kHz 40 uVpp 76
Gambar IV.19 Tampilan di Osiloskop jika Masukan Kotak 2 kHz 77
Gambar IV.20 Tampilan Sinyal di PC jika Masukan Kotak 2 kHz 40 uVpp 77
Gambar IV.21 Hasil Pengujian jika Diberi Stimulus Sentuhan 78
Gambar IV.22 Hasil Pengujian jika Diberikan Stimulus Suara 1500 Hz 79
Gambar IV.23 Hasil Pengujian jika Diberikan Stimulus Suara 1500 Hz
Setelah Zooming 80
Gambar IV.24 Hasil Pengujian dalam lingkungan yang tidak tenang 81
Universitas Kristen Maranatha
DAFTAR LAMPIRAN
LAMPIRAN A RANGKAIAN SKEMATIK PERANGKAT KERAS
LAMPIRAN B LIST PROGRAM MIKROKONTROLER
LAMPIRAN C LIST PROGRAM DELPHI
LAMPIRAN D FOTO ALAT DAN PENGUJIAN ALAT
LAMPIRAN E TABEL BESSEL
Universitas Kristen Maranatha
LAMPIRAN A
2
Instrumentation Amplifier, G=749
AD620AN Notch Filter, G=1
OP07 Summing Amplifier, G=1
TL081
Rangkaian Penguat dan Filter
A-2
Rangkaian Digital
LAMPIRAN B
.INCLUDE "C:\Program Files\Atmel\AVR Studio\Appnotes\m8535def.inc"
.def tmp = R16
.def tmp1 = r17
.def tmp2 = r18
.def tmp3 = r21
.def tmp4 = r22
.def txbyte = R19
.def rxbyte = r20
.equ fclock = 11059200
.equ baud_rate = 230400
.equ ubbr_value = (fclock/(16*baud_rate))-1
.org 0x0000
rjmp main
.org 0x00B
rjmp usart_rxc
main:
ldi tmp,low(ramend)
out spl,tmp
ldi tmp,high(ramend)
out sph,tmp
rcall init_usart
ldi tmp,0
out ADMUX,tmp
ldi tmp,0b11000100
out ADCSRA,tmp
first_conv:
sbic adcsra,adsc
rjmp first_conv
in tmp,adcl
in tmp1,adch
com tmp
out portb,tmp
sei
ldi txbyte,33
rcall usart_tx
done:
rjmp done
usart_rxc:
rcall usart_rx
cpi rxbyte,58
brne gain
ldi txbyte,33
rcall usart_tx
rjmp keluar
gain:
cpi rxbyte,'?'
brne kirimADC
rcall convADC
add tmp1,tmp1
add tmp,tmp
brcc nocarry1
inc tmp1
nocarry1:
ldi zl,low(2*msg)
ldi zh,high(2*msg)
cpi tmp1,0
breq load4
add zh,tmp1
load4:
add zl,tmp
brcc load5
inc zh
load5:
lpm
mov txbyte,r0
rcall beda
rcall usart_tx
inc zl
brcc load6
inc zh
load6:
lpm
mov txbyte,r0
rcall beda
rcall usart_tx
kirimADC:
cpi rxbyte,47
brne keluar
ldi tmp3,100
count1:
dec tmp3
ldi tmp4,200
count:
dec tmp4
rcall convADC
add tmp1,tmp1
add tmp,tmp
brcc nocarry
inc tmp1
nocarry:
ldi zl,low(2*msg)
ldi zh,high(2*msg)
cpi tmp1,0
breq load1
add zh,tmp1
load1:
add zl,tmp
brcc load2
inc zh
load2:
lpm
mov txbyte,r0
rcall beda
rcall usart_tx
inc zl
brcc load3
inc zh
load3:
lpm
mov txbyte,r0
rcall beda
rcall usart_tx
cpi tmp4,0
brne count
cpi tmp3,0
brne count1
keluar:
reti
;============
; USART init
;============
init_usart:
ldi r21,0b10000000
out ucsra,r21
ldi tmp,high(ubbr_value)
out ubrrh,tmp
ldi tmp,low(ubbr_value)
out ubrrl,tmp
ldi tmp,(1<<rxen)|(1<<txen)|(1<<rxcie)
out ucsrb,tmp
ldi tmp,(1<<ursel)|(2<<ucsz0)
out ucsrc,tmp
ret
;=====================
; USART transmit data
;=====================
usart_tx:
sbis ucsra,udre
rjmp usart_tx
out udr,txbyte
ret
;====================
; USART receive data
;====================
usart_rx:
sbis ucsra,rxc
rjmp usart_rx
in rxbyte,udr
ret
;========================
; KONVERSI HEXA KE ASCII
;========================
HEX_ASCII2:
push tmp
rcall HEX_ASCII1
mov tmp1,tmp
pop tmp
swap tmp
rcall HEX_ASCII1
ret
HEX_ASCII1:
andi tmp,0b00001111
cpi tmp,0x0A
brsh bukan_angka
ldi tmp2,0x30
add tmp,tmp2
ret
bukan_angka:
ldi tmp2,0x37
add tmp,tmp2
ret
;=================
; KONVERSI ADC
;=================
convADC:
sbi adcsra,adsc
conv:
sbic adcsra,adsc
rjmp conv
in tmp,adcl
in tmp1,adch
ret
;===============================
; BEDAKAN ANGKA & HURUF
;===============================
beda:
cpi txbyte,65
brge huruf
subi txbyte,13
ret
huruf:
subi txbyte,20
ret
msg:
.db
"000102030405060708090A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z"
.db
"101112131415161718191A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z"
.db
"202122232425262728292A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z"
.db
"303132333435363738393A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z"
.db
"404142434445464748494A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z"
.db
"505152535455565758595A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z"
.db
"606162636465666768696A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z"
.db
"707172737475767778797A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z"
.db
"808182838485868788898A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z"
.db
"909192939495969798999A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z"
.db
"F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZ"
.db
.db "I0I1I2I3I4I5I6I7I8I9IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZ"
.db "J0J1J2J3J4J5J6J7J8J9JAJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZ"
.db
"K0K1K2K3K4K5K6K7K8K9KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKW
KXKYKZ"
.db
"L0L1L2L3L4L5L6L7L8L9LALBLCLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZ
"
.db
"M0M1M2M3M4M5M6M7M8M9MAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMT
MUMVMWMXMYMZ"
.db
"N0N1N2N3N4N5N6N7N8N9NANBNCNDNENFNGNHNINJNKNLNMNNNONPNQNRNSNTNUNVNW
NXNYNZ"
.db
"O0O1O2O3O4O5O6O7O8O9OAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOW
OXOYOZ"
.db
"P0P1P2P3P4P5P6P7P8P9PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZ"
.db
"Q0Q1Q2Q3Q4Q5Q6Q7Q8Q9QAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQUQVQW
QXQYQZ"
.db
"R0R1R2R3R4R5R6R7R8R9RARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXR
YRZ"
.db
"S0S1S2S3S4S5S6S7S8S9SASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZ"
LAMPIRAN C
unit TA;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ExtCtrls, CPort, ComCtrls, ActnMan, options, ActnColorMaps,
xyun, xygraph, xycopy, xygraph3d, math, LMDAboutDlg, ToneGen,
LMDCustomComponent, LMDContainerComponent, LMDBaseDialog;
type
TMainForm = class(TForm)
Label1: TLabel;
Label2: TLabel;
StatusBar1: TStatusBar;
Button1: TButton;
ComPort1: TComPort;
Button2: TButton;
Button4: TButton;
ComboBox1: TComboBox;
Button3: TButton;
PaintBox4: TPaintBox;
CheckBox1: TCheckBox;
LMDAboutDlg1: TLMDAboutDlg;
ToneGen1: TToneGen;
Button6: TButton;
Edit4: TEdit;
ScrollBar1: TScrollBar;
TrackBar1: TTrackBar;
Label3: TLabel;
ComDataPacket1: TComDataPacket;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Label4: TLabel;
Label5: TLabel;
Bevel1: TBevel;
Bevel2: TBevel;
RadioGroup1: TRadioGroup;
procedure FormCreate(Sender: TObject);
procedure Activate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComPortOpen(Sender: TObject);
procedure ComPortClose(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure formclose(Sender: TObject; var Action: TCloseAction);
procedure Paint(Sender: TObject);
procedure paintboxmousedown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure paintboxmouseup(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure paintboxmousemove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button6Click(Sender: TObject);
procedure Scrollchange(Sender: TObject);
procedure Freqchange(Sender: TObject);
procedure Changevolume(Sender: TObject);
procedure datapaket(Sender: TObject; const Str: String);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
private
{ Private declarations }
public
end;
var
MainForm: TMainForm; status,status1:string;
flag,flag2,flag3,k,l,m,n,buffer,buffer1,setpoint,count2,signal1,signal2:integer;
gain,signal:real;
records : array [1..1000,1..20000] of real;
data, data2 : Tdatatype;
implementation
{$R *.dfm}
procedure TMainForm.FormCreate(Sender: TObject);
var i : integer;
begin
mainform.Height:= 864;
mainform.Width:= 1152;
enumcomports(combobox1.Items);
comport1.Port := combobox1.Items[1];
comport1.BaudRate := brcustom;
comport1.CustomBaudRate:=230400;
comport1.DataBits := dbseven;
comport1.StopBits := sbOneStopBit;
comport1.Connected := false;
port1:=comport1.port;
baudrate1:='230400';
data00:='7';
stop:='1-bit';
status:='Disconnected';
tonegen1.Frequency:=strtoint(edit4.Text);
statusbar1.Panels.Items[6].Text:='Stimulation Freq : '+edit4.Text+' Hz';
statusbar1.Panels.Items[5].Text:='T Sampling : 1 ms';
statusbar1.Panels.Items[7].Text:='Stimulation Volume : '+inttostr(5*trackbar1.Position)+' %';
flag:=0;
flag3:=100;
k:=0;l:=1;
xysetdataarray(data,20000,1);
xysetdataarray(data2,20000,1);
end;
procedure TMainForm.Activate(Sender: TObject);
begin
comport1.Port := port1;
statusbar1.Panels.Items[0].Text:='Port : '+port1;
if baudrate1='9600' then
begin
comport1.BaudRate:=br9600;
end;
if baudrate1='19200' then
begin
comport1.BaudRate:=br19200;
end;
if baudrate1='56000' then
begin
comport1.BaudRate:=br56000;
end;
if baudrate1='115200' then
begin
comport1.BaudRate:=br115200;
end;
if baudrate1='230400' then
begin
comport1.BaudRate := brcustom;
comport1.CustomBaudRate:=230400;
end;
statusbar1.Panels.Items[1].Text:='Baudrate : '+baudrate1+' bps';
if data00='5' then
begin
comport1.DataBits:=dbfive;
end;
if data00='6' then
begin
comport1.DataBits:=dbsix;
end;
if data00='7' then
begin
comport1.DataBits:=dbseven;
end;
if data00='8' then
begin
comport1.DataBits:=dbeight;
end;
statusbar1.Panels.Items[2].Text:='Data Bits : '+data00+'-bits';
if stop='1-bit' then
begin
comport1.stopBits:=sbOneStopBit;
end;
if stop='2-bits' then
begin
comport1.stopBits:=sbTwoStopBits;
end;
statusbar1.Panels.Items[3].Text:='Stop Bit(s) : '+stop;
if comport1.Connected=true then
begin
status:='Connected';
end;
if comport1.Connected=false then
begin
status:='Disconnected';
end;
statusbar1.Panels.Items[4].Text:='Status : '+status;
end;
procedure TMainForm.Button2Click(Sender: TObject);
begin
if ComPort1.Connected then
begin
ComPort1.Close;status:='Disconnected';
end
else
begin
ComPort1.Open;status:='Connected';
end;
statusbar1.Panels.Items[4].Text:='Status : '+status;
end;
procedure TMainForm.ComPortOpen(Sender: TObject);
begin
Button2.Caption := 'Disconnect';
button1.Enabled := true;
statusbar1.Panels.Items[4].Text:='';
end;
procedure TMainForm.ComPortClose(Sender: TObject);
begin
if Button2 <> nil then
Button2.Caption := 'Connect';
button1.Enabled := false;
button3.Enabled := false;
button4.Enabled := false;
statusbar1.Panels.Items[4].Text:='';
end;
procedure TMainForm.Button1Click(Sender: TObject);
begin
flag:=1;comdatapacket1.Size:=1;ComPort1.WriteStr(':');
end;
procedure TMainForm.Button4Click(Sender: TObject);
begin
flag:=2;Comport1.WriteStr('?');
end;
procedure TMainForm.Button3Click(Sender: TObject);
var i:integer;
begin
if button3.Caption='Get Signal' then
begin
button11.Enabled:=false;
button12.Enabled:=false;
flag3:=100;
flag:=3;
k:=0;l:=1;
buffer1:=buffer;
button3.Caption:='Stop Signal';
comdatapacket1.Size:=40000;
comport1.WriteStr('=');
end
else
begin
flag:=0;
button3.Caption:='Get Signal';
end;
end;
procedure TMainForm.formclose(Sender: TObject; var Action: TCloseAction);
begin
comport1.Close;
end;
procedure TMainForm.Paint(Sender: TObject);
var tm : boolean;
begin
xycleargraph(paintbox4,clwhite,clblack,1.0);
xystartgraph(0,100,0,flag3,40,40,40,40,clipon);
if checkbox1.checked then
begin
end
else
begin
xyxaxis(clblack,0,20000,0,0,'Time (mS)',true,false,false);
xyyaxis(clgreen,-5,5,0,0,'Voltage (uV)',1,false,false,false);
xysymbol(2,6,2);
end;
xyplotarray(data,1,3);
xytitle(clmaroon,'Brainstem Voltage');
if flag3=50 then
begin
xystartgraph(0,100,flag3,100,40,40,40,40,clipon);
xyxaxis(clblack,0,20000,0,0,'Time (mS)',true,false,false);
xyyaxis(clblue,-5,5,0,0,'Voltage (uV)',1,false,false,false);
xysymbol(2,6,2);
xyplotarray(data2,1,3);
xytitle(clred,'Brainstem Voltage after Stimulation');
end;
if checkbox1.checked then
xyinitruler(clred,100,round(paintbox4.height * 0.1)-20,1,3)
else
xyinitruler(clmaroon,100,round(paintbox4.height * 0.05)-20,1,0)
end;
procedure TMainForm.paintboxmousedown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
xymousedown(button,shift,x,y);
end;
procedure TMainForm.paintboxmouseup(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
xymouseup(button,shift,x,y);
end;
procedure TMainForm.paintboxmousemove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
xymousemove(shift,x,y);
end;
procedure TMainForm.Button6Click(Sender: TObject);
begin
flag:=1;
end;
procedure TMainForm.Scrollchange(Sender: TObject);
begin
edit4.Text:=inttostr(20+scrollbar1.Position*scrollbar1.Position);
tonegen1.Frequency:=strtoint(edit4.Text);
statusbar1.Panels.Items[6].Text:='Stimulation Freq : '+edit4.text+' Hz';
end;
procedure TMainForm.Freqchange(Sender: TObject);
begin
scrollbar1.Position:=trunc(sqrt(strtofloat(edit4.text)-20));
tonegen1.Frequency:=strtoint(edit4.Text);
statusbar1.Panels.Items[6].Text:='Stimulation Freq : '+edit4.Text+' Hz';
end;
procedure TMainForm.Changevolume(Sender: TObject);
begin
tonegen1.LeftVolume:=5*trackbar1.Position;
tonegen1.RightVolume:=5*trackbar1.Position;
statusbar1.Panels.Items[7].Text:='Stimulation Volume : '+inttostr(tonegen1.leftvolume)+' %';
end;
procedure TMainForm.datapaket(Sender: TObject; const Str: String);
var i:integer;
begin
if str='!' then
begin
statusbar1.Panels.Items[4].Text:='PC-based BERA detected';
button3.enabled:=true;
button4.Enabled:=true;
end
else
begin
statusbar1.Panels.Items[4].Text:='PC-based BERA not detected';
end;
if str<>'!' then
begin
if flag3=100 then
begin
if radiogroup1.ItemIndex=1 then
records[l,k]:=signal;
end;
if radiogroup1.ItemIndex=1 then
begin
if flag3=50 then
begin
if radiogroup1.ItemIndex=1 then
records[l,k]:=signal;
end;
if radiogroup1.ItemIndex=1 then
button3.Caption:= 'Get Signal';
paintbox4.Refresh;
statusbar1.Panels.Items[4].Text:='PC-based BERA detected';
end;
end;
procedure TMainForm.Button7Click(Sender: TObject);
begin
form2.Show;
end;
procedure TMainForm.Button8Click(Sender: TObject);
begin
xycopystart;
end;
procedure TMainForm.Button9click(Sender: TObject);
begin
if MessageDlg('Exit now?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
MessageDlg('Exiting PC-based BERA application.', mtInformation, [mbOk], 0);
Close;
end;
end;
procedure TMainForm.Button10Click(Sender: TObject);
begin
lmdaboutdlg1.Execute;
end;
procedure TMainForm.ComboBox2Change(Sender: TObject);
begin
case combobox2.ItemIndex of
0 : tonegen1.Waveform := tgsine;
1 : tonegen1.Waveform := tgsquare;
2 : tonegen1.Waveform := tgtriangle;
3 : tonegen1.waveform := tgsawtooth;
4 : tonegen1.Waveform := tgnoise;
end;
end;
procedure TMainForm.Button5Click(Sender: TObject);
begin
tonegen1.Play;
end;
procedure TMainForm.Button12Click(Sender: TObject);
begin
button11.Enabled:=true;
m:=m-1;
for k:=1 to 20000 do
data[k,1]:=records[m,k];
paintbox4.Refresh;
if m=1 then
button12.Enabled:=false;
end;
procedure TMainForm.Button11Click(Sender: TObject);
begin
button12.Enabled:=true;
m:=m+1;
for k:=1 to 20000 do
data[k,1]:=records[m,k];
paintbox4.Refresh;
if m=n then
button11.Enabled:=false;
end;
end.
LAMPIRAN D
Rangkaian Analog
Rangkaian Digital
Rangkaian Analog dan Digital
Tampilan Program Delphi
Pengujian Alat terhadap Manusia
Pengujian Alat terhadap Manusia
LAMPIRAN E
BAB I
PENDAHULUAN
I.1 Latar Belakang
Perkembangan teknologi di bidang elektronika kedokteran saat ini sangat
pesat. Akhir-akhir ini, banyak dibuat alat-alat elektronik yang dapat membantu
pekerjaan seorang dokter dalam membuat diagnosa terhadap pasiennya. Selain itu,
komputer juga telah banyak digunakan untuk membantu dalam elektronika
kedokteran.
Kesehatan syaraf pendengaran pada bayi merupakan salah satu hal
penting. Jika gangguan syaraf pendengaran dapat dideteksi sejak dini pada bayi,
maka dapat dilakukan penanggulangan-penanggulangan untuk dapat membantu
memperbaiki kemampuan pendengaran dari bayi. Apabila gangguan tersebut tidak
diketahui sejak dini, maka tindakan penanggulangan bisa jadi akan terlambat.
Oleh karena itu, pemeriksaan syaraf pendengaran bayi merupakan hal yang
penting dilakukan.
Brainstem Evoked Response Audiometry (BERA) merupakan suatu alat
yang membantu kita dalam mengetahui kondisi syaraf pendengaran dari bayi.
BERA telah banyak digunakan di banyak Rumah Sakit untuk uji pendengaran.
Meskipun demikian, saat ini harga BERA masih sangat mahal. Peralatan BERA
ini sangat mungkin untuk dikembangkan lebih lanjut dengan menggunakan
teknologi-teknologi yang telah ada. Salah satunya yaitu dengan menggunakan
komputer PC (Personal Computer) untuk membantu pengoperasiannya.
I.2 Identifikasi Masalah
Bagaimana mendesain dan merealisasikan prototipe alat yang dapat
menampilkan sinyal pendengaran yang dihasilkan syaraf ke dalam suatu PC
(Personal Computer)
2
I.3 Tujuan
Mendesain dan merealisasikan prototipe alat yang dapat menampilkan
sinyal pendengaran yang dihasilkan syaraf ke dalam suatu PC (Personal
Computer)
I.4 Pembatasan Masalah
1. Hanya sebatas menampilkan sinyal dari batang otak yang diambil melalui
elektroda
2. Elektroda yang digunakan sama dengan elektroda jantung
3. Program yang digunakan untuk menampilkan sinyal adalah Borland
Delphi 7 dengan sistem operasi Windows XP Professional Edition
I.5 Spesifikasi Alat
1. Notch Filter 50 Hz
2. Resolusi ADC 10 bit
3. Menggunakan koneksi RS-232 dengan kecepatan 230400 bps
4. Filter band pass dengan frekuensi cut off 100 Hz dan 4 kHz
5. Penguatan = 46500 – 535500 kali atau 93.35 – 114.58 dB
6. Frekuensi sampling / scanning rate minimal 9000 Hz
I.6 Sistematika Penulisan Bab I
Pada bab I dibahas tentang latar belakang, identifikasi masalah, tujuan,
pembatasan masalah, spesifikasi alat, dan sistematika penulisan tugas
akhir ini.
Bab II
Pada bab II dibahas tentang teori penunjang mengenai mikrokontroler
ATMEGA8, rangkaian-rangkaian dasar op-amp, filter, Analog to Digital
Converter (ADC), RS-232C, elektroda, dan electroencephalography
(EEG).
3
Bab III
Pada bab III dibahas tentang perancangan hardware, perancangan
software, serta protokol komunikasi antara komputer dengan
mikrokontroler.
Bab IV
Pada bab IV dibahas mengenai uji coba dari hardware, software serta uji
coba hardware dan software secara keseluruhan.
Bab V
Pada bab V dibahas mengenai kesimpulan dan saran dari pelaksanaan
tugas akhir ini.
BAB V
KESIMPULAN DAN SARAN
V.1 Kesimpulan
1. Prototipe PC-based BERA telah berhasil direalisasikan dalam Tugas Akhir
ini.
2. Masih terdapat noise yang terekam dalam sistem, yang disebabkan oleh
adanya interferensi dari luar sistem.
3. Berdasarkan hasil pengujian prototipe PC-based BERA dalam Tugas
Akhir ini, respon dari sinyal batang otak adalah 0.03 detik atau 30 mili
detik setelah diberikan stimulus suara.
V.2 Saran
1. Untuk mendapatkan frekuensi sampling yang lebih tinggi, dapat
digunakan komunikasi yang lebih cepat daripada komunikasi RS-232,
misalnya USB (Universal Serial Bus).
2. Perangkat lunak dapat menggunakan algoritma lain sehingga dapat
meningkatkan frekuensi sampling.
3. Proses pengambilan sinyal melalui elektroda dapat menggunakan kabel
shielded yang lebih berkualitas sehingga dapat lebih menekan noise.
DAFTAR PUSTAKA
1. Martina, Ir. Inge, “36 Jam Belajar Komputer Delphi 5.0”, Elex Media
Komputindo, Jakarta, 2000.
2. Heryanto, Yadi, “Perancangan dan Realisasi Prototipe EKG 1 Lead
Berbasis PC dengan Pengembangan Komunikasi Data Lewat Telemetri
Digital”, Bandung, 2006.
3. Wardhana, Lingga, “Belajar Sendiri Mikrokontroler AVR Seri
ATMega8535”, Edisi 1, ANDI Offset, Yogyakarta, 2006.
4. Webster, John G., “Introduction of Biomedical Instrumentation”, Edisi
3,Mc Graw Hill, 1998.
5. Wijaya, Ir. Marvin Chandra, MM., MT., “Modul Bahasa Pemrograman”.
6. http://openeeg.sourceforge.net/doc/modeeg/modeeg.html, Agustus 2006.
7. http://www.datasheetcatalog.com/, Juli 2006.
Universitas Kristen Maranatha