RANCANG BANGUN NPWT (NEGATIVE PRESSURE WOUND THERAPY) UNTUK MEMPERCEPAT PENYEMBUHAN ULKUS DIABETIK BERBASIS MIKROKONTROLLER Design of Microcontroller Based-NPWT (Negative Pressure Wound Therapy) to Accelerate Diabetic Ulcer Healing. Repository - UNAIR REP
Lampiran 1 : Datasheet Sensor MPX 5050 Series
Lampiran 2 : Datasheet Arduino Duemilanove
Lampiran 3 : Schematic arduino duemilanove
Lampiran 4 : Datasheet diaphragm type dry vacuum pump DAP-12S ULVAC
Lampiran 5 : Datasheet transistor BD 139
Lampiran 6 : Syntax program alat Negative Pressure Wound Therapy
(NPWT)
#include <Time.h> #include <TimeAlarms.h> #include <LiquidCrystal.h> #include <EEPROM.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //menginisialisasi library dengan jumlah
interface pin
const int analogInPin = A0; //pin input untuk MPX5050DP int sensorValue = 0; //variabel untuk menyimpan nilai dari sensor int relayPin = 13; //relay terhubung dengan digital pin 13 int tambahPin = 10; //tambahPin terhubung dengan digital pin 10 int kurangPin = 12; //kurangPin terhubung dengan digital pin 12 int setPin = 11; //setPin terhubung dengan digital pin 11 int buttonPushCounter; int jam, menit, j, m, s; //inisialisasi var jam, menit, j, m, s unsigned long waktu; //inisialisasi var waktu float bacasensor; //inisialisasi bacasensor float tekanan; //inisialisasi tekanan char kondisi='idle'; //inisialisasi kondisi='idle' void setup() { lcd.begin(16, 2); //mengatur jumlah kolom dan baris pada LCD jam=0; //var jam dikondisikan 0 menit=0; //var menit dikondisikan 0 pinMode(relayPin, OUTPUT); //relayPin sebagai output pinMode(tambahPin, INPUT); //tambahPin sebagai input pinMode(kurangPin, INPUT); //kurangPin sebagai input pinMode(setPin, INPUT); //setPin sebagai input digitalWrite(tambahPin, HIGH); //set tambahPin on digitalWrite(kurangPin, HIGH); //set kurangPin on digitalWrite(setPin, HIGH); //set setPin on lcd.print(" System "); //print pesan ke LCD lcd.setCursor(0,1); //mengatur kolom dan baris pada LCD lcd.print(" Loading "); //print pesan ke LCD for (int j=10;j<=12;j++){ lcd.setCursor(j,1); //set cursor ke j,1 lcd.print("."); //print pesan ke LCD delay(1000); } lcd.clear(); Serial.begin(9600); } //setup serial void loop() { switch (kondisi){ //kondisi: var untuk membandingkan berbagai kasus case 'idle': //lakukan ketika kondisi sama dengan idle
Menyertakan kode library
lcd.setCursor(0, 1); //set cursor ke 0,1 lcd.print(" Set Jam "); //print pesan ke LCD if (digitalRead (setPin) == LOW) { //jika tombol setPin ditekan delay(200); //tunggu beberapa detik lcd.clear(); //bersihkan layar untuk loop selanjutnya kondisi='jam'; } //lakukan kondisi='jam' break; //keluar dari case idle case 'jam': //lakukan ketika kondisi sama dengan jam lcd.setCursor(3, 0); //set kursor ke 3,0 printCursor(jam); //tampilkan jam lcd.setCursor(7, 0); //set kursor ke 7,0 lcd.print(":"); //print pesan ke LCD lcd.setCursor(8, 0); //set kursor ke 8,0 printDigits(menit); lcd.setCursor(0, 1); //set kursor ke 0,1 lcd.print(" + Set Mnt - "); //print pesan ke LCD if (digitalRead (tambahPin) == LOW) { //jika tombol tambah pin ditekan delay(200); jam+=1; //var jam bertambah 1 if (jam>99) //jika var jam>99
{ jam=0; } } //var jam dikondisikan 0 if (digitalRead (kurangPin) == LOW) { //jika tombol kurang pin ditekan delay(200); jam-=1; //var jam berkurang 1 if (jam<0) //jika jam <0 { jam=99; //var jam bernilai 99} } if (digitalRead (setPin) == LOW) { //jika tombol set pin ditekan delay(200); lcd.clear(); kondisi='menit'; } break; //keluar dari case jam case 'menit': //lakukan ketika kondisi sama dengan menit lcd.setCursor(5, 0); //set kursor ke 5,0 printDigits(jam); lcd.setCursor(7, 0); //set kursor ke 7,0 lcd.print(":"); //print pesan ke LCD lcd.setCursor(8, 0); //set kursor ke 8,0 printCursor(menit); lcd.setCursor(0, 1); //set kursor ke 0,1 lcd.print(" + Set - "); //print pesan ke LCD if (digitalRead (tambahPin) == LOW) { //jika tombol tambah pin ditekan delay(200); menit+=1; //maka var menit ditambah 1 if (menit>60) //jika menit >60
{ menit=0; //maka var menit bernilai 0 } } if (digitalRead (kurangPin) == LOW) { //jika tombol kurang pin ditekan delay(200); menit-=5; //maka var menit akan berkurang 5 if (menit<0) //jika menit<0 { menit=55; //maka var menit bernilai 55 } } if (digitalRead (setPin) == LOW) { //jika tombol set pin ditekan delay(200); setTime(0,0,0,0,0,0); //maka waktu tidak diset j=jam; //var j=jam m=menit; //var m=menit kondisi='do'; //lakukan kondisi do lcd.clear(); } break; //keluar dari case menit case 'do': //lakukan ketika kondisi sama dengan do printDigLcd(tekanan); lcd.setCursor(9, 0); //mengatur kolom dan baris pada LCD lcd.print(" mmHg"); //print pesan ke LCD digitalWrite(relayPin,HIGH); //set relayPin on
Alarm.timerRepeat(4,Repeats); //timer dipanggil setiap 4 detik waktu=jam*3600 + menit*60; //var waktu=jam*3600 + menit*60 Alarm.timerOnce(waktu, OnceOnly); //dipanggil sekali setelah fungsi
waktu
digitalDisplay(); Alarm.delay(1000); //tunggu 1 detik diantara tampilan clock delay(100); break; } } void Repeats(){ sensorValue = analogRead(analogInPin); //membaca input pin bacasensor=sensorValue; //nilai sensor dibuat float tekanan= (((((sensorValue/1023.0)-0.04)/0.018))*7.5)-15.13; //transfer
function dari sensor MPX5050DP }
void printDigLcd(int digit) //kegunaan fungsi untuk digital clock display { if(digit < 0){ lcd.setCursor(6, 0); //mengatur kolom dan baris pada LCD lcd.print("000"); //print pesan ke LCD } else if(digit < 10){ lcd.setCursor(6, 0); //mengatur kolom dan baris pada LCD lcd.print("00"); //print pesan ke LCD lcd.setCursor(8, 0); //mengatur kolom dan baris pada LCD lcd.print(digit); //print pesan ke LCD } else if (digit < 100){ lcd.setCursor(6, 0); //mengatur kolom dan baris pada LCD lcd.print("0"); //print pesan ke LCD
lcd.setCursor(7, 0); //mengatur kolom dan baris pada LCD lcd.print(digit); } else if (digit < 1000){ lcd.setCursor(6, 0); //mengatur kolom dan baris pada LCD lcd.print(digit); } } void printCursor(int nilai){ lcd.print("["); //print pesan ke LCD printDigits(nilai); lcd.print("]"); //print pesan ke LCD } void printDigits(int digits) //tampilan waktu di LCD { if(digits < 10) lcd.print('0'); //print pesan ke LCD lcd.print(digits); } void printDigit2(int digit2) { lcd.print(":"); //print pesan ke LCD if(digit2 < 10) lcd.print('0'); //print pesan ke LCD lcd.print(digit2); } void digitalDisplay() { lcd.setCursor(4,1); //tampilan pada LCD diset pada kolom 4 baris 1 s=59-second(); //var s 59-second if (s==59) //jika s=59 { m-=1; //maka var m berkurang 1 } if (m<0) //jika var m<0 { m=59; //maka var m bernilai 59 j-=1; //var j berkurang 1 } printDigits(j); //digital clock display waktu printDigit2(m); printDigit2(s); } void OnceOnly(){ buttonPushCounter=0; //buttonPushCounter dikondisikan 0 jam=0; //jam dikonsisikan 0 menit=0; //menit dikondisikan 0 lcd.setCursor(0, 0); //tampilan pada LCD diletakkan pada kolom 0 baris 0 lcd.print(" "); //print pesan ke LCD lcd.print("Please"); //print pesan ke LCD lcd.print(" "); //print pesan ke LCD lcd.setCursor(0, 1); //mengatur kolom dan baris pada LCD lcd.print("Wait for Seconds"); //print pesan ke LCD digitalWrite(relayPin,LOW); //set relayPin off for (int i = 0; i < 512; i++){ //menulis 0 ke semua 512 byte dari EEPROM
EEPROM.write(i, 0); } lcd.clear(); //bersihkan layar kondisi='idle'; //lakukan kondisi idle }
Lampiran 8 : Perhitungan standar deviasi dan akurasi tekanan alat Negative
Pressure Wound Therapy (NPWT) (berdasarkan Tabel 4.5) ∆ = ∑( − ̅)
− 1 = (78 − 79,6) + (81 − 79,6) + (80 − 79,6) + (80 − 79,6) + (79 − 79,6)
- (80 − 79,6) + (81 − 79,6) + (79 − 79,6) + (80 − 79,6) + (78 − 79,6) 10 − 1 = 2,56 + 1,96 + 0.16 + 0,16 + 0,36 + 0,16 + 1,96 + 0,36 + 0,16 + 2,56
9 = 1,07 % = ̅ − ̅
̅ × 100% = 80 − 79,6
80 × 100% = 0,5%
= 100% − % = 100% − 0,5% = 99,5%
Lampiran 9 : Perhitungan standar deviasi dan akurasi lama waktu terapi alat
Negative Pressure Wound Therapy (NPWT) (berdasarkan Tabel 4.6) ∆ =
∑( − ̅) − 1 =
(5 − 5) + (5 − 5) + (5 − 5) + (5 − 5) + (5 − 5) + (5 − 5) + (5 − 5) + (5 − 5) + (5 − 5) + (5 − 5) + 10 − 1 =
0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0
9 = 0 % = ̅ − ̅
̅ × 100% = 5 − 5
5 × 100% = 0% = 100% − %
= 100% − 0% = 100%
Lampiran 10 : Gambar keseluruhan alat Negative Pressure Wound Therapy (NPWT) yang telah dibangun pada penelitian ini.
Lampiran 11 : Hasil uji alat Negative Pressure Wound Therapy (NPWT) pada
hewan coba
Hari ke- Gambar Keterangan 1.
Kelinci sebelum diberi perlakuan. Kelinci dibiarkan adaptasi dengan lingkungan sekitar sekitar 1 minggu.
7. Kelinci diberi cairan alloxan monohydrate dengan dosis 100 mg dan ditambah 3 cc aquades.
Kelinci diberi lidocain 4 mg agar tidak terasa sakit ketika dilukai.
Kelinci dilukai pada bagian punggung sepanjang 2 cm Gula darah kelinci dicek dan menunjukkan angka 321 mg/dl 16.
Luka kelinci pada hari ke-2 17.
Luka kelinci pada hari ke-3
Luka kelinci pada hari ke-4 18.
Luka kelinci pada hari ke-5 mulai menjadi ulkus Luka ulkus ditutup menggunakan hepafix yang telah diberi isolasi besar dan dihubungkan dengan selang
19. berdiameter 3 mm.
Luka ulkus diabetik dihisap menggunakan alat Negative Pressure Wound Therapy
(NPWT) dengan tekanan -80 mmHg dan lama waktu terapi 5 jam
Luka setelah dihisap menggunakan alat Negative Pressure Wound Therapy
(NPWT). Terlihat luka menjadi moist (lembab) dan tidak basah seperti sebelumnya.
Lampiran 12 : Bahan habis pakai pembuatan alat Negative Pressure Wound
Therapy (NPWT)
No. Nama Barang Harga
1. Vacuum pump ULVAC Rp 350.000,-
2. Arduino duemilanove Rp 270.000,-
3. Sensor MPX5050DP Rp 270.000,-
4. Adaptor Rp 50.000,-
5. LCD 2x16 Rp 35.000.-
6. Lain-lain Rp 500.000,-
Total Rp 1.475.000,-
Lampiran 13 : Skematik rangkaian alat Negative Pressure Wound Therapy
(NPWT)