Panduan Asas Kawalan Komponen / Peranti Menggunakan Komputer Peribadi (PC)

Keupayaan untuk mengawal komponen dan peranti mengunakan komputer peribadi (PC) dapat membuka ruang kepada pelbagai potensi rekacipta dan inovasi; daripada sistem kawalan sehinggalah sistem automasi.

Panduan ini bertujuan membantu anda memahami konsep asas kawalan menggunakan komputer (melalui Parallel Port), melalui demonstari ringkas menggunakan LED.

Apabila anda mampu mengawal LED mengunakan komputer, anda dengan mudah dapat meningkatkan keupayaan kod pengaturcaraan, sistem dan litar (menggunakan geganti, transistor kuasa, opto-isolator, dsb ) untuk diaplikasikan di dalam pelbagai projek rekacipta dan inovasi lanjutan.

 Rekacipta.net - 01





Latar Belakang

Apabila sesebuah komputer berkomunikasi dengan sesuatu peralatan (contohnya sebuah mesin pencetak) melalui Parallel Port, ianya berlaku melalui penyampaian dan penerimaan bit-bit isyarat.

Bit-bit isyarat yang dimaksudkan ini hanyalah isyarat elektrik dengan voltan 5V dan arus sekitar beberapa miliampere. Bit 1 yang dioutput ke parallel port akan menghasilkan isyarat elektrik 5V di pin, bit 0 yang dioutput pula tidak menghasilkan sebarang isyarat elektrik di pin (0V).



Isyarat elektrik inilah yang dimanipulasi bagi kawalan peranti menggunakan parallel port. Ianya berlaku dengan bantuan kod-kod pengaturcaraan yang memberitahu komputer untuk menghantar bit yang tepat kepada pin tertentu, pada masa yang ditetapkan.

PERINGATAN: Perlu ditekankan bahawa terdapatnya risiko kerosakkan kepada papan utama (motherboard) komputer sekiranya berlaku sebarang kecuaian dan kesilapan di dalam melaksanakan projek ini. Penulis mahupun laman rekacipta.net tidak bertanggungjawab di atas sebarang kerosakkan, kehilangan dan kerugian secara langsung atau tidak langsung akibat penggunaan maklumat di dalam artikel ini.

Jika anda faham akan risiko yang terlibat dan ianya tidak melunturkan semangat anda, maka  selamat bereksperimen dan meneroka!
 


Parallel Port


Parallel Port atau Port Selari adalah port yang biasa ditemui di bahagian belakan sesebuah komputer dalam betuk D-Type 25 Pin Female Connector (juga dikenali sebagai DB25 Connector). Parallel port juga turut dikenali sebagai Printer Port dan LPT1 Port (nombor LPT bergantung kepada bilangan port yang terdapat pada komputer anda).

pin pada parallel port
Parallel Port dan panduan pin-pin.  

Parallel port sebuah komputer (DB25) mempunyai 25 pin. Bukan kesemuanya pin akan digunakan untuk projek ini, sebaliknya kita akan menggunakan pin pembumian, 8 pin data (pin 2 hingga 9) dan 4 pin kawalan (pin 1, 14, 16 dan 17) sahaja.


1) Pin Data:


Pin ini berfungsi sebagai Output bit isyarat. Terdapat 8 pin data, iaitu pin 2, 3, 4, 5, 6, 7, 8 dan 9.

Oleh kerana satu pin dapat mengoutput satu bit isyarat pada satu-satu masa, 8 pin data dapat mengoutput 8 bit (1 byte) isyarat secara selari / serentak (port ini dinamakan parallel port / port selari atas sebab ini)


2) Pin Status:


Tidak digunakan untuk projek ini.


3) Pin Kawalan:


Juga dikenali sebagai Control Pin. Meskipun pin kawalan dapat berfungsi sebagai Input dan Output bit isyarat, namun dalam projek ini, pin-pin kawalan akan digunakan sebagai Output sahaja.
 
