Analog to Digital Converter via
Parallel Port
from I made Wiryana's grab site
Sinyal analog contohnya tegangan dari sensor suhu merupakan data yang cukup
penting bagi beberapa aplikasi (misal post pencatat suhu dll). Untuk tujuan ini
telah tersedia berbagai peralatan untuk mengkonversi dari data analog ke digital
yang dikenal dengan Analog to Digital Converter (ADC). Tetapi di sini penulis
mencoba menampilkan rangkaian ADC yang sederhana yang memanfaatkan peralatan I/O
yang sudah ada di komputer yaitu port printer. Contoh program dengan bahasa
BASIC diberikan di bagian bawah tulisan.
Sebagai chip ADC, rangkaian ini memanfaatkan TLC549 buatan Texas Instrument
dengan resolusi 8 bit. IC1 merupakan rangkaian regulator akan memberikan
keluarang tegangan stabil 5 Volt dari masukan 8-30 V. Digunakan selain sebagi
catudaya stabil juga sebagai tegangan referensi untuk proses ADC. Masukan analog
diberikan kepada pin 2 dari IC2 (A-IN), dan harus berkisar antar 0-5 Volt.

Negative edge (berubah dari H-L) di pin 5 (CS) akan memulai chip bekerja
miminimal 1,7 mikrodetik. TCL549 akan mulai menkonversi sesuai pulsa klok di pin
I/O-CLK (pin 7), akan dimulai dari MSB dan selanjutnya ke LSB. Setelah pulsa ke
8, maka output digital dari pin 6(D-OUT) selesai keluar semuanya. Dengan kata
lain keluaran adalah serial.
Setelah pulsa ke 8 ini (satu siklus konversi), maka konversi berikutnya dapat
dimulai lagi dengan membuat pin 5 LOW lagi. Waktu siklus ini diatur melalui
program BAIC dengan konstanta DELAY pada baris 30. Tundaan ini dilakukan pada
baris 90. Pada baris 240 merupakan trik untuk mengambil nilai rata-rata.
Arus yang dibutuhkan untuk beroperasi sekitar 5 mA.
10 Base = 888: REM Base LPT1 (LPT2 = 632)
20 Delay = 1: REM delay konversi
30 Average = 10: REM loop untuk rata-rata
40 CLS
50 Value = 0
60 FOR t =1 TO Average
70 OUT (Base), 0: REM CS, I/O CLK low
80 OUT (Base), 1: REM CS high, konversi start
90 FOR q=1 TO Delay
100 NEXT q : REM tunggu konversi
120 OUT (Base), 0: REM CS+CLK low
130 OUT (Base), 2: REM CLK High
140 OUT (Base), 0: REM Clk low
150 FOR i = 1 TO 7: REM tulis bit 7 - 0
160 x = INP (Base + 1) AND 128: REM baca bit masuk
170 IF X = 128 THEN a = 0
180 IF X = 0 THEN a=1
190 Value = Value + a * 2 ^ ( 7 - i): REM masukan nilai
200 OUT (Base), 2: REM CLK high
210 OUT (Base), 0: REM CLK Low
220 NEXT i
230 NEXT t
240 Value = Value * 5 / (255 * Average): REM nilai rata rata konversi
250 LOCATE 10,10: : REM untuk kisaran 0-5 V
260 PRINT USING "#.### Volt"; Value
270 GOTO 50