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
20
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 Pengaturan arus listrik Bentuk gelombang
0 ‐ 1000 µA
10 ‐ 600 µA
11 ‐ 750 µA
Setiap saat 5 jenis (lihat rincian)
Setiap saat Persegi asimetrik bipolar
setiap saat Persegi konstan bipolar
0,25 ‐ 1000 Hz (tergantung jenis gelombang)
0,5; 1,5; 100 Hz
0,3 ‐ 400 Hz
Setiap saat
Setiap saat
setiap saat
1 ‐ 1000 ms
50% duty cycle
1 ‐ 250 ms
setiap saat
setiap saat
kontinyu
tidak ada 10, 20, 60 menit dan kontinyu
ada
tidak disebutkan
ada
ada
tidak ada
ada
ada
tidak ada
ada
ada
ada
ada
Petunjuk, arus listrik, frekuensi, lebar pulsa, peringatan keamanan pasien Baterai kering 12V rechargeable
Petunjuk, timer, simbol kapasitas baterai Baterai 9V disposable
Petunjuk, arus listrik, frekuensi, lebar pulsa, timer Baterai 9V disposable
tertutup
tertutup
$ 895,‐
$ 439,‐
2 3
4 5 6
Frekuensi Pengaturan frekuensi
11
Lebar pulsa Pengaturan lebar pulsa Pengaturan waktu terapi Pengaman arus listrik berlebih Pengaman muatan listrik berlebih Pengaman arus listrik rata‐rata berlebih
12
Tampilan LCD
7 8 9
10
13
Parameter tampilan
14
Catu daya
15
Sistem
16
Harga
terbuka Rp 800.000,‐ (biaya pembuatan)
21
30 menit
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.
22
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 hasilhasil 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.
23
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
24
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.
25
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%. R1
R2
R3
20k
40k
100k
40k
40k
R4
R5 R6 40k
R7 20k
R8 10k
R9 R10 R12 100
5k
R11 2k4
R14
R13 500
1k 500
R15
R16
R17
20k
40k
100k
40k
R19 U
40k
7 1
R20 3
40k
6
R21 R29
20k
R22
2 LF411
470
4 5
R18
C
10k
R23 R24 R26 100 R27 500
R30
5k
R25
56p
220
2k4
R28
R31
R32
220
470
1k 500
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
mengendalikan arus listrik dengan rentang yang lebar.
26
yang
digunakan
untuk
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.
-VCC
+VCC
8
U1:A R2 Input 100
3 1 2
Out
OPA2544 4
R1 1k
RB 25kC
56pF
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 OpAmp yang terdiri dari Op-Amp A dan B. Selain itu OPA 2544 mempunyai slew
27
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
28
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.
+35V
R4
-35V
Input 33k
U2:B
8
R5 5k1
5 7 6
+VCC
OPA2544 4
R6
R8 27k
1k
3
U1 6
R7
2
5k1
4 1 5
R2
13
LF411
C
1k
R3 C
3k3
1
X
C
R1 Dari DAC
12
7
100
Y
2
10
Y
U3:A
U3:B
4066
4066
X
11
Ke PortB.2
Ke PortB.1
56pF
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.
29
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)
30
C3 -VCC
+VCC
56pF
R7 U1 A8 A7 A6 A5 A4 A3 A2 A1
VEE COMP IOUT VREFVREF+
2k 3 16 4 15 14
100nF
R1
2
R2
470
R3
10k
12 11 10 9 8 7 6 5
A8 A7 A6 A5 A4 A3 A2 A1 DAC0808
6 3
Out
LF411
10k
DAC0808 Dari Port D
U3
C1
4 1 5
12 11 10 9 8 7 6 5
7
Dari Port C
VEE COMP IOUT VREFVREF+
3 16 4 15 14
C2 R4
R8 100nF
R5
470
R6
10k
2k
10k
U2
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
31
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
32
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]
33
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
34
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
35
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.
36
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
37
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
38
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
39
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
40
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.
41
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.
42
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
43
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
44
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
45
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
46
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
47
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
48
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
49
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]
50
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 terusmenerus sampai kesalahan diperbaiki atau alat stimulasi OpenMCS dimatikan.
51