Terdapat 4 pin kawalan iaitu pin 1, 14, 16 dan 17. Sama seperti pin data, pin kawalan ini menghantar 4 bit isyarat secara selari / serentak.

Tiga daripada pin kawalan yakni pin 1, 14 dan 17 adalah inversed pin. Ini bermaksud sebarang bit yang dihantar melalui ketiga-tiga pin ini akan disongsangkan (inversed) sebelum dioutputkan. Sebagai contoh, bit 1 yang dihantar ke mana-mana inversed pin ini akan disongsangkan oleh komputer menjadi bit 0, manakala bit 0 yang dihantar pula akan disongsangkan menjadi bit 1. Proses penyongsangan bit-bit ini dikenali sebagai inversion.


4) Pin Pembumian:


Pin 18 hingga pin 25 digunakan untuk pembumian (grounding) bagi melengkapkan litar.



Pengalamatan (Addressing) 

Kebanyakkan komputer umumnya mempunyai hanya satu parallel port (dinomborkan sebagai LPT1). Bagi menghantar bit-bit isyarat ke LPT1 melalui kod pengaturcaraan, alamat port tersebut harus dikenalpasti terlebih dahulu.

Untuk mengenalpasti alamat bagi LPT1, pergi ke:

My Computer > Properties >Hardware > Device Manager > Ports (COM & LPT) > ECP Printer Port (LPT1) > Resources


LPT1 Base Address

Daftar (Register)
Alamat LPT1 (dalam Hexadecimal)
Alamat LPT1 (dalam Decimal)
Pin Data
0378
888
Pin Kawalan (Control)
037a
890

Jadual di atas adalah daftar pengalamatan bagi komputer saya sendiri (Windows XP). Nilai ini adalah berbeza mengikut komputer, namum jika komputer anda menggunakan konfigurasi yang standard, berkemungkinan besar nilai alamat LPT1 bagi komputer anda juga sama seperti jadual di atas.

Berdasarkan jadual di atas, bagi menghantar bit isyarat ke pin data bagi LPT1, ianya perlu dialamatkan ke 0378 ( Hexadecimal - sistem nombor perenambelasan).

Untuk merubah nilai alamat ini kepada sistem nombor yang lebih mudah difamahi, gunakan kalkulator saintifik ataupun perisian Windows Calculator (mode saintifik) untuk menukar nilai Hexadecimal ini kepada nilai Decimal (sistem nombor persepuluh). Nilai Decimal bagi 0378 adalah bersamaan 888.

Bagi alamat pin kawalan pula, tambah 2 kepada nilai Decimal bagi alamat pin data (888 + 2). Maka alamat pin kawalan bagi LPT1 adalah 890. Bagi menghantar bit isyarat ke pin kawalan bagi LPT1, ianya perlu dialamatkan ke 890.



Konsep Pengaturcaraan

Apabila kita menulis kod pengaturcaraan yang menghantar nilai tertentu kepada alamat yang telah dikenalpasti, komputer terlebih dahulu akan mengubah data tersebut kepada Binary (sistem nombor perduaan). Nombor binary inilah yang menjadi bit-bit isyarat yang dioutput kepada pin.

Ini adalah kerana komputer hanya mampu “berfikir” dalam sistem Binary sahaja. 001011010010101001 :)

1) Output Ke Pin Data

Sebagai contoh, jika anda menulis kod pengaturcaraan yang menghantar nilai 128 (Decimal) kepada alamat 888 (alamat pin data bagi LPT1). Komputer akan menukar nilai 128 tersebut kepada Binary, bersamaan 10000000.

Bit-bit 10000000 seterusnya akan menjadi output kepada pin-pin data (pin 2 hingga 9). Voltan elektrik yang akan terhasil di pin-pin data tersebut adalah seperti berikut:

parallel-port-data-pin-output-voltage

