3.1. Pendahuluan
Port paralel pada komputer digunakan untuk melakukan komunikasi dengan perangkat luar (hardware), pernahkah anda perhatikan bagaimana komputer melakukan pencetakan ke kertas (ngeprint)? Bagaimanakah data dikirim untuk kemudian direspon oleh peralatan? Salah satu jenis komunikasi yang digunakan adalah dengan menggunakan port paralel. Walaupun tidak dapat dipungkiri bahwa umumnya peralatan sekarang telah menggunakan komunikasi serial, seperti yang telah dibahas pada pertemuan sebelumnya....!, tetapi penggunaan port paralel masih sering kita jumpai utamanya pada beberapa jenis pengontrolan seperti kontrol lampu LED dan motor stepper. Satu hal yang perlu diperhatikan dalam suatu perancangan pengontrolan yaitu harus dilakukan analisa dari alat yang akan dikontrol dengan jenis komunikasi yang tepat digunakan, jika anda tidak mempersyaratkan jarak kabel dan kecepatan maka komunikasi dengan paralel port dapat anda pilih sebagai solusi. Misalkan kita memiliki televisi, Kipas Angin, DVD Player dll. Nah kita dapat membuat alat kontrol sehingga alat-alat tersebut dapat dikontrol menggunakan komputer. Untuk alat semacam Kipas Angin maka kontrolnya hanyalah On-Off saja. Bila kita menginginkan kipas menyala, maka kita tinggal meng-klik pada mouse saja. Sangat simple bukan?
3.2. Penyajian
3.2.1. Hardware
Sebuah Personal Computer (PC) secara umum dilengkapi dengan port paralel (Kecuali pada Notebook). Port paralel ini umumnya digunakan untuk menghubungkan komputer dengan alat pencetak (printer). Namun apabila kita mengetahui sinya-sinyal apa saja yang terkandung pada port paralel tersebut,
34
maka kita dapat memanfaatkan port paralel untuk kepentingan yang lain. Gambar 3.1 dibawah ini menunjukkan sebuah port paralel.
Port paralel terdiri dari 25 pin dan untuk menggunakannya dibutuhkan konektor, konektor ini biasa disebut dengan konektor DB25. Gambar 3.2 memperlihatkan sebuah konektor DB25.
Gambar 3.2 (a). Konektor DB25 jantan dan betina, (b). Konektor DB25
35
pin dari konekter DB25 berjumlah 25 dan pin Centronics dengan jumlah konektor 34. DB25 ialah konektor yang umum digunakan di computer sebagai port paralel, sedangkan konektor Centronics umum ditemukan di printer. IEEE 1284 ialah standar yang menentukan 3 konektor berbeda yang dapat digunakan dengan port paralel, yaitu 1284 tipe A ialah konektor DB25 yang dapat ditemukan di hampir semua komputer, 1284 tipe B ialah konektor Centronics 36 pin yang umum ditemukan di printer, IEEE 1284 type C ialah konektor 36 pin seperti Centronics, tetapi ukurannya lebih kecil . Port paralel ialah port data di komputer untuk mentransmisi 8 bit data dalam sekali detak. Standar port paralel yang baru ialah IEEE 1284 yang dikeluarkan pada tahun 1994. Standar ini mendefinisikan 5 mode operasi sebagai berikut : 1. 2. 3. 4. 5. Mode kompatibilitas Mode nibble Mode byte Mode EPP (Enhanced Parallel Port) Mode ECP (Extended Capability Port) Tujuan dari standar yang baru tersebut ialah untuk mendesain driver dan peralatan yang baru yang kompatibel dengan peralatan lainnya serta standar paralel port sebelumnya (SPP) yangn diluncurkan tahun 1981. Mode Compatibilitas, nibble dan byte digunakan sebagai standar perangkat keras yang tersedia di port paralel orisinal dengan EPP dan ECP membutuhkan tambahan hardware sehingga dapat berjalan dengan kecepatan yang lebih tinggi. Mode kompatibilitas atau (Mode Centronics ) hanya dapat mengirimkan data pada arah maju pada kecepatan 50 KBytes per detik hingga 150 KBytes per detik. Untuk menerima data, anda harus mengubah mode menjadi mode nibble atau byte. Mode nibble dapat menerima 4 bit (nibble) pada arah yang mundur, misalnya dari alat ke computer. Mode byte menggunakan fitur bi-directional parallel untuk menerima 1 byte (8 bit) data pada arah mundur. IRQ (Interrupt Request ) pada port paralel biasanya pada IRQ5 atau IRQ7.
36
Paralel port dua arah menggunakan bit ke-5 dari register kontrol untuk dihubungkan dengan Output-Enable (nOE) dari `374, sehingga jika bit 5 ini kita 37
set tinggi (=1) maka `374 tidak bekerja, dan data yang ada adalah berasal dari `274 yakni data dari luar komputer. Pada saat paralel port kita set seperti ini, maka data yang kita tuliskan ke register data paralel port tidak akan sampai ke pin DB25 karena `374 tidak menghantarkannya.
2. Siklus Command
Tabel 3.3 Sinyal ECP Sinyal ECP HostClk HostAck 1284 Active Reverse Reg PerphAck PerphClk Ack reverse PerphRequest Data Pin 1 14 17 16 11 10 12 15 2-9 Aktif LOW HIGH HIGH LOW HIGH LOW LOW LOW HIGH I/O O O O I I I I I I/O Diskripsi Dipakai oleh peripheral untuk transfer data atau alamat secara forward LOW bila data valid Data siap ditransfer secara reverse dipakai peripheral Clk untuk transfer data secara reverse HIGH bila PC dalam mode transfer 1284 LOW agar kanal dalam kondisi reverse Dipakai HostClk untuk transfer data atau alamat secara forward Dipakai HostAck untuk transfer data atau alamat secara reverse LOW untuk mengetahui request mode reverse Diset LOW oleh alat luar untuk menunjukkan bahwa saluran reverse bisa dipakai Pertukaran data peripheral dan PC
39
Nilai tahanan resistor dapat dipilih dari 220 ohm sampai 470 ohm. Sedangkan pin yang digunakan port paralel adalah pin 2-9 (lihat tabel 3.1). untuk menyalakan lampu LED maka anda harus memberikan output 1 (satu) dan sebaliknya untuk memadamkannya diberikan output 0 (nol).anda harus ingat bagaimana konversi dari data biner ke desimal maupun dari biner ke heksagonal. Dalam pemrograman Delphi, sebelum anda dapat mengakses paralel port maka anda harus mendefinisikan terlebih dahulu alamat port paralel ($378) dengan cara menuliskan listring program assembly atau dengan cara menggunakan modul yang banyak tersedia di internet untuk kemudian di install pada delphi. Salah satu modul yang tsering dipakai yaitu menggunakan smport. Sebagai catatan bahwa pada microsoft windows XP maka port paralel secara default diblock oleh sistem operasi karena itu anda harus membukanya terlebih dahulu menggunakan user port jika anda menggunakan bahasa assembly untuk mengakses por paralel. Berikut listing program untuk mengakses port paralel menggunakan bahassa assembly.
40
Asm
End;
Listing program:
unit lat1; interface uses Windows, Messages, SysUtils, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) btnOn: TButton; btnOff: TButton; btn8: TButton; btn7: TButton; btn6: TButton; btn5: TButton; btn4: TButton; btn3: TButton; btn2: TButton; btn1: TButton; Button11: TButton; btn1off: TButton; btn2off: TButton; btn3off: TButton; btn4off: TButton; btn5off: TButton;
Variants,
Classes,
Graphics,
41
btn6off: TButton; btn7off: TButton; btn8off: TButton; Timer1: TTimer; LH4: TShape; LH5: TShape; LH6: TShape; LH8: TShape; Label1: TLabel; Label2: TLabel; LH7: TShape; LH3: TShape; LH2: TShape; LH1: TShape; Button1: TButton; procedure btnOnClick(Sender: TObject); procedure btnOffClick(Sender: TObject); procedure btn1Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure btn2Click(Sender: TObject); procedure btn1offClick(Sender: TObject); procedure btn2offClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure btn3Click(Sender: TObject); procedure btn3offClick(Sender: TObject); procedure btn4Click(Sender: TObject); procedure btn4offClick(Sender: TObject); procedure btn5Click(Sender: TObject); procedure btn5offClick(Sender: TObject); procedure btn6Click(Sender: TObject); procedure btn6offClick(Sender: TObject); procedure btn7Click(Sender: TObject); procedure btn7offClick(Sender: TObject); procedure btn8Click(Sender: TObject); procedure btn8offClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; x,a,b,c,d,e,f,g,h,i:integer; const lpt_data=$378; implementation {$R *.dfm} procedure outport(alamat:word; data: byte); begin asm
42
mov dx, alamat mov al,data out dx,al end; end; procedure TForm1.btnOnClick(Sender: TObject); begin Timer1.Enabled:=False; outport(lpt_data,$FF); LH1.Brush.Color:=clRed; LH2.Brush.Color:=clRed; LH3.Brush.Color:=clRed; LH4.Brush.Color:=clRed; LH5.Brush.Color:=clRed; LH6.Brush.Color:=clRed; LH7.Brush.Color:=clRed; LH8.Brush.Color:=clRed; end; procedure TForm1.btnOffClick(Sender: TObject); begin Timer1.Enabled:=false; outport(lpt_data,$00); LH1.Brush.Color:=clMenu; LH2.Brush.Color:=clMenu; LH3.Brush.Color:=clMenu; LH4.Brush.Color:=clMenu; LH5.Brush.Color:=clMenu; LH6.Brush.Color:=clMenu; LH7.Brush.Color:=clMenu; LH8.Brush.Color:=clMenu; end; procedure TForm1.btn1Click(Sender: TObject); begin Timer1.Enabled:=true; a:=1; LH1.Visible:=true; LH1.Brush.Color:=clRed; end; procedure TForm1.Button11Click(Sender: TObject); begin close; end; procedure TForm1.btn2Click(Sender: TObject); begin Timer1.Enabled:=true; b:=2; LH2.Brush.Color :=clYellow; end; procedure TForm1.btn1offClick(Sender: TObject); begin a:=0; LH1.Brush.Color :=clMenu; end; procedure TForm1.btn2offClick(Sender: TObject); begin b:=0;
43
LH2.Brush.Color :=clMenu; end; procedure TForm1.Timer1Timer(Sender: TObject); begin x:=a+b+c+d+e+f+g+h+i; outport(lpt_data,x); end; procedure TForm1.btn3Click(Sender: TObject); begin Timer1.Enabled:=true; c:=4; LH3.Brush.Color :=clGreen; end; procedure TForm1.btn3offClick(Sender: TObject); begin c:=0; LH3.Brush.Color :=clMenu; end; procedure TForm1.btn4Click(Sender: TObject); begin Timer1.Enabled:=true; d:=8; LH4.Brush.Color :=clBlue; end; procedure TForm1.btn4offClick(Sender: TObject); begin d:=0; LH4.Brush.Color :=clMenu; end; procedure TForm1.btn5Click(Sender: TObject); begin Timer1.Enabled:=true; e:=16; LH5.Brush.Color :=clRed; end; procedure TForm1.btn5offClick(Sender: TObject); begin e:=0; LH5.Brush.Color :=clmenu; end; procedure TForm1.btn6Click(Sender: TObject); begin Timer1.Enabled:=true; f:=32; LH6.Brush.Color :=clGreen; end; procedure TForm1.btn6offClick(Sender: TObject); begin f:=0; LH6.Brush.Color :=clMenu; end; procedure TForm1.btn7Click(Sender: TObject); begin Timer1.Enabled:=true; g:=64; LH7.Brush.Color :=clNavy;
44
end; procedure TForm1.btn7offClick(Sender: TObject); begin g:=0; LH7.Brush.Color :=clMenu; end; procedure TForm1.btn8Click(Sender: TObject); begin Timer1.Enabled:=true; h:=128; LH8.Brush.Color :=clTeal; end; procedure TForm1.btn8offClick(Sender: TObject); begin h:=0; LH8.Brush.Color :=clMenu; end; procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled:=true; LH1.Brush.Color:=clMenu; LH2.Brush.Color:=clMenu; LH3.Brush.Color:=clMenu; LH4.Brush.Color:=clMenu; LH5.Brush.Color:=clMenu; LH6.Brush.Color:=clMenu; LH7.Brush.Color:=clMenu; LH8.Brush.Color:=clMenu; end; procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=true; h:=66; LH7.Brush.Color :=clTeal; LH2.Brush.Color :=clTeal; end; end.
45
Dari dari
skema pada
pada
Gambar relai
3.6, ke
terlihat
pin bisa
dan
18
74LS224
terhubung setiap
masing-masing
Selanjutnya untuk
sakelar
tersebut,
mengontrol peralatan yang memiliki beban besar seperti Lampu TL maupun untuk mengontrol Motor, Kipas Angin, dll. Untuk listing programnya, prinsipnya sama dengan pengontrolan lampu LED.
ditunjukkan pada gambar 3.7. Bagian tengah merupakan bagian yang berputar disebut sebagai rotor, dan bagian yang diam disebut sebagai stator. Stator terdiri dari beberapa kutub, makin banyak kutub makin sulit kontruksinya. Gambar 3.6. merupakan gambar struktur dari motor dengan variabel reluktansi dimana tiap stepnya adalah 30. Mempunyai 4 buah kutub pada rotor dan 6 buah kutub pada statornya yang terletak saling berseberangan. Setiap kutub memiliki lilitan yang menghasilkan medan magnet yang akan menggerakkan rotor. Pemberian arus yang berurutan pada kutub-kutubnya menyebabkan medan magnet berputar yang akan menarik rotor ikut berputar. Kecepatan motor stepper pada dasarnya ditentukan oleh kecepatan pemberian data pada kutubnya. Semakin cepat data yang diberikan maka motor stepper akan semakin cepat pula berputarnya. Pada kebanyakan motor stepper kecepatannya dapat diatur dalam daerah frekuensi audio dan akan menghasilkan putaran yang cukup cepat
Jika lilitan 1 dilewati oleh arus, lilitan 2 mati dan lilitan 3 juga mati maka kumparan 1 akan menghasilkan gaya tolakan kepada rotor dan rotor akan berputar sejauh 30 searah jarum jam sehingga kutub rotor dengan label Y sejajar dengan kutub dengan label 2. Jika kemudian lilitan 2 dilewati arus, selanjutnya lilitan 3, dan akhirnya kembali ke lilitan 1 lagi berulang terus menerus secara berurutan, maka motor akan berputar secar terus menerus.
motor stepper saat ini yang digunakan adalah motor stepper yang mempunyai variabel relukatansi. Cara yang paling mudah untuk membedakan antara tipe motor stepper di atas adalah dengan cara memutar rotor dengan tangan ketika tidak dihubungkan ke suplai. Pada motor stepper yang mempunyai permanen magnet maka ketika diputar dengan tangan akan terasa lebih tersendat karena adanya gaya yang ditimbulkan oleh permanen magnet. Tetapi ketika menggunakan motor dengan variabel reluktansi maka ketika diputar akan lebih halus karena sisa reluktansinya cukup kecil. Unipolar Motor Stepper Motor stepper dengan tipe unipolar adalah motor stepper yang mempunyai 2 buah lilitan yang masing-masing lilitan ditengah-tengahnya diberikan sebuah tap seperti tampak pada gambar 3.8 dibawah ini:
Motor ini mempunyai step tiap 30 dan mempunyai dua buah liliatan yang didistribusikan berseberangan 180 di antara kutub pada stator. Sedangkan pada rotonya menggunakan magnet permanen yang berbentuk silinder dengan mempunyai 6 buah kutub, 3 kutub selatan dan 3 buah kutub utara. Sehingga dengan konstrusi seperti ini maka jika dibutuhkan ke presisian dari motor stepper yang lebih tinggi dibutuhkan pula kutub-kutub pada stator dan rotor yang semakin banyak pula. Pada gambar 3, motor tersebut akan bergerak setiap step sebesar 30 dengan 4 bit urutan data (terdapat dua buah lilitan dengan tap, total lilitan menjadi 4 lilitan).
48
Ketelitian dari magnet permanen di rotor dapat sampai 1.8 untuk tiap stepnya. Ketika arus mengalir melalui tap tengah pada lilitan pertama akan menyebabkan kutub pada stator bagian atas menjadi kutub utara sedangkan kutub stator pada bagian bawah menjadi kutub selatan. Kondisi akan menyebabkan rotor mendapat gaya tarik menuju kutub-kutub ini. Dan ketika arus yang melalui lilitan 1 dihentikan dan lilitan 2 diberi arus maka rotor akan mengerak lagi menuju kutub-kutub ini. Sampai di sini rotor sudah berputar sampai 30 atau 1 step.
Gambar 3.9 Urutan pemberian data motor stepper tipe unipolar untuk torsi normal
Gambar 3.10 Urutan pemberian data motor stepper tipe unipolar untuk torsi besar
Untuk meningkatkan torsi yang tidak terlalu besar maka dapat digunakan urutan pemberian data seperti pada gambar 5. Dimana terdapat dua buah lilitan yang di beri arus pada suatu waktu. Dengan pemberian urutan data seperti ini akan menghasilkan torsi yang lebih besar dan tentunya membutuhkan daya yang lebih besar. Dengan urutan data baik pada gambar 4 atau gambar 5 akan menyebabkan motor berputar sebanyak 24 step atau 4 putaran. Bipolar Motor Stepper Motor dengan tipe bipolar ini mempunyai konstruksi yang hampir sama dengan motor stepper tipe unipolar namun tidak terdapat tap pada lilitannya, seperti tampak pada gambar 3.11 dibawah ini:
49
Penggunaan motor dengan tipe bipolar ini membutuhkan rangkaian yang sedikit lebih rumit untuk mengatur agar motor ini dapat berputar dalam dua arah. Biasanya untuk menggerakkan motor stepper jenis ini membutuhkan sebuah driver motor yang sering dikenal sebagai H Bridge. Rangkaian ini akan menontrol tiap-tiap lilitan secara independen termasuk dengan polaritasnya untuk tiap-tiap lilitan. Untuk mengontrol agar motor ini dapat berputar satu step maka perlu diberikan arus untuk tiap-tiap lilitan dengan polaritas tertentu pula. Urutan datanya dapat dilihat pada gambar 3.12 dibawah ini:
Rangkaian Driver Motor Stepper Untuk menjalankan motor stepper maka tidak bisa langsung dilakukan pengaksesan dari output port paralel ke motor stepper tetapi diperlukan rangkaian driver sebagai penggeraknya. Gambar dibawah ini merupakan salah satu contoh rangkaian driver motor stepper. Berikut ini akan diberikan satu contoh kasus pengendalian motor stepper menggunakan program Delphi. Ikuti langkah-langkah berikut ini: 1. Buatlah form pengendalian motor stepper seperti rangkaian dibawah ini:
50
3.3. Penutup
Penggunaan port paralel dalam kehidupan sehari-hari sangat banyak aplikasinya diantaranya pengendalian perlengkapan rumah tangga seperti kipas angin, lampu ruangan, televisi tetapi tetap menggunakan prinsip yang sama yaitu dalam hal teknik pengiriman data, dan jika membutuhkan daya yang besar maka harus menggunakan relay dan rangkaian driver dari setiap peralatan.
51