20
BAB 3
PERANCANGAN DAN
IMPLEMENTASI SISTEM
Pada bab ini akan diuraikan tentang perancangan dan implementasi sistem yang
meliputi metode pengembangan perangkat stimulasi arus mikro, perancangan dan
implementasi alat stimulasi OpenMCS, perancangan sinyal stimulasi arus mikro,
dan perancangan dan implementasi program stimulasi µStimS. Keseluruhan
sistem yang dirancang dan direalisasikan pada penelitian ini adalah seperti yang
terlihat pada gambar 3.1.
Gambar 3. 1 Diagram blok rancangan OpenMCS dan µStimS
21
3.1 METODE PENGEMBANGAN PERANGKAT STIMULASI ARUS MIKRO
Pengembangan perangkat stimulasi arus mikro dilakukan dengan melakukan
sejumlah perancangan prototip perangkat stimulasi arus mikro berdasarkan
spesifikasi-spesifikasi alat stimulasi arus mikro yang ada di pasaran. Perbandingan
spesifikasi rancangan OpenMCS dan µStimS dengan spesifikasi produk lain
yang terdapat di pasaran ditunjukkan pada tabel 3.1.
Tabel 3. 1 Perbandingan fitur OpenMCS dan µStimS dengan Alpha-Stim 100 dan Trio Stim[6,7,8,9,10]
No. Fitur OpenMCS & µStimS Alpha‐Stim 100 Trio Stim (MCS)
1 Arus listrik 0 ‐ 1000 µA 10 ‐ 600 µA 11 ‐ 750 µA
2 Pengaturan arus listrik Setiap saat Setiap saat setiap saat
3 Bentuk gelombang 5 jenis (lihat rincian)
Persegi asimetrik bipolar
Persegi konstan bipolar
4 Frekuensi
0,25 ‐ 1000 Hz (tergantung jenis
gelombang) 0,5; 1,5; 100 Hz 0,3 ‐ 400 Hz
5 Pengaturan frekuensi Setiap saat Setiap saat setiap saat
6 Lebar pulsa 1 ‐ 1000 ms 50% duty cycle 1 ‐ 250 ms
7 Pengaturan lebar pulsa setiap saat tidak ada setiap saat
8 Pengaturan waktu terapi kontinyu
10, 20, 60 menit dan kontinyu 30 menit
9 Pengaman arus listrik berlebih ada tidak disebutkan ada
10
Pengaman muatan listrik berlebih ada tidak ada ada
11
Pengaman arus listrik rata‐rata berlebih ada tidak ada ada
12 Tampilan LCD ada ada ada
13 Parameter tampilan
Petunjuk, arus listrik, frekuensi, lebar pulsa, peringatan keamanan pasien
Petunjuk, timer, simbol kapasitas
baterai
Petunjuk, arus listrik, frekuensi, lebar pulsa, timer
14 Catu daya Baterai kering 12V
rechargeable Baterai 9V disposable
Baterai 9V disposable
15 Sistem terbuka tertutup tertutup
16 Harga Rp 800.000,‐ (biaya
pembuatan) $ 895,‐ $ 439,‐
22
Pada tabel 1 rancangan perangkat stimulasi arus mikro OpenMCS dan µStimS
dibuat diperbandingkan dengan perangkat stimulasi arus mikro dari produk yang
paling umum digunakan sebagai perangkat untuk penelitian terapi arus mikro,
yaitu Alpha-Stim 100. Pembanding kedua adalah produk Trio Stim yang
memiliki tiga fungsi, yaitu mampu sebagai alat stimulasi arus mikro (MCS),
TENS, dan alat stimulasi elektrik otot (EMS). Untuk kesesuaian dengan tujuan
pengembangannya, yaitu sebagai perangkat stimulasi arus mikro untuk penelitian
medis tingkat klinis, maka OpenMCS dan µStimS dirancang sedemikian rupa
sehingga mempunyai karakteristik sebagai berikut.
1. Mampu memberikan berbagai sinyal stimulasi dalam rentang yang luas
untuk memfasilitasi penelitian terapi elektrik arus mikro
2. Sinyal stimulasi berupa sumber arus listrik terkendali tegangan sehingga
dapat diatur nilai kuat arusnya dan selama memberikan stimulasi, arus
listrik tidak berubah jika terjadi perubahan hambatan tubuh
3. Terdapat tampilan parameter besaran sinyal yang sedang dikeluarkan
berupa arus listrik, frekuensi, dan lebar pulsa
4. Perangkat stimulasi arus mikro dapat dimodifikasi secara software dengan
menuliskannya kepada mikrokontroler untuk menyesuaikan sinyal
stimulasi sesuai yang dibutuhkan
5. Mempunyai sistem pengaman atas batas-batas maksimum terapi arus
mikro, yang meliputi arus listrik maksimum, arus listrik rata-rata
maksimum, dan muatan listrik maksimum
6. Pengembangan sistem menggunakan komponen yang tersedia secara lokal
7. Bersifat portabel sehingga dapat digunakan dimana saja
8. Mudah dalam penggunaannya karena hanya menggunakan 7 tombol dan
disertai dengan petunjuk penggunaan
9. Sistem yang dikembangkan bersifat sistem terbuka (Open System)
sehingga dapat dikembangkan oleh siapa saja untuk menunjang
perkembangan metode terapi elektrik arus mikro.
23
Pengembangan OpenMCS dan µStimS dilakukan dalam tiga tahap yaitu:
1. Pengembangan fungsi sinyal OpenMCS, meliputi perancangan dan
realisasi bagian utama OpenMCS dan ujicoba fungsi OpenMCS dalam
membangkitkan sinyal arus listrik secara sederhana yang dapat
dikendalikan oleh pengguna
2. Pengembangan sistem proteksi OpenMCS dan µStimS, meliputi
perancangan dan realisasi modul sistem proteksi secara hardware pada
OpenMCS dan penambahan algoritma proteksi dan peringatan pada
program µStimS
3. Penyempurnaan OpenMCS dan µStimS, meliputi penyempurnaan hasil-
hasil ujicoba sebelumnya yaitu ujicoba fungsi sinyal dan ujicoba sistem
proteksi
3.2 PERANCANGAN DAN IMPLEMENTASI ALAT STIMULASI OpenMCS
Bagian ini akan menguraikan secara rinci proses perancangan dan implementasi
alat stimulasi arus mikro OpenMCS. Seperti telah dijelaskan di awal,
pengembangan OpenMCS meliputi tiga tahap yaitu:
1. Tahap pengembangan fungsi sinyal
2. Tahap pengembangan sistem proteksi, dan
3. Tahap penyempurnaan sistem.
3.2.1 PERANCANGAN DAN IMPLEMENTASI FUNGSI SINYAL OpenMCS
Perancangan fungsi sinyal OpenMCS bertujuan untuk menghasilkan prototip alat
stimulasi arus mikro yang mampu membangkitkan sinyal arus listrik secara benar.
Kriteria-kriteria yang dipertimbangkan pada perancangan ini adalah sebagai
berikut.
24
1. Alat mampu mengeluarkan sinyal berupa sumber arus yang dapat
dikendalikan oleh tegangan dari suatu konverter tegangan ke arus listrik
2. Besar tegangan yang mengendalikan arus listrik merupakan suatu
konverter digital ke analog (DAC) dengan keluaran bipolar yang memiliki
ketelitian 8 bit untuk fase positif dan 8 bit untuk fase negatif.
3. Masukan rangkaian DAC menggunakan keluaran dari mikrokontroler PIC
16F877A dengan portC untuk mengatur tegangan positif dan portD untuk
mengatur tegangan negatif
4. Terdapat masukan dari pengguna menggunakan saklar tekan push on
untuk mengatur nilai kuat arus listrik, frekuensi, dan lebar pulsa sinyal
yang dihasilkan
5. Terdapat tampilan parameter sinyal yang sedang dikeluarkan oleh alat
Berdasarkan pertimbangan-pertimbangan di atas, hasil rancangan fungsi sinyal
OpenMCS menjadi seperti pada gambar 3.2.
Gambar 3. 2 Diagram blok perancangan fungsi sinyal OpenMCS
25
Pada rancangan rangkaian fungsi sinyal OpenMCS, terdapat tiga modul utama
yaitu:
1. Rangkaian pemroses data sinyal terapi
2. Rangkaian DAC 16 bit dengan keluaran 2 fase
3. Rangkaian konverter tegangan ke arus listrik
3.2.1.1 Rangkaian pemroses data sinyal terapi
Rangkaian pemroses data sinyal terapi adalah bagian yang berfungsi
menerjemahkan data sinyal yang ada pada program µStimS. Rangkaian ini
menggunakan mikrokontroler PIC 16F877A yang difungsikan untuk
membangkitkan tegangan keluaran 8 bit pada port C dan 8 bit pada port D. Port C
berfungsi sebagai output pembentuk sinyal fase positif, sedangkan port D
berfungsi sebagai pembentuk sinyal fase negatif. Keluaran dari port C dan port D
yang telah ditetapkan sebagai output selanjutnya dihubungkan ke rangkaian DAC
16 bit dengan keluaran 2 fase. Kerja pemrosesan data sinyal terapi merupakan
interaksi antara software µStimS dan internal mikrokontroler PIC 16F877A itu
sendiri.
3.2.1.2 Rangkaian DAC 16 bit dengan keluaran 2 fase
Dalam rancangan fungsi sinyal OpenMCS, rangkaian DAC dibuat dengan
menggunakan penguat penjumlah dan pengurang tegangan berbasis Op-Amp
seperti pada gambar 3.3. Rangkaian DAC menggunakan penguat penjumlah dan
pengurang bekerja dengan menjumlahkan arus listrik yang melalui tiap-tiap
resistor yang terhubung pada V+ dan V- Op-Amp. Nilai resistor disusun
menggunakan pola 20 hingga 27 kali nilai resistor terkecil. Dengan demikian
proses penjumlahan dan pengurangan akan berlangsung seperti cara kerja DAC 8
bit.
26
Rangkaian DAC seperti itu mempunyai respon frekuensi yang sangat tinggi dan
harganya murah. Tetapi rangkaian ini memiliki kelemahan pada keakuratan
resistor yang digunakan dan tidak praktis karena menggunakan banyak
komponen. Dengan metode penjumlahan arus listrik yang pada tiap-tiap resistor
mempunyai tingkat kesalahan 1%, hasil keluaran yang didapat dapat mengalami
kesalahan mencapai 3,5%.
Gambar 3. 3 Skema rangkaian DAC menggunakan penguat penjumlah dan pengurang
3.2.1.3 Rangkaian konverter tegangan ke arus listrik
Konverter tegangan ke arus listrik merupakan rangkaian yang memberikan
keluaran arus listrik yang dikendalikan oleh tegangan masukan. Rangkaian ini
disebut juga sebagai penguat transkonduktansi. Gambar 3.4 menunjukkan skema
rangkaian konverter tegangan ke arus listrik yang digunakan untuk
mengendalikan arus listrik dengan rentang yang lebar.
R235k
R281k
R252k4
R2210k
R2120k
R2040k
R1940k
R17100k
3
26
74
15
U
LF411
R32470
R29470
R95k
R141k
R112k4
R810k
R720k
R640k
R540k
R3100k
C
56p
R26500R27500
R24100
R1840k
R1640k
R1520k
R12500R13500
R10100
R440k
R240k
R120k
R30220
R31220
27
Rangkaian konverter tegangan ke arus listrik seperti pada gambar 3.4 dipilih
karena untuk spesifikasi alat stimulasi arus mikro membutuhkan sistem yang
mampu mengendalikan arus listrik secara presisi dalam rentang yang lebar, yaitu
dari 0 µA hingga 1000 µA. Rangkaian pada gambar 3.4 bekerja dengan
memberikan tegangan referensi yang diberikan pada input rangkaian. Tegangan
referensi ini merupakan tegangan keluaran dari rangkaian DAC. Dengan adanya
tegangan referensi pada titik V+ Op-Amp, maka tegangan pada V- Op-Amp juga
akan bernilai sama dengan tegangan referensi. Resistor R1 merupakan penentu
nilai arus yang mengalir dari Output Op-Amp ke ground. Dengan demikian
berapapun nilai RB, yaitu hambatan tubuh, yang diberikan, arus listrik yang
mengalir akan selalu tetap selama tegangan output Op-Amp yang diperlukan
untuk memberikan arus listrik yang diinginkan tidak melebihi nilai tegangan catu
daya Op-Amp dikurangi 3,8 volt.
Gambar 3. 4 Skema rangkaian konverter tegangan ke arus listrik
Realisasi rangkaian konverter tegangan ke arus listrik yang digunakan pada
ujicoba fungsi sinyal OpenMCS adalah menggunakan Op-Amp OPA 2544 yang
mampu memberikan keluaran hingga 31,2 volt. OPA 2544 merupakan dual Op-
Amp yang terdiri dari Op-Amp A dan B. Selain itu OPA 2544 mempunyai slew
3
21
84
U1:A
OPA2544
R11k
RB25kC
56pF
InputR2100
+VCC-VCC
Out
28
rate sebesar 8 V/µs dan dilengkapi dengan thermal shutdown protection yang
secara otomatis akan melakukan shutdown fungsi apabila temperaturnya melebihi
155 °C. Dalam rangkaian konverter tegangan ke arus listrik, hanya dipakai
OPA2544 bagian A, sedangkan bagian B digunakan sebagai bagian dari rangkaian
sistem proteksi. Untuk menghasilkan arus listrik dari 0 µA hingga 1000 µA
dengan tegangan masukan 0 V hingga 1 V digunakan perhitungan sebagai berikut.
(3.1)
(3.2)
(3.3)
Pada realisasinya, Op-Amp OPA 2544 diberi tegangan catu daya sebesar ±34,5
volt, sehingga tegangan keluaran maksimum yang dapat diberikan adalah 30,7
volt. Jika arus keluaran sudah ditentukan maksimum 1 mA dari nilai tegangan
masukan maksimum 1 volt dan nilai R1 sebesar 1 kΩ, maka nilai RB harus bernilai
kurang dari 30,7 kΩ supaya arus listrik yang dikeluarkan tidak mengalami
penurunan. Nilai hambatan 30,7 kΩ ini sudah jauh melebihi batas nilai hambatan
permukaan kulit tubuh manusia dalam kondisi basah yang berkisar antara 2 kΩ
hingga 20 kΩ.
3.2.2 PERANCANGAN DAN IMPLEMENTASI SISTEM PROTEKSI OpenMCS
Rangkaian sistem proteksi merupakan rangkaian yang berfungsi untuk melindungi
rangkaian dari kerusakan sekaligus melindungi pasien dari bahaya yang mungkin
terjadi akibat kesalahan dalam penggunaan alat. Sistem proteksi disusun
menggunakan Op-Amp OPA2544 bagian B yang berfungsi sebagai komparator.
Cara kerja rangkaian sistem proteksi terletak pada fungsi komparator yang
membandingkan tegangan masukan yang berasal dari input (Vo konverter V ke I)
dan tegangan masukan dari keluaran rangkaian DAC. Dengan penyesuaian
tegangan yang dilakukan oleh R4 dan R5 serta yang dilakukan oleh penguat
29
noninverter U1, maka sistem proteksi mengharapkan tegangan V+ pada OPA2544
selalu lebih kecil daripada tegangan V- OPA2544. Kesalahan didefinisikan apabila
terjadi keadaan tegangan V+ lebih dari V- pada OPA2544. Apabila keadaan ini
terjadi, maka tegangan keluaran OPA2544 akan naik menjadi 30,7 volt. Tegangan
ini selanjutnya akan mengaktifkan IC 4066 yang berfungsi sebagai saklar
elektronik yang menghubungkan port B.1 dan port B.2 mikrokontroler PIC
16F877A ke ground. Proses ini akan menyebabkan program µStimS melakukan
interupsi yang memaksa program µStimS untuk mengulang pelaksanaan tes
elektroda. Skema rangkaian sistem proteksi ditampilkan pada gambar 3.5.
Gambar 3. 5 Skema rangkaian sistem proteksi
3.2.3 PENYEMPURNAAN SISTEM OpenMCS
Tahap ketiga dari pengembangan alat stimulasi arus mikro OpenMCS adalah
penyempurnaan sistem. Setelah melalui realisasi fungsi sinyal dan sistem proteksi,
beberapa kekurangan yang didapatkan dari hasil ujicoba dua tahap sebelumnya,
disempurnakan pada tahap ini. Untuk perangkat kerasnya (OpenMCS), modul
yang harus disempurnakan adalah pada rangkaian DAC 16 bit dengan keluaran 2
fase.
5
67
84
U2:B
OPA2544
R433k
R55k1
X 11Y10
C12
U3:B4066
R75k1
R827k
X1 Y 2
C13
U3:A4066
3
26
74 1 5
U1
LF411
R21k
R33k3C
56pF
R6100
+35V -35V
R11k
Dari DAC
+VCC
Input
Ke PortB.1
Ke PortB.2
30
Pada pengembangan fungsi sinyal, rangkaian DAC yang digunakan adalah
menggunakan penguat penjumlah dan pengurang. Rangkaian ini mempunyai
kesalahan mencapai 3,5%. Padahal kunci untuk membangkitkan sinyal arus listrik
secara tepat adalah pada ketepatan rangkaian DAC dalam mengubah data
tegangan digital menjadi tegangan analog sebelum dikonversi menjadi arus listrik.
Dengan demikian, untuk meningkatkan performa sistem, maka rangkaian DAC
perlu disempurnakan.
Penyempurnaan rangkaian DAC dilakukan dengan mengganti susunan resistor
yang terhubung ke penguat penjumlah dan pengurang dengan komponen IC
DAC0808. Rangkaian DAC 16 bit dengan keluaran 2 fase terdiri dari dua buah
komponen DAC 8 bit DAC0808 yang pada keluarannya dihubungkan ke sebuah
Op-Amp LF411 yang disusun sebagai penguat penjumlah dan pengurang.
Rangkaian DAC yang diimplementasikan pada penyempurnaan OpenMCS
adalah sebagaimana yang ditampilkan pada gambar 3.6.
Komponen DAC 0808 adalah suatu konverter digital ke analog 8 bit dengan
keluaran arus listrik yang dapat bekerja secara cepat dengan slew rate arus 8
mA/µs dan memiliki keakuratan yang tinggi dengan tingkat kesalahan maksimum
± 0,19 %. Prinsip kerja DAC 0808 dalam mengkonversi sinyal digital ke analog
adalah berdasarkan formula 3.4.
dimana (3.4)
31
Gambar 3. 6 Skema rangkaian DAC 16 bit dengan keluaran 2 fase
Pada rangkaian DAC ini, RREF adalah R3 dan R6 yang masing-masing bernilai 10
kΩ. Dengan demikian pada saat maksimum dengan VREF = +VCC yaitu sebesar 5
volt, nilai A1 sampai A8 akan bernilai 1 yang akan menyebabkan Io bernilai 0,5
mA.
Arus listrik keluaran DAC 0808 selanjutnya masuk ke dalam penguat penambah
dan pengurang berbasis Op-Amp LF411. LF411 merupakan Op-Amp yang
mempunyai slew rate yang tinggi yaitu 10 V/µs. Dalam kerjanya sebagai penguat
penambah dan pengurang, Op-Amp bekerja mirip dengan penguat diferensial,
yaitu menghitung selisih antara tegangan yang masuk ke V- Op-Amp dan
tegangan yang masuk ke V+ Op-Amp. Dengan prinsip kerja tersebut tegangan
keluaran Op-Amp adalah sesuai dengan formula 3.5.
(3.5)
Dengan demikian, tegangan maksimum yang dapat dikeluarkan oleh Op-Amp
LF411 pada rangkaian DAC ini adalah ± 1 volt. Penambahan kapasitor C3 sebesar
56 pF hanya bertujuan untuk memperhalus sinyal keluaran.
Bagian-bagian utama penyusun OpenMCS meliputi rangkaian pemroses data
sinyal terapi, rangkaian DAC dengan keluaran 2 fase, rangkaian konverter
A26
VREF+ 14
VEE 3
A15
IOUT 4
A37 A48 A59 A610 A711 A812
VREF- 15
COMP 16
U1
DAC0808
A26
VREF+ 14
VEE 3
A15
IOUT 4
A37 A48 A59 A610 A711 A812
VREF- 15
COMP 16
U2DAC0808
R510k
R210k
3
26
74 1 5
U3
LF411
R4470
R1470
R72k
C1100nF
C3
56pF
C2100nF
R610k
R310k
R82k
Out
+VCC-VCC
Dari Port C
Dari Port D
32
tegangan ke arus listrik, dan rangkaian sistem proteksi. Bagian-bagian lain
merupakan bagian pendukung, yang meliputi display dan masukan pengguna.
Untuk menampilkan parameter sinyal arus mikro yang dikeluarkan oleh
OpenMCS digunakan LCD 16 x 2. Sedangkan sebagai interface antara alat
OpenMCS dan pengguna digunakan 7 buah saklar tekan, masing-masing
berfungsi untuk:
- Menaikkan amplitudo
- Menurunkan amplituo
- Menaikkan frekuensi
- Menurunkan frekuensi
- Menaikkan lebar pulsa
- Menurunkan lebar pulsa
- Melakukan pemilihan sinyal stimulasi
Gambaran realisasi OpenMCS setelah disempurnakan ditunjukkan pada gambar
3.7. Skema rangkaian OpenMCS ditampilkan pada lampiran A.2.
Gambar 3. 7 Diagram blok realisasi OpenMCS
33
Gambar 3. 8 Foto hasil realisasi OpenMCS
3.3 PERANCANGAN SINYAL STIMULASI ARUS MIKRO
Berdasarkan referensi dari berbagai sumber, sinyal stimulasi arus mikro
mempunyai bentuk yang lebih sederhana daripada variasi bentuk sinyal stimulasi
yang lain. Pada metode stimulasi seperti TENS, pulsa yang berikan merupakan
pulsa impuls (pulsa paku) yang dalam modulasinya dapat digabungkan dengan
berbagai bentuk sinyal.[22] Pada metode stimulasi arus mikro, bentuk sinyal tidak
sebanyak pada TENS karena stimulasi arus mikro tidak bekerja dengan pulsa
paku, melainkan menggunakan pulsa dengan durasi (lebar pulsa) yang panjang
hingga mencapai 1 detik. Dengan demikian, bentuk pulsa yang bermacam-macam
tidak terlalu berpengaruh pada stimulasi arus mikro. Parameter penting yang
dipertimbangkan pada stimulasi arus mikro adalah sebagai berikut.
• Polaritas sinyal (unipolar, bipolar)
• Amplitudo (arus listrik maksimum)
• Frekuensi
• Lebar pulsa
• Arus listrik rata-rata
• Muatan listrik rata-rata
• Pola kenaikan sinyal[4,6,8,9,10,12,13]
34
Dengan memperhatikan parameter-parameter di atas, peneliti memutuskan untuk
merancang sinyal-sinyal utama stimulasi arus mikro yaitu:
1. Persegi bipolar ½ gelombang berdelay (persegi 1)
2. Persegi bipolar berdelay (persegi 2)
3. Persegi bipolar penuh (persegi 3)
4. Ramp bipolar ½ gelombang berdelay (ramp 1)
5. Ramp bipolar berdelay (ramp 2)[4,6,8,9,10,12,13]
Kelima bentuk sinyal tersebut merupakan sinyal-sinyal bipolar karena dalam
elektroterapi, mayoritas jenis sinyal yang baik digunakan adalah yang berjenis
bipolar.[4,6,8] Tampilan bentuk – bentuk sinyal yang direalisasikan dalam
penelitian ini akan ditunjukkan pada uraian realisasi program µStimS. Selain
bentuk sinyal stimulasi, parameter rancangan lain yang ditetapkan oleh peneliti
dalam perancangan sinyal stimulasi arus mikro adalah sebagai berikut.
1. Amplitudo, berkisar antara 0 hingga 1000 µA
2. Frekuensi, berkisar antara 0,25 hingga 500 Hz
3. Lebar pulsa, berkisar antara 1 hingga 1000 ms
3.4 PERANCANGAN DAN IMPLEMENTASI PROGRAM STIMULASI µStimS
Program stimulasi arus mikro µStimS merupakan program yang berfungsi untuk
mengendalikan segala sesuatu yang berhubungan dengan perangkat stimulasi arus
mikro secara software. Fungsi-fungsi tersebut meliputi:
• Memberikan penjelasan jenis sinyal dan parameternya pada display
• Menyediakan data sinyal terapi arus mikro
• Menjalankan fungsi interupsi
• Sebagai algoritma sistem proteksi secara perangkat lunak
35
Pemrograman algoritma µStimS dilakukan dengan menggunakan software
MicroCode Studio – PICBASIC PRO versi 2.46 yang bersifat bebas untuk tujuan
nonkomersial. Program µStimS terdiri dari program utama dan program
pembangkit sinyal. Program utama berfungsi untuk:
• Mengendalikan program-program pembangkit sinyal melalui interupsi
eksternal
• Mengatur tampilan informasi pada LCD
• Mengatur tampilan parameter sinyal pada LCD
• Mengatur tampilan peringatan kepada pengguna pada LCD
• Melakukan perhitungan parameter sinyal sebagai sistem proteksi secara
software
Program Utama
Program Pembangkit
Sinyal Persegi 1
Program Pembangkit
Sinyal Persegi 2
Program Pembangkit
Sinyal Persegi 3
Program Pembangkit
Sinyal Ramp 1
Program Pembangkit
Sinyal Ramp 2
Gambar 3. 9 Struktur program µStimS
36
Gambar 3. 10 Diagram alir program µStimS
Gambar 3.8 menunjukkan struktur program µStimS. Sedangkan realisasi program
µStimS bekerja berdasarkan algoritma yang diilustrasikan pada gambar 3.9.
Penjelasan akan kerja tiap bagian pada algoritma ini akan dijelaskan secara
langsung menggunakan daftar program yang diimplementasikan sebagai program
µStimS. Deretan penulisan program µStimS secara lengkap disertakan pada
lampiran A.4.
37
Penjelasan masing-masing bagian dari program µStimS adalah sebagai berikut.
LCDOUT $FE,1,"TERAPI ELEKTRIK" LCDOUT $FE,$c0,"ARUS MIKRO" PAUSE 1500
LCDOUT adalah pernyataan pda PIC Basic Pro untuk menampilkan karakter ke
dalam LCD. Sedangkan PAUSE adalah pernyataan yang digunakan untuk
melakukan penundaan (delay) dalam hitungan milidetik. Tiga baris pernyataan di
atas berfungsi untuk menampilkan tulisan “TERAPI ELEKTRIK” pada baris
pertama LCD dan “ARUS MIKRO” pada baris kedua LCD. Keduanya
ditampilkan selama 1,5 detik.
amp VAR WORD arus VAR WORD A1 VAR WORD A2 VAR WORD A3 VAR WORD period VAR WORD frekm VAR WORD F1 VAR WORD F2 VAR WORD F3 VAR WORD Fmod1 VAR WORD Fmod2 VAR WORD duty VAR WORD interval VAR WORD Q1 VAR WORD Q2 VAR WORD Q3 VAR WORD muatan VAR WORD irata VAR WORD koreksi VAR WORD pilih VAR BYTE char VAR BYTE ramp VAR BYTE i VAR BYTE sini VAR WORD LCDduty VAR WORD LCDinterval VAR WORD ampnaik VAR portB.0 ampturun VAR portB.1 freknaik VAR portB.4 frekturun VAR portB.5 dutynaik VAR portB.6 dutyturun VAR portB.7
38
Perintah VAR berfungsi untuk mendefinisikan suatu variabel. Pernyataan “amp
VAR WORD” bermaksud bahwa didefinisikan suatu variabel numerik bernama
‘amp’ dengan tipe WORD, yaitu suatu jenis variabel yang mampu menyimpan
data numerik hingga 65535. Perintah VAR juga dapat digunakan untuk mmberi
nama lain atau ‘alias’ dari suatu variabel atau port tertentu. Pernyataan “ampnaik
VAR portB.0” berfungsi untuk mendefinisikan variabel dengan nama ‘ampnaik’
yang menyatakan nama lain dari portB.0 mikrokontroler.
OPTION_REG = %01001000
Pernyataan OPTION_REG merupakan salah satu nama register yang dimiliki oleh
mikrokontroler PIC, bukan termasuk bahasa PIC Basic Pro. Tetapi PIC Basic Pro
dapat secara langsung memanggil fungsi register-register yang dimiliki oleh
mikrokontroler PIC yang didukungnya. Register OPTION_REG merupakan
register baca tulis yang mengandung berbagai bit kendali untuk menyetel
prescaler TMR0 / postscaler WDT0, interupsi INT eksternal, TMR0 dan pull-up
lemah pada PORTB. Penyetelan OPTION_REG = %01001000 berfungsi untuk
mengaktifkan bit aktivasi pull-up pada PORTB dan menugaskan prescaler kepada
WDT.
trisB = %11110111 trisC = 0 trisD = 0
Perintah ‘tris’ juga merupakan nama register yang terdapat pada mikrokontroler
PIC. ‘Tris’ harus diikuti dengan nama port dan penulisannya harus digabung.
’TrisB’ digunakan untuk mengatur portB sebagai input atau output. Dengan
mengisikan nilai ‘0’ berarti portB diatur sebagai output. Jika bernilai ‘1’ berarti
portB diatur sebagai input. Untuk mengatur secara lebih spesifik, dapat dituliskan
dalam bentuk binernya. Pernyataan ‘trisB = %11110111’ berarti portB diatur
sebagai input, kecuali portB.3 saja yang diatur sebagai output.
amp = 27 interval = 100 duty = 10 pilih = 0
39
portC=0 portD=0
Pernyataan-pernyataan di atas berfungsi untuk mengisikan nilai pada suatu
variabel. Pernyataan ‘amp = 50’ artinya bahwa variabel ‘amp’ diisi dengan nilai
desimal 50. Pernyataan ‘portC = 0’ digunakan untuk mengisikan bit 0 pada portC,
yang menyatakan bahwa portC bernilai ‘low’.
ON INTERRUPT GOTO myint .....
RESUME
Pernyataan ‘ON INTERRUPT’ digunakan untuk menangani interupsi
mikrokontroler menggunakan subrutin PIC Basic Pro. Penggunaan ‘ON
INTERRUPT’ dengan subrutin PIC Basic Pro harus diakhiri dengan pernyataan
‘RESUME’ pada akhir subrutin. Apabila terjadi interupsi, setelah satu pernyataan
yang sedang dijalankan selesai, maka secepat mungkin program akan melompat
ke interrupt handler pada label (pada pernyataan di atas labelnya bernama
‘myint’). Begitu interrupt handler selesai dilaksanakan, pernyataan ‘RESUME’
mengirim program kembali kepada tempat terjadinya interupsi.
INTCON = %00100000
INTCON juga merupakan nama register yang terdapat pada mikrokontroler PIC.
INTCON adalah register baca tulis yang mengandung berbagai bit bendera dan
aktivasi untuk register TMR0, perubahan port RB, dan interupsi pin RB0/INT
eksternal. Penyetelan ‘INTCON = %00100000’ bermaksud untuk menonaktifkan
semua jenis interupsi kecuali interupsi TMR0. Penyetelan ini berhubungan dengan
penyetelan sebelumnya yaitu yang menggunakan OPTION_REG.
'main menu menu: LCDOUT $FE,1,"TES ELEKTRODA" PAUSE 1000 portC = 120 PAUSE 1 portC = 0 LCDOUT $FE,1,"TES ELEKTRODA" LCDOUT $FE,$c0,"SUKSES" PAUSE 1000
40
LCDOUT $FE,1,"SILAHKAN PILIH" LCDOUT $FE,$c0,"SINYAL TERAPI..." tunggu: GOTO tunggu
Program di atas merupakan program pengantar sekaligus program untuk
melakukan pemeriksaan awal atas pemasangan elektroda sebelum terapi dimulai.
Tes elektroda dilakukan dengan memberikan pulsa persegi dengan amplitudo 392
µA selama 1 milidetik kepada pasien untuk menguji ketepatan pemasangan
elektroda ke tubuh pasien. Program ini bekerjasama dengan sistem proteksi yang
apabila sistem proteksi menemui arus listrik yang diberikan kurang dari 392 µA,
maka akan terjadi interupsi yang akan memaksa program untuk kembali kepada
program menu. Apabila hasil pengujian elektroda menyatakan berhasil, maka
program akan dilanjutkan kepada pemilihan sinyal terapi. Pada tahap ini program
akan menunggu sampai pengguna melakukan interupsi pada tombol ‘select’ untuk
memilih jenis sinyal terapi yang diinginkan.
'Program utama loop: 'menghitung nilai arus listrik A1 = 3 * amp A2 = 9 * amp / 10 A3 = 2 * amp / 100 arus = A1 + A2 + A3 'dalam uA' 'menghitung nilai periode period = LCDduty+LCDinterval 'dalam ms' 'menghitung nilai frekuensi F1 = 1000 / period Fmod1 = 1000 // period F2 = 10 * Fmod1 / period Fmod2 = 10 * Fmod1 // period F3 = 10 * Fmod2 / period frekm = 1000*F1 + 100*F2 + 10*F3 'dalam mHz' IF duty <= 257 THEN Q1 = amp * duty / 10 * 3 Q2 = amp * duty / 10 * 9 / 10 Q3 = amp * duty / 10 * 2 / 100 muatan = (Q1 + Q2 + Q3)/4 ELSE Q1 = duty / 4 * amp / 10 * 3 Q2 = duty / 4 * amp / 10 * 9 / 10 Q3 = duty / 4 * amp / 10 * 2 / 100 muatan = Q1 + Q2 + Q3
41
ENDIF IF muatan > 4675 THEN portC = 0 portD = 0 LCDOUT $FE,1,"MUATAN LISTRIK" LCDOUT $FE,$c0,"MELEBIHI 187 uC" PAUSE 1000 GOTO loop ENDIF irata = muatan * 10 / period * 4 'koreksi digital irata = irata + 6 IF irata > 300 THEN portC = 0 portD = 0 LCDOUT $FE,1,"ARUS RATA-RATA" LCDOUT $FE,$c0,"MELEBIHI 300 uA" PAUSE 1000 GOTO loop ENDIF LCDOUT $FE,1,"I=", DEC arus, "uA" LCDOUT $FE,$c0,"f=", DEC F1, ",", DEC F2, DEC F3, "Hz,t=", DEC LCDduty, "ms"
...................(Program sinyal terapi) GOTO loop
Petikan program di atas adalah bagian dari program utama. Pada bagian awal
program utama, terdapat beberapa perhitungan parameter-parameter sinyal terapi
arus mikro yang akan dibangkitkan oleh masing-masing program di atas. Variabel
‘arus’ adalah variabel yang digunakan untuk menunjukkan nilai yang sebenarnya
dari arus listrik yang dikeluarkan oleh alat stimulasi OpenMCS. Ia mengkonversi
nilai variabel ‘amp’ yang berkisar antara 0 hingga 255 ke dalam besaran arus
listrik nyata yang diberikan yaitu antara 0 hingga 1000 µA.
Untuk menghitung nilai arus listrik, frekuensi, lebar pulsa, muatan listrik, dan arus
listrik rata-rata secara tepat, digunakan perhitungan menggunakan modulus dan
pemecahan perhitungan. Hal ini disebabkan karena PICBasic tidak mengenal jenis
bilangan floating point dan jumlah bilangan maksimum yang dapat dioperasikan
adalah 65535.
42
Pada program ini juga dilakukan perhitungan nilai muatan listrik dan arus listrik
rata-rata sebagai bagian dari sistem pengaman secara software. Untuk setiap
sinyal stimulasi yang dibangkitkan, nilai muatan listrik tidak diperkenankan
melebihi 187 µC sedangkan nilai arus listrik rata-rata tidak diperkenankan
melebihi 300 µA. Perhitungan nilai muatan listrik dan nilai arus listrik rata-rata
diberikan pada persamaan 3.6 dan 3.7.
. (3.6)
(3.7)
dimana: q = muatan listrik (dalam µC) I = kuat arus listrik (µA) τ = lebar pulsa (ms)
Ī = kuat arus listrik rata-rata (µA)
T = periode sinyal (ms)
'Program pulsa persegi 1 WHILE pilih = 1 portC = amp PAUSE duty portC = 0 PAUSE interval portD = amp PAUSE duty portD = 0 PAUSE interval WEND
Program pulsa persegi 1 merupakan program yang berfungsi untuk
membangkitkan pulsa persegi jenis kesatu. Rancangan pulsa persegi jenis kesatu
berbentuk seperti yang ditunjukkan pada gambar 3.10.
Pada sinyal persegi 1, parameter yang dikendalikan adalah amplitudo, frekuensi,
dan lebar pulsa persegi 1. Program pulsa persegi 1 bekerja dengan menjadikan
portC dan portD bernilai antara 0 hingga 255 secara bergantian bergantung pada
besarnya amplitudo yang diperlukan. Pembangkitan ini dilakukan terus di dalam
suatu loop hingga terjadi suatu interupsi.
43
Gambar 3. 11 Bentuk sinyal persegi 1 dalam perancangan
'Program pulsa persegi 2 WHILE pilih = 2 portC = amp PAUSE duty portC = 0 portD = amp PAUSE duty portC = 0 portD = 0 PAUSE interval WEND
Program pulsa persegi 2 membangkitkan sinyal persegi dalam bentuk yang
berbeda dengan pulsa persegi 1. Rancangan pulsa persegi 2 mempunyai bentuk
seperti yang ditunjukkan pada gambar 3.11.
Gambar 3. 12 Bentuk sinyal persegi 2 dalam perancangan
44
Pada sinyal persegi 2, parameter yang dikendalikan adalah amplitudo, frekuensi,
dan lebar pulsa persegi 2.
'Program pulsa persegi 3 WHILE pilih = 3 portC = amp PAUSE duty portC = 0 portD = amp PAUSE duty portD = 0 WEND
Program pulsa persegi 3membangkitkan pulsa persegi tanpa delay. Parameter
yang dikendalikan para pulsa persegi 3 adalah amplitudo dan lebar pulsa. Nilai
frekuensi yang dihasilkan akan mengikuti lebar pulsa yang diatur oleh pengguna.
Bentuk rancangan pulsa persegi 3 ditunjukkan pada gambar 3.12.
Gambar 3. 13 Bentuk sinyal persegi 3 dalam perancangan
'Program pulsa ramp 1 WHILE pilih = 4 FOR i = 1 TO 4 portC = amp * i / 4 PAUSE duty / 4 NEXT i portC = 0 PAUSE interval FOR i = 1 TO 4 portD = amp * i / 4 PAUSE duty / 4
45
NEXT i portD = 0 PAUSE interval WEND
Program pulsa ramp 1 adalah program berfungsi untuk yang membangkitkan
pulsa berbentuk anak tangga (ramp). Pulsa ramp 1 mempunyai bentuk seperti
yang ditampilkan pada gambar 3.13. Sama halnya dengan pulsa persegi, pulsa
ramp dapat diatur nilai amplitudo, frekuensi dan lebar pulsanya. Pada setiap pulsa
ramp terdapat 4 buah anak tangga. Nilai amplitudo yang ditentukan oleh
pengguna dibagi 4 sama besar oleh program pulsa ramp dan begitu pula dengan
nilai lebar pulsanya.
Gambar 3. 14 Bentuk sinyal ramp 1 dalam perancangan
'Program pulsa ramp 2 WHILE pilih = 5 FOR i = 1 TO 4 portC = amp * i / 4 PAUSE duty / 4 NEXT i portC = 0 FOR i = 1 TO 4 portD = amp * i / 4 PAUSE duty / 4 NEXT i portD = 0 PAUSE interval WEND
46
Program pulsa ramp 2 membangkitkan variasi lain dari pulsa ramp. Bentuk pulsa
ramp 2 adalah seperti yang ditampilkan pada gambar 3.14.
Gambar 3. 15 Bentuk sinyal ramp 2 dalam perancangan
'Program Interupsi DISABLE myint: WHILE ampnaik=0 OR ampturun=0 OR freknaik=0 OR frekturun=0 OR dutynaik=0 OR dutyturun = 0 OR portB.2=0 ....................... IF pilih = 0 THEN GOTO menu ELSE GOTO loop ENDIF WEND
Beberapa baris program di atas merupakan pengaturan awal program interupsi.
Program interupsi akan bekerja jika salah satu dari portB, selain portB.3, bernilai
0. Selanjutnya persyaratan ‘IF pilih = 0 THEN ...........END IF’ berfungsi untuk
mengarahkan program ke menu pada saat pemilihan sinyal terapi pertama kali
apabila yang ditekan bukan tombol ‘select’. Jika yang ditekan adalah tombol
‘select’ maka program akan berlanjut ke loop.
'Menaikkan amplitudo WHILE amp < 255 && ampnaik = 0 portC = 0 portD = 0 amp = amp + 1 PAUSE 100
47
WEND
Untuk menaikkan amplitudo, yang dilakukan adalah melakukan penambahan nilai
variabel ‘amp’. Penambahan dilakukan jika nilai variabel ‘amp’ kurang dari 255
dan pada saat ‘ampnaik’ atau portB.0 berstatus ‘low’. Pada saat melakukan
interupsi, portC dan portD harus dinolkan supaya tidak terjadi pemberian pulsa
berkepanjangan kepada pasien selama pengguna menekan tombol.
'Menurunkan amplitudo WHILE amp > 0 && ampturun = 0 && portB.2 != 0 portC = 0 portD = 0 amp = amp - 1 PAUSE 100 WEND
Untuk menurunkan amplitudo dilakukan penurunan nilai variabel ‘amp’. Proses
akan dilaksanakan jika nilai ‘amp’ lebih dari 0 dan ‘ampturun’ (portB.1) berstatus
‘low’. Penambahan syarat portB.2 tidak sama dengan nol diperlukan karena pada
program proteksi, gabungan portB.1 dan portB.2 ditetapkan untuk melakukan
reset program menuju menu utama.
'Menaikkan frekuensi WHILE frekm/10 < 50000 && freknaik = 0 portC = 0 portD = 0 WHILE frekm/10 < 50000 && freknaik = 0 IF interval < 100 THEN interval = interval - 1 PAUSE 500 ELSE IF interval < 1000 THEN interval = interval - 1 PAUSE 25 ELSE interval = interval - 10 PAUSE 10 ENDIF ENDIF WEND GOTO sinyal WEND
48
Pada program µStimS, variabel yang dapat diatur adalah variabel ‘amp’,
‘interval’, dan ‘duty’. Untuk menaikkan frekuensi, yang dilakukan oleh program
adalah dengan mengurangi nilai variabel ‘interval’. Proses pengurangan nilai
variabel ‘interval’ akan dilakukan jika nilai variabel ‘frekm’ kurang dari 500000.
Variabel ‘frekm’ adalah variabel yang menampung perhitungan frekuensi sinyal
dalam orde milihertz. Karena PICBasic hanya mampu menghitung hingga 65535
maka persyaratan dituliskan menjadi apabila nilai variabel “frekm”/10 kurang dari
50000 dengan menanggung resiko kesalahan akibat pembulatan hasil pembagian.
'Menurunkan frekuensi WHILE frekm > 250 && frekturun = 0 portC = 0 portD = 0 WHILE frekm > 250 && frekturun = 0 IF interval < 100 THEN interval = interval + 1 PAUSE 500 ELSE IF interval < 1000 THEN interval = interval + 1 PAUSE 25 ELSE interval = interval + 10 PAUSE 10 ENDIF ENDIF WEND GOTO sinyal WEND
Penurunan frekuensi dilakukan dengan menambah nilai variabel ‘interval’.
Penambahan nilai variabel ‘interval’ dilakukan jika nilai ‘frekm’ lebih dari 250.
Hal ini menunjukkan bahwa sinyal arus mikro yang dibangkitkan mempunyai
frekuensi minimum 0,25 Hz.
'Menaikkan duty cycle WHILE duty < 999 && dutynaik = 0 portC = 0 portD = 0 WHILE duty < 999 && dutynaik = 0 duty = duty + 1 PAUSE 100 WEND
49
GOTO sinyal WEND 'Menurunkan duty cycle WHILE duty > 1 && dutyturun = 0 portC = 0 portD = 0 WHILE duty > 1 && dutyturun = 0 duty = duty - 1 PAUSE 100 WEND GOTO sinyal WEND
Untuk menambah lebar pulsa, yang dilakukan oleh program adalah menambah
nilai variabel ‘duty’ sedangkan untuk mengurangi lebar pulsa, dilakukan
pengurangan nilai variabel ‘duty’. Variabel ‘duty’ akan bertambah jika nilai
variabel ‘duty’ kurang dari 999. Sedangkan syarat untuk menurunkan nilai
variabel ‘duty’ adalah ketika nilai variabel ‘duty’ lebih dari 1.
'Memilih bentuk gelombang WHILE portB.2 = 0 AND ampturun != 0 IF pilih = 5 THEN pilih = 0 ENDIF pilih = pilih + 1 LCDOUT $FE,1,"SINYAL" LCDOUT $FE,$c0 sinyal: SELECT CASE pilih CASE 1 'perhitungan dan koreksi LCDduty = duty + 1 LCDinterval = 2*interval FOR i = 0 TO 10 LOOKUP i,["PERSEGI 1 "],char LCDOUT char NEXT i CASE 2 'perhitungan dan koreksi LCDduty = duty + 1 LCDinterval = interval FOR i = 0 TO 10 LOOKUP i,["PERSEGI 2 "],char LCDOUT char NEXT i CASE 3 'perhitungan dan koreksi
50
LCDduty = duty + 1 LCDinterval = 0 FOR i = 0 TO 10 LOOKUP i,["PERSEGI 3 "],char LCDOUT char NEXT i CASE 4 'perhitungan dan koreksi LCDduty = duty + 8 LCDinterval = 2*interval FOR i = 0 TO 10 LOOKUP i,["RAMP 1 "],char LCDOUT char NEXT i CASE 5 'perhitungan dan koreksi LCDduty = duty + 8 LCDinterval = interval FOR i = 0 TO 10 LOOKUP i,["RAMP 2 "],char LCDOUT char NEXT i END SELECT PAUSE 1000 WEND
Program di atas adalah program untuk melakukan pemilihan sinyal terapi.
Program akan melaksanakan fungsi pemilihan sinyal jika portB.2 dalam status
‘low’. Penambahan persyaratan bahwa ‘ampturun’ (portB.1) tidak sama dengan
nol juga dikarenakan bahwa kombinasi antara portB.1 dan portB.2 dipergunakan
sebagai interupsi otomatis pada program proteksi. Pada program pemilihan sinyal
terapi, terdapat enam pilihan sinyal yang masing-masing akan mengacu pada
program pembangkitan sinyal yang bersangkutan. Ketika program pemilihan
sinyal dijalankan, terjadi proses penambahan nilai variabel ‘pilih’ yang berfungsi
sebagai penanda kategori sinyal yang dipilih. Pada masing-masing kelompok
sinyal, terdapat beberapa perhitungan yang akan digunakan dalam tampilan di
LCD.
'Peringatan keamanan WHILE portB.1 = 0 AND portB.2 = 0 portC = 0 portD = 0 SOUND portA.5,[100,10]
51
LCDOUT $FE,1,"ADA KESALAHAN!" PAUSE 1000 GOTO menu WEND
Program peringatan keamanan bekerja secara otomatis jika portB.1 dan portB.2
berstatus ‘low’. Pengubahan status ini dilakukan secara hardware oleh sistem
proteksi secara otomatis. Apabila terjadi kesalahan, maka program akan memaksa
semua pin pada portC dan portD ke status ‘low’ dan menampilkan peringatan
bahwa telah terjadi kesalahan pada tampilan LCD. Proses ini akan berulang terus-
menerus sampai kesalahan diperbaiki atau alat stimulasi OpenMCS dimatikan.
Top Related