Contoh seterusnya,  jika anda menulis kod pengaturcaraan yang menghantar nilai 4 (Decimal) kepada alamat 888 (alamat pin data bagi LPT1). Komputer akan menukar nilai 4 tersebut kepada Binary, bersamaan 100.

Bit-bit 00000100 seterusnya akan menjadi output kepada pin-pin data (pin 2 hingga 9). Voltan elektrik yang akan terhasil di pin-pin data tersebut adalah seperti berikut:

parallel-port-data-pin-output-voltage4

TIPS: Anda boleh menggunakan Windows Calculator (mode saintifik) untuk melakukan segala perubahan Hexadecimal, Decimal dan Binary ini dengan mudah.

Sekiranya anda berpuas hati dapat mengawal sehingga 8 LED, anda boleh melangkau bahagian seterusnya ini.

2) Output Ke Pin Kawalan

Memanipulasi pin kawalan adalah lebih rumit kerana wujudnya inversed pin yang diterangkan sebelum ini. Namun, dengan sedikit kesabaran, anda berpotensi untuk mengawal sehingga 4 LED tambahan.

Sebagai contoh, jika anda menulis kod pengaturcaraan yang menghantar nilai 3 (Decimal) kepada alamat 890 (alamat pin kawalan bagi LPT1). Komputer akan menukar nilai 3 tersebut kepada nilai Binary bersamaan 11.

Meskipun secara logiknya bit-bit 0011 sepatutnya menjadi output kepada pin 17, 16, 14 dan 1, harus diingat bahawa pin 17, 14 and 1 adalah inversed pin (pin songsang). Maka voltan elektrik yang terhasil  di pin-pin kawalan tersebut (selepas proses inversion) adalah seperti berikut:

parallel-port-control-pin-output-voltage3

Output pin 17 disongsangkan menjadi 1, output pin 16 tiada perubahan, output pin 14 disongsangkan manjadi 0, dan output pin 1 disongsangkan menjadi 0.

Mengelirukan? Kenapa perlu ia disongsangkan sedemikian rupa? Soalan yang sesuai ditanya kepada jurutera-jurutera komputer yang merekacipta sistem ini :)

Contoh seterusnya, jika anda menulis kod pengaturcaraan yang menghantar nilai 9 (Decimal) kepada alamat 890 (alamat pin kawalan bagi LPT1). Komputer akan menukar nilai 9 tersebut kepada nilai Binary bersamaan 1001.

Oleh kerana berlakunya proses inversion kepada bit-bit (di pin 17, 14 dan 1), maka voltan elektrik yang terhasil adalah seperti berikut:

parallel-port-control-pin-output-voltage9

NOTA: Jika sebutir LED disambungkan ke mana-mana pin (pin data atau pin kawalan) yang menerima bit 1, LED tersebut akan menyala. Ia akan kekal menyala sehingalah pin tersebut menerima bit 0 (0v), atau sehingga komputer dipadamkan.
 


Mempersediakan Komputer Anda

Walaupun secara teori langkah-langkah di bawah boleh diaplikasikan untuk sistem pengoperasian Windows 7 dan Vista, saya secara peribadi belum pernah mengujinya (saya mengunakan PC Windows XP untuk projek ini). Sebarang maklumbalas daripada anda yang telah mengujinya adalah dialu-alukan.

1) Muat turun inpout32.dll (untuk Windows 98/NT/2000/XP)


inpout32.dll adalah DLL (Dynamic Link Library) yang cukup berguna di dalam membantu anda mengakses parallel port secara terus. Kod pengaturcaraan anda perlu membuat panggilan kepada fungsi di dalam DLL ini.

Muat turun inpout32.dll di sini. Selesai memuat turun, ekstrak dan salin (copy) fail inpout32.dll ini  (berada dalam folder: binaries > Dll) ke dalam folder C:\WINDOWS\System32



2) Muat turun kunci registry (Registry Key) dan kemaskini Windows Registry.


