UJI WAKTU EKSPOSI A. TUJUAN TUJUAN Untuk Untuk menentu menentukan kan kesesua kesesuaian/ ian/akur akurasi asi antara antara waktu waktu eksposi eksposi yang yang dipii! dipii! dengan keuaran. ". A#AT $AN "A%AN &. Aat pengukur pengukur waktu waktu eksposi eksposi digita. digita. '.
Syn(!ronou)ed motor spinning top .
*.
+eteran
,. ,A-A KE-JA &.
Pastikan a!wa setiap prosedur pemanasan taung pesawat sinar0 yang
diperukan tea! diikuti '. #etakkan detektor pada titik tenga! idang u1i atau sesuai dengan ketentuan penempa penempatan tan detekto detektorr yang yang tertera tertera pada pada uku uku petun1uk petun1uk penggun penggunaan aan detektor detektor terseut. Ukur dan (atat 1arak antara detektor ke sumer radiasi. *.
#akukan serangkaian pengukuran waktu paparan pada niai tegangan kira
kira 23 k4p. "uata! paing sedikit ima pengukuran diantara niai waktu paing pendek yang terse tersedia dia 5tetap 5tetapii 1anga 1angan n kuran kurang g dari dari 363' 363' s7da s7dan n &63 &63 s. "ia "ia pesaw pesawat at sinar sinar0 0 terseut 1uga sering digunakan dengan waktu paparan ei! esar dari &63 s6 maka diperukan pengukuran ei! an1ut pada saat itu. ,atatan8 Jika peru6 akukan 1uga pengukuran tama!an pada niai paparan yang sering digunakan untuk pemeriksaan radiogra9i. Pastikan pengukuran yang diakukan 1uga diakukan diakukan ter!adap ter!adap rentang waktu paparan yang digunakan digunakan pada pemeriksaan k!usus seperti pemeriksan radiogra9i untuk aita. $. :-EKUENSI UJI
$iakukan saat u1i kesesuaian6 setiap ' ta!un sekai atau ketika mengaami peminda!an pesawat sinar0. E. PENI#AIAN $AN E4A#UASI Untuk pesawat sinar0 dengan 1enis pemangkit setenga! geomang dan geomang penu!6 waktu paparan daam satuan detik ditentukan dengan (ara meng!itung 1uma! Tota titik 5dot7 yang tergamar pada radiogra9 !asi u1i di kai dengan niai kon;ersi seagai erikut8 Pada sumer istrik φ &<9rekwensi istrik 1aa1aa =3 %) niai kon;ersi 363&26 untuk geomang penu! niai kon;ersinya adaa! 3.33>7 Waktu eksposi adaa! sesuai/akurat ia niai !itung waktu eksposi !asi pengukuran sama dengan niai waktu yang di atur. "ia pengukuran menggunakan aat pengukur digita waktu eksposi6 maka toeransi peredaan yang diperkenankan adaa! ? &3@6 untuk pemangkit sinar
dengan
kapasitas
ei!
tinggi
toeransi
peredaan
yang
diperkenankan adaa! ? &3@B3633& detik 5SA &C2D8'3337 :. PE#AKSANA :isikawan medik dan atau -adiogra9er dengan peati!an tama!an idang kendai mutu peraatan radiodiagnostik
b.
Uji waktu eksposi (Akurasi Timer)
Waktu eksposi secara langsung mempengaruhi kuantitas keseluruhan dari radiasi sinar-X yang keluar dari tabung sinar-X. Dengan demikian, keakuratan waktu eksposi adalah bersifat kritikal bilamana dikehendaki eksposi terhadap radiograf memadai dengan dosis radiasi yang beralasan terhadap pasien. Variabilitas yang di perbolehkan untuk akurasi waktu eksposi adalah ± 5 untuk penggunaan waktu eksposi lebih b esar dari !" m#, dan ± $" untuk eksposi lebih kecil dari !" m%.
&ara termudah untuk mengukur akurasi nilai waktu eksposi adalah dengan menggunakan dengan menggunakan'digital timer meter atau multi funtion meter'. (amun demikian bila fasilitas radiologi tidak memiliki peralatan non in)ansif semacam ini, sebuah alat sederhana yang dikenal dengan ' %pinning *op De)ice' guna menggukur akurasi waktu eksposi pada suatu sistem generator pembangkit sinar-X.
+ila generator sinar-X adalah half wa)e rectifier penghantar setengah gelombang maka untuk menghitung atau mengkon)ersi waktu eksposi yang sesungguhnya adalah dengan cara
+anyaknya titik hitam / waktu eksposi secons 0 1"
%elan2utnya bila generator yag dimiliki full ha)e rektifier penghantar gelombang penuh 3aka,
+anyaknya titik hitam / waktu eksposi secons 0 !$"
4engu2ian dengan spining top sebaiknya menggunakan pengaturan waktu pada !!", !$", !6" 7 !8" untuk peralatan dengan phasa tunggal. 9ntuk peralatan dengan fassa tiga atau hight fre:uency generator. 4roduksi sinar-X sudah konstan, sehinnga gambaran spining top akan berupa busur melingkar dan bahan gambaran titik. ;arena alasan ini maka alat manual spining top tidak bisa digunakan, dan harus menggunakan alat ukur yang dilengkapi dengan penggerak motor elektrik syncronous spining top de)ices. Akurasi Timer/Counter pada AVR
+eberapa waktu yang lalu ada seorang kawan yang minta dia2ari membuat timer ! detik menggunakan mikrokontroler. ;ebetulan u& yang dia pakai #tmega< dengan clock intenal. =angsung a2a tek bikinin pake &odeVision #V> dengan memanfaatkan interrupt o)erflow pada timer".
4ada &odeVision #V> terdapat fasilitas &odeWi?ard yang mempermudah kita dalam membuat program. 9ntuk mengaktifkan interrupt o)erflow timer" kita tinggal memilih clock source, clock )alue, @)erflow interrupt, dan timer )alue pada tab timer". 9ntuk membuat timer ! detik dengan frekuensi clock u& <3A? internal saya menggunakan parameter timer" sebagai berikut. &lock source / system clock &lock )alue / !""",""" kA? *imer )alue / "0B+ 3emberi centang pada kotak @)erflow interrupt. • • • •
4ada proses diatas sebenarnya kita mengubah nilai pada register *&&>", *&(*" dan *C3%;. *iga bit =%+ dari register *&&>" merupakan bit &%" &lock select yang digunakan untuk menentukan frekuensi clock dari timer". (ilai bit &%"$ sd &%"" sesuai tabel ! dibawah.
*abel.! *imer&ounter" 4rescaler ;arena menggunakan clock )alue !""","""kA? !3A? yang berarti !< dari frekuensi clock u&, maka register *&&>" bernilai "0"$. *&(*" merupakan register yang bertugas untuk menghitung pulsa yang masuk kedalam timer"counter". %etelah program ber2alan maka niai register ini akan bertambah satu setiap clock timernya dan akan mengalami o)erflow setelah mencapai nilai "0. ;etika register *&(*" mengalami o)erflow maka bit *@V"*imer&ounter" @)erflow lag pada register *C> *imer&ounter Cnterrupt lag >egister akan bernilai ! dan akan kembali ke-" 2ika rutin interrupsi di2alankan. #kan tetapi 2ika rutin interrupsi tidak diaktifkan maka nilai *@V" akan tetap set! dan harus di clear " secara manual. (ilai *&(*" dapat diisi dengan nilai "0"" sd "0. (ilai ini sebagai inisialisasi nilai timercounter yang kita buat. 4ada proses menggunakan codeWi?ard diatas, saya memasukan nilai timer )alue "0B+ atau senilai dengan !55 desimal. Cni dimaksudkan untuk mempermudah perhitungan. Eika inisialisasi *&(*" / !55 dan maksimal nilainya $55 maka nilai *&(*" hanya akan menghitung sebanyak !"" pulsa. %etiap !"" pulsa timercounter" ter2adi @)erflow pada *@V". 3emberi tanda centang pada @)erflow interrup di &odeWi?ard dialog akan mengubah nilai register *C3%;*imer&ounter Cnterrupt 3ask >egister. *imercounter" hanya memiliki fasilitas interrupt o)erflow. Eika ini diaktifkan maka +it *@CF"*imer&ounter Cnterrupt Fnable akan bernilai ! set. +it *@CF" ini berada pada bit ke-" register *C3%; sehingga 2ika kita akan mengaktifkan timer" @)erflow interrupt maka nilai register *C3%; adalah "0"!.
%edangkan untuk mengaktifkan fungsi interrupt global dengan menambahkan GasmHsei' yang artinya men-set enable interrupt. Dengan menambahkan perintah ini maka nilai bit C pada register %>FI akan bernilai !. 9ntuk meng-clear kan bit-C digunakan code GasmHcli'. %etelah di-generate maka akan dibuatkan template program sesuai kebutuhan kita. 9ntuk seting parameter timer" dan interupsi terdapat pada subrutin )oid main)oid berikut. *imer&ounter " initiali?ation &lock source %ystem &lock &lock )alue !""",""" kA?
*&&>"/"0"$J *&(*"/"0B+J *imers&ounters Cnterrupts initiali?ation
*C3%;/"0"!J GasmKseiK %edangkan subrutin interupsi terdapat pada bagian paling atas program seperti dibawah ini. *imer " o)erflow interrupt ser)ice routine
interrupt L*C3"M@VN )oid timer"Mo)fMisr)oid O >einitiali?e *imer " )alue
*&(*" / "0B+J 4lace your code here
P ;embali ke permasalahan adalah membuat timer ! detik. Qang pertama saya buat adalah )ariabel counter dan )ariabel second yang bertipe integer dan saya tempatkan sebagai )ariabel global diatas fungsi interrupt karena kedua )ariabel ini akan saya tempatkan di dalam fungsi interrupt sehingga ketika diakses oleh fungsi interrupt kedua )ariabel ini telah terdefinisi. %etelah mendefinisikan )ariabel yang diperlukan, langkah selan2utnya adalah menghitung nilai ! detik. %ebelumnya kita telah mengetahui bahwa setiap !"" hitungan pada register *&(*" akan ter2adi o)erflow, karena fungsi @)erflow interrupt diaktifkan maka setiap!"" hitungan ter2adi interrupt. %elang waktu ter2adinya interrupt adalah !""0!f&lock *imer. Dengan f&locktimer adalah !3A? maka periode interupsi adalah !""u%. 4ada saat ter2adi interupsi saya manfaatkan untuk menambah nilai )ariabel counter. Dari sini diperoleh penambahan nilai )ariabel counter setiap !""u% sehingga dalam ! detik nilai )ariabel counter akan bernilai !"""". ;etika )ariabel counter berniali !"""" maka )ariabel second akan bertambah !. Dari sini argument saya adalah bahwa )ariabel second akan berubah setiap ! detik. %elengkapnya untuk rutin interupsi yang saya gunakan untuk membuat timer ! detik adalah sebagai berikut.
int counter,second / "J *imer " o)erflow interrupt ser)ice routine
interrupt L*C3"M@VN )oid timer"Mo)fMisr)oid O >einitiali?e *imer " )alue
*&(*" / "0B+J 4lace your code here
&ounterRRJ Cfcounter//!""""O %econdRRJ &ounter / "J P P 3etode membuat timer ! detik ini telah saya gunakan semen2ak saya bela2ar u& hingga beberapa waktu yang lalu baik untuk aplikasi yang bersifat edukasi maupun aplikasi yang bersifat komersil. #kan tetapi beberapa hari kemarin pikiran bi2ak datang, H%udah saatnya saya beralih menggunakan aplikasi yang freeware, apalagi untuk kepentingan yang bersifat komersil rasanya tidak etis ketika menggunakan aplikasi ba2akan'. %eperti yang anda ketahui bahwa &V#V> merupakan aplikasi berbayar dari Apinfotech. 4rodusen ini meluncurkan produk &V#V> yang free hanya untuk )ersi F)aluation yang memiliki keterbatasan fitur. Eika ingin yang full )ersion maka harus membayar SXX atau mencari )ersi ba2akanya. %edangkan aplikasi #V> yang bersifat freeware dan diluncurkan langsung oleh produsen atmel adalah #V>studio. Dari situ saya mencoba untuk beralih ke #V>studio dan Win#V> sebagai eksternal tool untuk mengakses program a)r-gcc.e0e dan make.e0e. 4ada masa transisi ini sedikit mengalami kendala, karena terbiasa memanfaatkan tool codeWi?ard dari &V#V> sedangkan menggunakan #V>studio lebih banyak ngetik sendiri. *api berkat #V>studio inilah saya menemukan kelemahan beberapa kode yang saya andalkan se2ak dulu termasuk pembuatan timer ! detik diatas. 9ntuk membuat timer ! detik menggunakan metode seperti diatas saya memanfaatkan library interrupt.h dari Win#V>. >egister yang diatur bernilai sama. 9ntuk memanfaatkan fungsi interrupt menggunakan fungsi layanan interupsi berikut. C%>interruptM)ectorO kode program
P =ist nama )ektor interrupt pada win #V> untuk u& #tmega< adalah sesuai tabel $ berikut
*abel.$ Vector interrupt pada u& #*mega< 9rutan tabel diatas 2uga merupakan urutan prioritas interrupt pada u& #tmega<. Dengan )ariabel yang sama maka source code pada rutin interrupt untuk menghitung ! detik adalah sebagai berikut. C%>*C3F>"M@VM)ectO *&(*" / "0B+J &ounterRRJ Cfcounter//!""""O %econdRRJ &ounter / "J P P 9ntuk nilai register *&&>" dan *C3%; sama seperti halnya menggunakan &V#V>. %edangkan pada #V>studio, untuk mengenable kan fungsi interrupt menggunakan macro intruksi sei dan untuk meng-clearkan menggunakan cli . +erikut perbandingan source code program timer ! detik menggunakan &V#V> dengan #V>studio dimana nilai )ariabel second dikeluarkan pada 4@>*D. 1. Program menggunakan CVAVR TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT *his program was produced by the &odeWi?ard#V> V$."5.6 %tandard #utomatic 4rogram Ienerator U &opyright !BB<-$"!! 4a)el Aaiduc, A4 Cnfo*ech s.r.l. httpwww.hpinfotech.com 4ro2ect Version Date 6"!"$"!6
#uthor Dwi ;urniawan &ompany &omutech &omments
&hip type #*mega< 4rogram type #pplication #V> &ore &lock fre:uency <,"""""" 3A? 3emory model %mall F0ternal >#3 si?e " Data %tack si?e $51 TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
#in!ude "mega<.h int count/"J int second / "J *imer " o)erflow interrupt ser)ice routine
interrupt L*C3"M@VN $oid timer%&o$'&isr )oid O >einitiali?e *imer " )alue
*&(*"/"0B+J 4lace your code here
countRRJ i' count//!""""O secondRRJ count / "J P P $oid main$oid O *imer&ounter " initiali?ation &lock source %ystem &lock &lock )alue !""",""" kA?
*&&>"/"0"$J *&(*"/"0B+J *imers&ounters Cnterrupts initiali?ation
*C3%;/"0"!J Ilobal enable interrupts
GasmKseiK wi!e ! O 4@>*D/secondJ P P
. Program menggunakan AVRstudio #in!ude "a)rio.h #in!ude "a)rinterrupt.h int count/"J int second/"J *+R *C3F>"M@VM)ectO *&(*" / "0B+J countRRJ i' count//!""""O secondRRJ count/"J P P int main$oidO DD>D/"0ffJ *&&>" / "0"$J *&(*" / "0B+J *C3%; / "0"!J sei J wi!e!O 4@>*D/secondJ P return "J
P *ampak bahwa kedua program sama persis. %etelah didownload atau disimulasikan menggunakan 4roteus yang ini belum nemu sainganya yang freeware program ber2alan sama persis. #kan tetapi, dengan menggunakan #V>studio akhirnya saya menemukan kelemahan dari program timer ! detik yang selama ini saya gunakan. 4ada #V>studio terdapat fasilitas debug yang 2ika di2alankan kita dapat melihat isi dari masing-masing register.
Iambar.! *ampilan pada saat debuging program 9ntuk program timer ! detik diatas yang perlu diperhatikan adalah register *&(*". %ebelumnya, saya beranggapan ketika memberikan nilai pada timer )alue saat menggunakan &odeWi?ard maka nilai register *&(*" setelah o)erflow akan langsung bernilai sesuai dengan yang kita masukan. %esuai program diatas bernilai "0B+ sehingga saya beranggapan setelah *&(*" o)erflow nilai *&(*" akan kembali ke "0B+. *ernyata setelah mengamati perilaku register *&(*" pada debuging #V>studio nilai *&(*" akan kembali ke "0"" setelah mengalami o)erflow setelah melalui inisialisasi ulang pada rutin interupsi baru program ini bernilai sesuai yang kita masukan. Cnisialisasi *&(*" saya tempatkan pada awal proses intrrupt maka dalam hal ini saya telah kehilangan akurasi sebesar ! clock timer yang berarti !us. 9ntuk menanggulangi ini maka nilai *&(*" dtambah ! pada inisialisasi sehingga men2adi "0B&. *ernyata sampai sini permasalahan belum selesai, setelah diamati lagi selama perpindahan dari baris C%> ke baris dibawahnya *&(*" telah berubah nilai men2adi "0"6.
Iambar $ 4erpindahan dari baris C%> ke baris berikutnya, *&(*" telah berubah men2adi "0"6 Aal ini dikarenakan ketika meng-eksekusi fungsi C%> diperlukan 8 siklus clock untuk interrupt acknowledge, $ siklus clock untuk 2ump dari )ektor interrupt, $ siklus clock untuk set dan reset *&(*", $ siklus clock untuk set dan reset register C, 8 siklus clock untuk operasi >F*C Cnterrupt return, $ siklus clock untuk clear *@V".
Dari analisa saya diatas baru diperoleh !1 siklus clock yang berarti $ siklus clock timer. Qanng berarti perpindahan nilai *&(*" yang dapat dideteksi baru "0"$ sedangkan ! clock timer belum dapat saya deteksi. Aanya sa2a sampai disini dapat disimpulkan bahwa metode saya selama ini telah kehilangan akurasi sebanyak 8 clock timer. Eadi interupsi timer" ter2adi setiap !"8 us. ;etika membatasi nilai counter !"""" berati selang waktu dari counter / " hingga !"""" adalah !"8u% 0 !"""" / !."8 s. 9ntuk mengatasi masalah tersebut dapat dilakukan dengan cara mengubah nilai *&(*". Eika menghendaki selang waktu ter2adinya interupsi !""us maka nilai *&(*" / $55 !"" 8 / !5B atau "0B. Dengan memodifikasi program diatas dan hasilnya memang 2auh lebih presisi ketika menambahkan 8 clock timer pada register *&(*". Eika menggunakan simulator proteus, dapat diamati perubahan nilai detik dengan waktu eksekusi program yang ditampilkan distatus bar bawah sebelah status bar message.