Mematikan Warm Poll - Registry key ini berfungsi untuk menghalang Warm Poll oleh Windows (Windows XP dan keatas) di mana komputer akan bertindak memadam kesemua bit-bit di parallel port setiap 5 saat.

Double-click registry key yang dimuat turun untuk pengemaskinian registry secara automatik.

strobe reistry update

Menghidupkan Warm Poll - Sekiranya ada bercadang menyambungkan mesin pencetak di parallel port yang sama setelah selesai projek ini, anda boleh menghidupkan semula Warm Poll mengunakan registry key ini.

Reboot komputer anda setelah kemaskini agar untuk mengaplikasi perubahan Registry tersebut.
 
Guna registry key ini atas risiko sendiri. Registry key ini hanyalah dua baris kod yang saya tulis untuk memudah tugas anda agar tidak perlu mengubah registry anda secara manual melalui REGEDIT. Jika ragu-ragu anda boleh buka menggunakan Notepad untuk diteliti kodnya untuk kepastian.
 


Mempersediakan Litar Dan Kabel


Kabel yang digunakan kabel parallel dengan penyambung 25 pin. Juga dikenali sebagai Printer Cable

Printer Cable 5 meter.


 Rekacipta.net - 01 (2)
Kabel perlu disambung ke parallel port di belakang komputer. Kabel di atas telah saya leraikan perumahnya, dan hujung berikutnya dipotong dijalurkan untuk memudahkan penyambungan pada protoboard (sila rujuk foto-foto berikutnya).

Rajah skematik litar penyambungan adalah seperti berikut:

circuit image

NOTA: Bagi pin pembumian (Ground pin, pin 18 - 25), anda boleh membuat penyambungan kepada kesemua pin pembumian, atau salah satu daripada pin-pin pembumian tersebut.

Nilai perintang penghad yang digunakan adalah bergantung kepada jenis LED yang anda gunakan. Saya memacu LED berwarna putih dengan 3V, 20 mA maka perintang yang digunakan adalah 100 ohm. Perintang penghad adalah perlu bagi mengelakkan LED daripada terbakar.

LED daripada warna yang lain memerlukan nilai perintang penghad yang berbeza.

Rekacipta.net - pendawaian litar LED
Hujung printer cable yang dipotong dan dijalur disambung secara terus kepada protoboard




Menjalan Demo Kawalan LED


Demo ini saya tulis di dalam bahasa pengaturcaraan VBA (VB for Application) menggunakan aplikasi Microsoft Excel. Muat turun demo di sini.

Saya memilih VBA dan Microsoft Excel kerana hampir semua orang mempunyai aplikasi ini, maka adalah lebih mudah untuk sesiapa sahaja meneliti, malah mengubahsuai kod-kod pengaturcaraan bagi demo ini.
 screencap


NOTA: Anda perlu enable fungsi macro untuk membolehkan demo ini beroperasi. Jika anda kurang pasti bagaimana untuk melakukannya, boleh rujuk di sini
 


Penerangan Kod Pengaturcaraan

Untuk melihat kod pengaturcaraan bagi demo ini, setelah dibuka fail demo di dalam aplikasi Microsoft Excel, tekan kombinasi Alt + F11 dan pilih Modules > Module1.

Arahan berikut adalah baris kod terpenting yang bertindak memuatkan inpout32.dll.


Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" _
    (ByVal PortAddress As Integer, _
    ByVal Value As Integer)


Bagi menghantar isyarat kepada pin data dan pin kawalan, gunakan arahan berikut:

Out [alamat pin data atau pin kawalan dalam decimal],[nilai output dalam decimal]


Contoh-contoh:


'Menyalakan kesemua 12 LED
'Ouput nilai 255 (Binary = 11111111) kepada pin data (alamat = 888)
Out 888, 255
'Ouput nilai 4 (Binary = 0100) kepada pin kawalan (alamat = 890)
Out 890, 4

'Memadam kesemua 12 LED
'Ouput nilai 0 (Binary bersamaan 00000000) kepada pin data (alamat 888)
Out 888, 0
'Ouput nilai 11 (Binary bersamaan 1011) kepada pin kawalan (alamat 890)
Out 890, 11

'Menyalakan LED nombor 3 sahaja
'Ouput nilai 32 (Binary bersamaan 00100000) kepada pin data (alamat 888)
Out 888, 32
'Ouput nilai 11 (Binary bersamaan 1011) kepada pin kawalan (alamat 890)
Out 890, 11

'Menyalakan LED nombor 10 sahaja
'Ouput nilai 0 (Binary bersamaan 00000000) kepada pin data (alamat 888)
Out 888, 0
'Ouput nilai 15 (Binary bersamaan 1111) kepada pin kawalan (alamat 890)
Out 890, 15

'Menyalakan LED nombor 1, 8 dan 10

Out 888, 129
Out 890, 15

 


Peringkat Lanjutan


Tahniah jika anda berjaya mengawal LED-LED tersebut menggunakan komputer anda.

Anda boleh mula mengubahsuai aplikasi demostrasi yang diberikan untuk menghasilkan pola nyalaan LED yang berbeza, ataupun anda boleh memuat turun aplikasi dan plug-in online yang dapat membantu anda memanipulasi LED melalui parallel port tanpa pengaturcaraan (contohnya plug-in visualization WndLpt  bagi Winamp) 

Anda juga boleh mula bereksperimen untuk menghasilkan kawalan yang lebih andvance seperti mengawal stepper motor, alatan elektrik dan sebagainya dengan kombinasi pengunaan geganti (relay), transistor kuasa dan sebagainya.

AMARAN: Jika anda ingin mengawal komponen / peranti selain LED, pastikan litar anda mempunyai perlindungan secukupnya terhadap sebarang litar pintas serta back EMF bagi mengelakkan kerosakkan kepada motherboard komputer anda.

Selamat bereksperimen dan selamat berekacipta. Sebarang soalan dan maklumbalas adalah dialu-alukan.


19 comments:

meni_5555 said... Reply To This Comment

hello..

Mr Chein, sy sudah download 'mematikan warm poll'..

bila sy double klik, die keluar mcm message box kat atas.. dan sy tekan yes..

kemudian ade 1 lg message box dye tulis mcm nih:

" Cannot import c:\document and settings\oem\desktop\rekaciptanet-mematikan warm poll.reg: this specified file is not a registry script. you can only import binary registry from within the registry editor."

keadan yg same berlaku pd "menghidupkan warm poll"

mcm mana nak solve the problem?

Chein said... Reply To This Comment

@meni_5555

Saya telah memuatnaik registry key yang telah diperbaiki. Boleh muat turun semula dan cuba sekali lagi

meni_5555 said... Reply To This Comment

terima kasih banyak2..:)

dah boleh masuk, led pun menyala..

nk cuba edit coding pulak..

Chein said... Reply To This Comment

@meni_5555 Cantik :)

Selamat mengodek!

Anonymous said... Reply To This Comment

Hello...macamana pula kalau komputer sekarang sudah tidak mempunyai port printer..semua pakai usb port..adakah dgn menggunakan adapter usb to Parallel port memerlukan pengubahsuaian terhadap software or lain2 setting...

Chein said... Reply To This Comment

@anon

Jika menggunakan adapter usb to parallel, ia tidak akan berfungsi kerana pemetaan I/O yang berbeza. Memerlukan penambahan microcontroller perantara untuk menginterpretasi output, satu proses yang tidak praktikal.

Model komputer terkini tidak begitu mesra rekacipta, atas sebab inilah juga banyak rekacipta/inovasi komersil berasaskan kawalan seperti CNC, dsb masih menggunakan model2 komputer lama.

zinus said... Reply To This Comment

Chein..

"Jika menggunakan adapter usb to parallel, ia tidak akan berfungsi kerana pemetaan I/O yang berbeza. Memerlukan penambahan microcontroller perantara untuk menginterpretasi output, satu proses yang tidak praktikal."

kenapa memerlukan microcontroller perantara? Adakah berkesan jika ubah port output melalui usb port?

berminat utk merekacipta

zinus said... Reply To This Comment

1 lg, melalui port LPT1, brape banyak motor yang dapat saye control?

Chein said... Reply To This Comment

@zinus
1) Output daripada hampir semua USB to parallel adapter bukanlah "true parallel". Hanya model adapter tertentu sahaja yang "true parallel"
http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/ul-16.htm.en


2) Contoh model di link di atas menggunakan microcontroller (Atmega) untuk mengintepretasi I/O (hardware virtualization) bagi membolehkan pengalamatan Parallel port (888, 890) dan inpout.dll digunakan.

3) Boleh sambung sehingga 3 stepper motor (jenis unipolar).

Anonymous said... Reply To This Comment

kalau sy guna cable vga boleh x?

Chein said... Reply To This Comment

@anon

connector kabel VGA tak muat/sepadan dengan connector parallel port (25). kena modify connector / potong kabel tu..

Anonymous said... Reply To This Comment

untuk kabel VGA, kaki mane yg kita boleh guna...lagi satu boleh x benda ni buat kt wndows 7?

Chein said... Reply To This Comment

@Anon - tidak digalakkan guna kabel VGA, tapi kalau rajin nak modify/eksperimen, mana-mana kaki/pin pun boleh (pin 1 hingga 15, kecuali pin 5 kena ke GND).

Windows 7 secara teorinya patut boleh jalan. tapi saya hanya pernah uji di Windows XP sahaja.

Kalau dah siap nanti boleh la kongsi sini, guna windows 7 dan VGA cable :)

Anonymous said... Reply To This Comment

tapi untuk pin kawalan...kaki mane yang boleh digunakan?

Chein said... Reply To This Comment

@anon -

VGA kabel terdiri daripada 15 pin, bermakna sepatutnya ada 15 wayar-wayar kecil di dalam kabel tu. Bilangan wayar yang penting, jenisnya tak berapa penting asalkan penyambungan adalah end-to-end dan wayar adalah tidak terlalu panjang.

Bermakna jika wayar/pin 1 VGA cable disambung ke pin 4 LPT port, maka pin 1 VGA akan jadi pin 4 LPT. Jika pin 1 VGA tadi disambung ke pin 7 LPT, pin 1 VGA tu akan jadi pin 7 LPT.

Anonymous said... Reply To This Comment

sy skrg ni baru cuba guna parallel port..tp apabila disambungkn ke pC, LED dr pin 1,2,3,4 terus menyala...untk control guna excel tu mmg x dpt...apa masalahnya yea?adakah sebab sy guna window 7?

Chein said... Reply To This Comment

@anon

Saya kurang jelas bagaimana penyambungan awak, tapi kalau LED menyala maknanya awak di landasan betul.

Bergantung kpd settings, Windows adakalanya memang trigger pin tertentu untuk ON secara default bila lepas boot, restart. LED akan kekal ON sehingga terima command untuk OFF (daripada file excel tu)

dah buat semua di atas ke? copy inpout32.dll, update registry, check pengalamatan, enable macro.

saya sendiri belum cuba di windows 7, mungkin kita boleh troubleshoot sama-sama...

Anonymous said... Reply To This Comment

sy dh cube buat skli lg...tp kali ini semua LED menyala..sy rase ini mgkin disebabkn windows yg x sama kot...

fairuz said... Reply To This Comment

hai chien.great post!
sy nak tanya, instead of parallel port,digantikan dengan usb port kemungkinan boleh ke?
kalau boleh,mintak dikongsikan coding dan caranya.tqvm.

Post a Comment