Sabtu, 23 Agustus 2008

If you think it may happen, it will happen

Dalam mendesain sesuatu, cobalah untuk berfikir:
"If you think it may happen, it will happen"
Artinya:
Jika kita berfikir sesuatu yang buruk 'mungkin' terjadi, itu pasti terjadi. Sehingga, kita harus mendesain sesuatu sesempurna mungkin sehingga tidak ada celah untuk kegagalan/kerusakan.
Jangan pernah berfikir (contoh):
1. "Ah enggak apa-apa, toh tegangannya cuman lebih dikit dari spesifikasi" - Tunggu aja pasti akan ada komponen yang jebol
2. "Kayaknya mikrokontrollernya enggak mungkin hang deh" - Tunggu aja, suatu saat pasti hang
3. "Ya... mungkin kalo sudah dibikin PCB, enggak akan error lagi" (Karena waktu desain memakai breadboard suka error hasilnya)
Jangan pernah berharap keberuntungan, kalau sistem anda belum sempurna. Contohnya:
Sebelum sidang Tugas Akhir, atau demo didepan customer, pernah terjadi alat yang dibikin enggak jalan. Kita tidak tau penyebabnya. Anda harus mencari tau kenapa tidak jalan, jangan sampai berpikir "Ah, mungkin pas sidang sih jalan, toh kejadian error hanya sekali"
Intinya, setiap abnormality harus dicari tau penyebabnya sampai tuntas-tas-tas....

Bagaimana bikin produk yang profesional?

Biasanya para desainer elektronik setelah membuat prototipe yang berfungsi baik, kebingungan bagaimana membuat prototipe tersebut terlihat ‘profesional’ sehingga layak jual. Enggak mungkin kan kita jual produk dengan pcb yang acak2an dan kabel kemana2... Kalo buat Tugas Akhir sih, oke lah... karena yang dinilai adalah fungsionalnya.

Pengalaman saya, ‘fungsional saja’ enggak cukup buat meyakinkan calon customer akan produk kita. Kita perlu tahu, customer tidak selamanya paham elektronik, mereka dari berbagai macam background, ada yang teknik ada juga yang sosial misalnya. Enggak jarang calon customer menilai produk kita dari cara mengemasnya, kardusnya, bahkan ada yang ngecek beratnya. Yang ngecek beratnya mungkin punya pengalaman jual beli besi rongsok, makin berat, makin mahal hehehe.... It’s a fact!

Beberapa bulan yg lalu saya cari HP murah buat dibawa anak saya, dan saya dapet HP LG seharga 375rb, kecil, bagus, tampilan layar sudah berwarna. Coba produk anda misalnya memakai mikrokontroller, rasanya sulit ya bisa jual seharga 375rb? PCB nya aja udah berapa... Belum komponen2nya... Oleh karena itu, kemasan/packaging, casing, dll merupakan hal yang sangat penting agar produk kita bisa dihargai tinggi oleh calon customer.

Berikut saya berikan tips2 yang mudah2an bermanfaat bagi anda yang bermaksud membuat produk agar tampak profesional.

1. PCB, Soldering
a. Pesanlah PCB yang lengkap termasuk legendnya dan soldermask (biasanya warna hijau). Jangan pake PCB bolong2 apalagi breadboard... PCB bolong2 selain lapisan tembaganya tipis, juga rentan terhadap mekanikal stress (getaran, dll).
b. Usahakan tidak ada koreksi di PCB (jalur dipotong pake cutter, kabel jumper, dll) kecuali memang kepepet enggak bisa cari jalur lain. Itu pun jumpernya setelah disolder memakai lem panas (glue gun) agar tidak lepas.
c. Penyolderan manual biasanya menyisakan flux (arpus) sehingga bagian belakang PCB terlihat kotor. Gunakan IPA (Isopropil Alkohol) untuk membersihkannya menggunakan sikat gigi bekas. (Kalo enggak bekas, baru juga enggak apa2, murah ini....) Kalau mau terlihat mengkilap, setelah digosok IPA, dicuci dengan sabun dan dikeringkan (hati2 kena ke komponen yang rentan air, seperti trimmer, soket IC, dll. IC, resistor, kapasitor sih enggak apa2 kena air. Yakinkan pemberian power setelah PCB kering untuk menghindari short. Kalo udah dicuci dengan sabun, biasanya bagian bawah PCB enggak kalah kualitasnya dengan PCB hasil bath soldering.
Catatan:IPA bisa dibeli di toko bahan kimia, coba ke Bratachem di Jl. Jakarta (Bandung).
d. Siapkan lubang sekrup pada PCB

2. Casing
Casing sangat penting karena merupakan ‘pandangan pertama’ calon customer. Kalo casing jelek, susah kita meyakinkan calon customer. Keep in mind bahwa HP seharga 375rb aja casingnya bagus dan mengkilap.



Ada beberapa pilihan untuk casing, antara lain:
a. Casing plastik standar
Dipasaran tersedia casing yang sudah jadi, biasanya berwarna abu2 atau hitam, malahan ada juga yang dilapisi karet agar anti air. Jika anda memutuskan memakai casing ini, coba diperhatikan:
- Gunakan bor yang tajam untuk melubagi kabel2, LED, dll. Kalau perlu saklar, pilihlah yang bulat bentuknya sehingga membuat lubangnya cukup pakai bor.
- Jika kebutuhan lubang kotak tidak bisa dihindari, terpaksa casing tersebut dilubangi menggunakan gergaji triplek atau besi panas. Sesudahnya rapikan dengan kikir sampai sisi2nya halus.
- Catlah casing tersebut dengan warna pilihan Anda, catnya harus cat semprot (Pylox misalnya), jangan pake kuas... Sebelum dicat, jangan lupa diamplas dengan amplas besi/amplas duco. Pengampelasan menggunakan air sehingga hasilnya lebih halus. Warna hitam dop (Black flat) biasanya bagus.
- Kalo mau dirapikan lagi,atau nambal lubang yg salah bor, bisa memakai dempul. Beli sanpolac di toko besi, tentu saja sebelum diamplas dan dicat.
- Untuk menutupi sisi2 lubang yang tidak rapi, lebih baik menggunakan kertas yang diprint oleh printer warna (pake kertas glossy). Setelah diprint, catlah kertas tersebut dengan Pylox clear agar tampak mengkilap dan tahan air. Malu dong kalo label2nya luntur kena air...
Ini contoh lubang kotak untuk keypad yang ditutupi kertas.



- Usahakan casing tidak polos, tapi pakailah rugos berwarna putih untuk tulisan. Setelah memakai rugos, catlah kembali dengan Pylox Clear agar rugos tidak rusak.

b. Casing plastik
Kita bisa juga mendesain casing plastik, coba hubungi perusahaan injection moulding. Biasanya untuk cetakan (matress) harganya sekitar 10jt – 50jt. Tapi harga per unitnya sangatlah murah. Kalo small quantity, tampaknya pembuatan matress sangat tidak ekonomis.

c. Aluminium extrusion
Casing yang profesional bisa menggunakan alumunium ekstrusi. Dimana casing pada asalnya berupa lonjoran pipa aluminum panjang yang kemudian dipotong2. Matressnya sekitar 10-20jt. Harga per casing untuk ukuran 10x10x4 cm jatuhnya sekitar 100rb.
Setelah dipotong2, alumunium tersebut harus surface finishing dulu, karena setelah proses ekstrusi, hasilnya belum ‘layak jual’. Untuk surface finishing, bisa minta dicat di tukang cat mobil, atau bisa juga anodizing.

d. Plat besi/aluminum bending
Untuk membuat casing satuan, bisa memakai plat aluminum/plat besi dengan ketebalan 1.5mm – 2mm yang ‘dilipat-lipat’/bending. Ada banyak perusahaan yang bisa melakukan bending plat.

e. Aluminum machining
Bisa juga memakai blok aluminum yang dimasining sehingga berbentuk casing. Sayangnya cara ini sangat mahal karena prosesnya lama.

f. Aluminum cor
Dibuat dengan aluminum cair dicetak pada cetakan terbuat dari silika. Contoh barangnya adalah meteran air (memakai kuningan). Biaya per casing sekitar 100-200rb. Perusahaan pembuatnya biasanya memakai kata2 ‘Silica Foundry’

Surface Finishing
Pengecatan aluminum kalau hanya memakai cat semprot kalengan (Pylox misalnya), mudah terkelupas. Agar tidak terkelupas, harus dilapisi dulu. Kalo dicat di bengkel cat mobil, biasanya diberi epoxy. Begitu juga plat besi, jangan lupa diberi epoxy sebelum dicat. Tapi kalo kepepet sih, cat semprot kalengan juga biasanya memadai, dengan syarat sebelum dicat platnya harus diamplas dulu (dikasih air) dan dikeringkan.
Ada juga cat yang hasilnya lebih bagus, biasanya disebut ‘kulit jeruk’. Permukaan setelah dicat agak sedikit kasar seperti kulit jeruk. Coba perhatikan casing komputer.

Surface Finishing Aluminum bisa juga dengan ‘anodizing’. Hasilnya bagus dan sangat profesional.

Special Casing

Kalo anda mau membuat alat yang kecil dan tahan banting dan tahan air, bisa juga setelah dimasukan casing, alat tersebut dicor dengan resin. Anda cukup membeli resin dan katalisnya di toko kimia. Campurkan resin dan beberapa tetes katalis kemudian diaduk. Setelah diaduk, corkan resin kental tersebut di casingnya sampai menutupi seluruh PCB. Biarkan satu hari (atau kurang, tergantung banyaknya jumlah katalis) sampai resinnya membeku. Perlu dicatat bahwa terlalu banyak katalis menyebabkan resin retak-retak karena pemadatan berlangsung terlalu cepat dan menghasilkan panas yang lumayan. Hati-hati resin ini baunya sangat menusuk, lakukan diluar rumah.

Labeling

Casing harus diberi label untuk memberitahu arti LED, fungsi saklar, dll. Pelabelan bisa memakai rugos berwarna putih (kalau casing berwarna hitam) dan kemudian dicat clear. Bisa juga memakai kertas stiker glossy yang diprint. Sesudah diprint, semprot juga menggunakan cat clear. Untuk nama produk yang agak besar, Cutting Sticker cukup profesional untuk ditempelkan.
Di bagian belakang casing, tempelkan juga informasi nama produk, label, tegangan kerja, tipe produk, perusahaan pembuat, MADE IN INDONESIA, dan lain-lain. Untuk label ini bagusnya memakai kertas stiker yang diprint di printer laser.

3. Packaging

Jangan lupa membungkus produk anda dengan plastik pembungkus. Biasanya memakai ‘plastik angin’ agar tampak profesional. Lampirkan juga dokumentasi misalnya:
a. Manual Book
b. Kartu Garansi
c. Quick Reference
d. CD Installer (jika ada)

Setelah dibungkus plastik, masukan kedalam ‘cartoon box’ atau kardus. Usahakan tidak memakai kardus bekas, apalagi ada tulisan Indomie kari ayam, karena ‘sangat memalukan’.... Kalau mau memesan kardus yang profesional sesuai keinginan, kita harus pesan juga ‘pisaunya’. kalo di Bandung, ada perusahaan pembuat kardus pesanan di daerah Caringin (Bypass). Saya lupa alamatnya, ada juga di daerah jalan Holis.

Setelah masuk kardus, jangan lupa kardusnya diberi label atau stiker, atau selubung seperti box2 sound card misalnya kalo mau lebih cantik. Selubung ini bisa diprint atau dicetak di percetakan.

Urusan cetak-mencetak

Mungkin mau membuat brosur/leaflet produk anda, saya berikan tips nya supaya murah:
a. Buat desain memakai CorelDraw
b. Buat filmnya di perusahaan yang membuat film, kalo di Bandung di jalan pungkur, dia spesialis membuat film. Untuk cetakan berwarna, biasanya film yang dihasilkan 4 lembar, untuk C (Cyan), M (Magenta), Y (Yellow) dan K (blacK).
c. Beli kertasnya di toko kertas sekalian dipotong2 dengan ukuran yang sedikit lebih besar dari ukuran brosur. Toko kertas untuk percetakan biasanya menjual kertas ukuran besar yang kemudian dipotong2. Mesin pemotongnya ada di toko tersebut. Tempatnya sama di seberangnya tempat membuat film (Jl. Pungkur-Bandung)
d. Bawa kertas dan filmnya ke percetakan, ada banyak percetakan yang bisa mengerjakan.
e. Biasanya hasil cetakan selesai dalam satu atau 2 hari, tergantung Load dari percetakkan tersebut.
f. Jumlah yang cukup ekonomis adalah 1000 lembar lebih.

Jumat, 22 Agustus 2008

Kalau AVR bisa ngomong...

Kalo bikin mikrokontroller biasanya kita lupa untuk menghasilkan bunyi, paling2 hanya pakai buzzer kecil saja untuk memberikan respon penekanan tombol. Gimana caranya supaya AVR bisa ngomong? Caranya dengan membuat rangkaian DAC sederhana, enggak pakai IC, cukup pakai resistor 10k saja dalam susunan ladder R-2R. Gunakan resistor dengan toleransi 1%.

Rangkaiannya sebagai berikut:


Data suara yang berupa PCM 8 bit langsung dituliskan di Port C dengan frekuensi sampling 8khz (8000 pengiriman data ke port C dalam satu detik), gunakan interupt timer/counter untuk menghasilkan frekuensi 8000 hz yang akurat.
Tentunya timbul pertanyaan, bagaimana menyimpan data suaranya? Saya biasanya memakai MMC karena kapasitasnya cukup tinggi dan bisa menyimpan data suara.
File suara yang berupa MP3/dll harus dikonversi ke format WAV 8 bit sampling rate 8khz kemudian dituliskan di MMC, gunakan software Disk Image untuk menyimpan data ke MMC berdasarkan sektor. Alasan file WAV karena file WAV tidak ada kompresi.
Aplikasi yang cukup powerful untuk kegunaan pemrosesan suara adalah Wavepad.
Ada pertanyaan? Silahkan imel ke rizakomara@gmail.com

Selasa, 12 Agustus 2008

Battery Charger

Dipasaran sudah banyak dijual batere yang rechargeable, misalnya tipe NiCad (Nickel Cadnium) dan NiMH. Kapasitasnya dinyatakan dalam mAh atau Ah. Contohnya batere ukuran AA tertulis 2600mAh, artinya, dalam 1 jam, batere tersebut bisa mensuplay arus 2600 mA kontinu. Jadi kalo bebannya hanya 260 mA, maka batere tersebut tahan 10 jam, dst.

Pengisian batere sederhana adalah dengan mengalirkan arus konstan sebesar 1/10 dari kapasitasnya (selama 16 jam, tergantung rekomendasi penjualnya). Misal batere 2600 mAh harus dialiri arus konstan 260 mA . Kalo kelamaan, batere tersebut bisa rusak. Wah.. repot dong...

Tapi dari beberapa spesifikasi batere tersebut, saya baca bahwa jika diisi 1/16 kali dari kapasitasnya, batere tersebut bisa diisi seterusnya, sehingga kita bisa punya batere yang selalu penuh saat dipergunakan.

Rangkaian sumber arus konstan yang sederhana adalah:



Tegangan Vin diusahakan 3 Volt diatas tegangan batere.

Misal kita ingin mengisi 4 buah batere NiMH 2600mAh

Tegangan batere 4 x 1.2 = 4.8 Volt
Tegangan input = minimum 7.8 Volt
Arus pengisian = 1/16 * 2.6 = 0.1625 Ampere

Resistor R = 1.25/Arus pengisian = 1.25 / 0.1625 = 7.6 ohm, ya... pakailah resistor 8.2 ohm

Daya resistor = I ^ 2 * R = 0.1625 ^ 2 * 8.2 = 0.2 Watt, jadi resistor ½ Watt sudah cukup

Regulator LM317T harus memakai heatsink, terutama bila tegangan input jauh diatas tegangan batere

Ngeprint pake fax

Jam satu malam kita harus ngeprint sesuatu, eh... ternyata tintanya habis... Gimana dong? Sementara dirumah ada mesin fax, masa harus ke rumah tetangga, terus minjem telp buat ngefax pake notebook ke nomer rumah kita? Sayang ya, mesin fax enggak ada port buat ke PC.

Sebenernya caranya gampang kok, cuma perlu beberapa komponen supaya kita bisa ngeprint di mesin fax memakai modem yang terdapat di notebook kita. Yang dibutuhkan adalah:

1. Kabel telepon
2. Resistor sekitar 1 kilo ohm
3. Batere 9 volt kotak



Setelah semuanya dihubungkan, setting fax harus ‘blind dialing’ artinya, modem tidak perlu menunggu ‘dial tone’ untuk memulai pengiriman data. Nomor tujuan juga sembarang saja.
Kadang2 perlu mengatur nilai resistor agar pengiriman fax bisa berhasil. Rangkaian ini juga bisa dipakai untuk hubungan 2 buah telepon, hanya saja tidak bisa menghasilkan bunyi ‘ring’.

Totem-pole, Open Collector, apaan tuh?

Kalo kita perhatikan datasheet MCS-51, disitu tertulis bahwa port bersifat Open Collector with weak pull-up resistor. Kadang ini bikin bingung apabila kita tidak tau maksudnya.Tapi kalo PPI 82C55, outputnya adalah Totem Pole. Apa sih bedanya?

Coba kita perhatikan skema dibawah ini:



Apabila output dari port tersebut HIGH, maka transistor sebelah atas (PNP) akan ON, mengalirkan arus dari Vcc ke beban, sedangkan apabila outputnya LOW, maka transistor sebelah bawah (NPN) akan ON dan menarik arus dari beban ke GROUND.
Mengalirnya arus dari Port ke beban disebut dengan SOURCE CURRENT, sedangkan mengalirnya arus dari Port ke Ground disebut SINK CURRENT. Pada susunan totem pole, SOURCE CURRENT dan SINK CURRENT relatif sama, hanya berbeda di tandanya saja. (Untuk beban yang sama tentunya).
Apabila anda bermaksud menyalakan LED dari port tersebut, LED bisa dipasang terhadap GROUND atau pun terhadap VCC, intensitas nyala LED akan sama hanya berbeda state nya saja. (Apabila LED dihubungkan dengan GROUND, maka LED NYALA=HIGH, LED MATI=LOW ; apabila LED dihubungkan dengan VCC, maka LED NYALA=LOW, LED MATI=HIGH).
Pada susunan Totem Pole, kedua transistor (NPN dan PNP) tidak mungkin ON pada saat yang bersamaan, karena apabila ON, arus besar akan mengalir dari VCC ke GROUND yang mengakibatkan panas dan rusak.

Susunan Open Collector

Pada open collector, keluaran dari PORT hanya memakai satu transistor NPN saja, dengan rangkaian sebagai berikut:



Apabila keluaran port HIGH, maka transistor NPN tersebut akan OFF, dan state HIGH dicapai karena port tersebut ‘ditarik’ ke Vcc, sebaliknya, apabila keluaran port LOW, maka transistor NPN akan ON kemudian menghubungkan port dengan Ground.

Oleh karena itu, untuk port yang Open Collector, hanya SINK CURRENT saja yang besar, SOURCE CURRENT nya sangat kecil karena ‘weak pull-up resistor’. Dengan demikian, apabila port dari MCS51 dihubungkan dengan LED, hubungannya harus terhadap Vcc, seperti gambar berikut:



Hanya saja statenya akan terbalik, LED menyala = LOW. Memang bisa saja LED dihubungkan terhadap ground, hanya intensitasnya sangat kecil (redup-redup saja, meskipun resistor LED diperkecil), karena SOURCE CURRENT pada susunan open collector sangat kecil.

Keuntungan dari open collector adalah beberapa port bisa digabungkan, dan berfungsi sebagai ‘WIRED AND’, artinya ‘gerbang AND yang hanya memakai kabel’. Kenapa demikian?

Bayangkan beberapa port open collector disambungkan,
“Keluaran port tersebut akan LOW, jika salah satu keluaran port LOW”
Eqivalensinya:
“output akan HIGH jika SEMUA port HIGH”
Persis logika gerbang AND ya?

Mikrokontroller dan GSM/GPRS

Mungkin ada yang sedang mendalami pengiriman SMS memakai Handphone? Tentu saja familiar dengan format PDU. Sayangnya, beberapa handphone (Misalnya Siemens C60, dll) hanya mempunyai PDU format saja sehingga konversi cukup rumit. Untuk lebih memudahkan, gunakanlah GSM Modem yang memiliki kemampuan Text Mode, sehingga perintah membaca SMS menjadi:

AT+CMGL=”REC UNREAD”

Sedangkan untuk mengirimkan SMS adalah:

AT+CMGS=”+6281324852500”
> Ini isi smsnya [ctrl-Z]

Mudah bukan? yang pasti tidak repot, bayangkan harus membuat konverter PDU dengan mikrokontroller, yg pasti cukup memusingkan!

GSM Modem yang dijual di pasaran ada yang USB, ada juga yang Serial, saya pernah mencoba GSM Modem yang USB, dan formatnya seperti diatas.

Bagaimana dengan data GPRS? Apakah mungkin mikrokontroller bisa mengirimkan data GPRS?

Jawabannya mungkin, asal GSM Modemnya sudah dilengkapi dengan TCP/IP Stack (Sony Ericsson GR47/GR64), jika tidak, kita harus membuat kode khusus untuk TCP/IP nya. Syarat kedua, komuniksasi GPRS dilakukan dari GSM Modem (client) ke server, tidak bisa ke sesama client (beda dengan SMS), oleh karena itu, dibutuhkan server yang memiliki public IP sehingga dapat menerima data dari client.

BIaya GPRS sangat murah apabila dipakai untuk pengiriman data, lagi pula coveragenya se Indonesia (bahkan mungkin dunia, karena di Singapur, GPRS telkomsel juga jalan....) Suatu saat GPRS ini akan menggeser kedudukan radio trunking untuk data. Satu-satunya yang tidak bisa digantikan GPRS adalah di tengah lautan...

Global Positioning System

GPS adalah singkatan dari Global Positioning System, GPS ini dipakai untuk mendapatkan koordinat di permukaan bumi dimana GPS tersebut berada. Mengenai bagaimana cara kerja, dll... silahkan buka saja di www.garmin.com atau www.howstuffworks.com (ini website favorit saya).
Dipasaran banyak dijual GPS yang sudah dilengkapi dengan display, peta, dan fungsi2 navigasi lainnya. Nah, apabila anda bermaksud meng-embedded-kan GPS dalam mikrokontroller anda, maka anda harus membeli GPS Receiver atau GPS Sensor. GPS ini tidak memiliki display, hanya kabel power dan komunikasi RS-232 saja (ada juga model bluetooth atau USB), jadi sesuaikan dengan kebutuhan anda.
Apabila anda hubungkan GPS dengan serial port (pada baud rate 4800/9600/19200), maka akan keluar data standar sebagai berikut (NMEA 0183), disini hanya dituliskan salah satu sentences saja:

$GPRMC,151641.697,A,0657.8247,S,10737.8563,E,3.12,54,171205,,,A*64

Arti dari sentences itu adalah:

151641.697 waktu saat ini 15:16:41.697 dalam GMT
A = GPS Valid, jika V = GPS invalid/belum dapat sinyal
0657.8247,S Koordinat lattitude, artinya 6 derajat 57.8247 menit, jika dalam derajat, maka Lattitude = 6 + (57.8247/60) derajat Lintang Selatan (South)
10737.8563,E Koordinat longitude, artinya 107 derajat 37.8563 menit, jika dalam derajat, maka Longitude = 6 + (37.8563/60) derajat Bujur Timur (East)
3.12 adalah speed dalam knot (konversi ke km/h adalah dikalikan 1.85185)
54 adalah heading, dimana 0 adalah utara, 90 adalah timur, dst (searah jarum jam)
171205, adalah tanggal, artinya 17 Desember 2005
*64 adalah checksum

Hampir semua data penting terdapat pada sentences GPRMC, sedangkan data ketinggian dari permukaan laut terdapat pada sentences GPGGA. Selain itu, ada juga data posisi satelit, kekuatan sinyal satelit dan lain-lain.

Satu lagi, dalam peta digital, biasanya koordinat dinyatakan dalam bentuk derajat saja (misal Lonngitude 107,232324, lattitude -6.343434) untuk membedakan Lintang Utara dan Selatan, digunakan tanda min. Untuk Lintang Utara memakai + (atau tanpa tanda), sedangkan lintang selatan memakai -. Begitu juga dengan Bujur, Bujur timur adalah +, bujur barat adalah -. Dengan penandaan tersebut, koordinat GPS menjadi konsisten dengan koordinat kartesian.

Menentukan jarak antar dua koordinat geografis

Perhitungan jarak antar dua titik cukup rumit, memakai SIN/COS, dll... Kalo dalam mikrokontroller, dimana resources terbatas, cukup gunakan persamaan (Valid hanya di daerah katulistiwa seperti Indonesia).

del_bj:=(lon2-lon1)*110.60864;
del_lt:=(lat2-lat1)*110.58852;
jarak:=sqrt((del_bj*del_bj)+(del_lt*del_lt)); // dalam km

Dengan catatan delta Longitude dan delta Lattitude tidak besar, alasannya karena estimasi memakai persamaan pitagoras dimana diasumsikan bumi adalah datar.

MMC dengan ATMEGA32

Beberapa developer 80C31 terkadang agak malas bermigrasi ke ATMEGA32, karena ramnya yang tidak bisa ditambah. Sebagai contoh, ATMEGA32 hanya memiliki 2KB static ram, sementara MCS-51 memiliki kebebasan penambahan RAM sampai 64KB dengan menambahkan external RAM. Tapi sebenarnya ini bisa diatasi dengan menggunakan MMC/SD, dimana kapasitasnya bisa mencapai 2 GB, ditambah lagi dengan keunggulan Non Volatile. Harganya juga enggak beda jauh sama SRAM 62256.

Untuk berkomunikasi dengan MMC, cukup memakai port SPI yang telah tersedia, hanya saja perlu voltage converter karena MMC/SD ini bekerja pada tegangan 2.7 – 3.6 volt. Pada rangkaian, diasumsikan mikrokontroller memakai tegangan 5 Volt, apabila mikro memakai 3.3 volt (ATMEGA32L), maka resistor pembagi tegangan tidak dibutuhkan.

Ini rangkaiannya:



Selain standar SPI (MISO,MOSI dan SCK), dibutuhkan tambahan port (yaitu PD6) untuk Chip Select.

Jika anda membutuhkan source codenya, silahkan kirim imel ke saya (rizakomara@gmail.com).

Jumat, 08 Agustus 2008

Interior Lokomotif Diesel Elektrik


Throttle, Forward-netral-reverse


GPS Speedometer


GPS Receiver


Panel Elektrik


Panel atas


Saklar Baterai "Blade Switch"


Dead Man Pedal


Indikator


Rem angin


Power Contactor


Radio Lokomotif "Simoco"

Rabu, 06 Agustus 2008

Umum:Indonesia kaya energi alternatif

Hasil penelitian BPPT menyatakan bahwa potensi Indonesia pada sumber energi panas bumi masih tinggi. Lho? kok masih ada pemadaman bergilir?
Tau gak jawabannya:
1. Eksplorasi energi panas bumi perlu bantuan bule
2. Mesin2 untuk PLTU made in bule
3. Pengeboran ke sumber panas bumi, sama bule
4. Bule harus digaji pake dolar
5. Bule takut teroris kalo ke Indonesia
6. Duit beli mesinnya dipotong 50% buat sogok sana sogok sini
7. Bangun PLTU repot pembebasan tanahnya, salah-salah malah dibakar PLTU nya pake bom molotov
8. Kalaupun udah jadi PLTU nya, masang kabelnya jauuuuhhh banget dan perlu pembebasan tanah (balik lagi ke nomor 7)
Repot. Nikmati aja gelap-gelapan pas pemadaman listrik.

Kemarin saya nonton PJTV, katanya batu bara bisa dibikin bahan bakar cair dengan reaksi ini dan itu... Tapi, mesinnya dari Jepang.
Pinterrrrr.

Indonesia, kapan dong.... kapan??????

Umum:Analisis pemikiran Joko “bensin dari air”

Pernah ada pernyataan di detik.com, isinya “untuk ..... katalisnya adalah diode, dan untuk ..... katalisnya adalah relay (kalo enggak salah)” sorry saya lupa lagi statement lengkapnya.
Mengingat Djoko kerjaannya di bengkel trafo, tentunya dia tau sifat reversibel dari transformator, dengan kata lain, transformator penurun tegangan 220V ke 12V pasti bisa juga mengubah 12V ke 220V. Ya kan?
Dia berfikir, bahwa tegangan sebanding dengan energi, makin tinggi tegangan, makin tinggi energinya (nah disini ketololannya). Makanya, dia bermimpi membuat 220V dari tegangan kecil, (memang bisa kan?) Bagi dia, kenaikan tegangan berarti kenaikan energi. Terus kenapa ada kata2 ‘katalisnya’ diode? Saya yakin pernyataan itu karena diode bisa juga sebagai voltage doubler apabila dirangkai dengan kapasitor. Malah bisa berlipat2 tegangannya.
Dia lupa, bahwa energi seharusnya dibandingkan dengan daya, dimana daya adalah tegangan dikalikan arus. Sayangnya, dalam konversi tegangan, apabila tegangan naik 2x, maka arus turun 2x, alias Daya Input = effisiensi * Daya Output. Yang ada malah penurunan Daya Output akibat efisiensi sistem tidak pernah mencapai 100%.
Tapi bagaimana pun, kita harus salut karena dia sudah menipu orang dan mendapatkan dana bermilyar-milyar dari omong kosong dioda. Itulah sebenarnya kepandaiannya, yaitu kepandaian menipu hehehe... (Tapi jangan salah lho, dia berhasil menipu orang pintar bergelar profesor, yaitu rektor UMY).
Supaya kita tidak tertipu lagi, saya perlu ingatkan salah satu hukum termodinamika atau disebut juga dengan hukum kekekalan energi yang pernah dipelajari di SMP:
1. Energi tidak bisa diciptakan dan dimusnahkan (kecuali e=mc kuadrat pada reaksi nuklir)
2. Total energi sebelum dan sesudah reaksi selalu sama
Sorry, mungkin kata2nya kurang tepat, tapi intinyamah itu...

Umum:Lokal vs Impor

Bangsa kita sangat tidak percaya produk dirinya sendiri. Entahlah, kenapa harus seperti ini? Sementara orang Jepang, China atau Eropa begitu bangganya memamerkan hasil karyanya “Ini produksi Amerika!” (padahal made in China). Anehnya, bangsa kita malah ikut-ikutan bilang “Ini produksi Amerika!” bukannya bilang “Ini made in Indonesia”, tampaknya takut apabila harus bilang bahwa produknya bikinan Indonesia.

Sedih juga. Apalagi saya yang bergerak di bidang desain sampai produksi perangkat elektronik, kadang customer bilang ke saya “Jangan tulis Made in Indonesia”. Ada lagi yang bilang “Tulis aja made in Japan, pasti orang mau beli”. Uuuhh.... cape deh...

Oke lah... kita masih bisa bangga, Indonesia punya Bali yang terkenal ke seluruh dunia karena keindahan alamnya, tapi, bagaimana pun Bali adalah anugerah, sama seperti sumber energi yang berlimpah di bumi Indonesia. bukannya hasil karya bangsa sendiri, bukannya hasil pemikiran bangsa kita sendiri. Pernah suatu waktu, saya diajak salah satu rekan untuk mengikuti tender di perusahaan punyanyah Amerika, sesampainya disana, apa yang kami peroleh setelah mereka melihat produk kita? Hanya tawa yang sinis ketidakpercayaan terhadap kita, sampai2 salah seorang bilang “Saya bawa obeng, boleh saya buka alatnya?” sambil nyengir...

Siapa orang itu? Bule? Bukan. Orang Jepang? Bukan. Tapi orang Indonesia, alias bangsa kita sendiri. Sedih sekali saya waktu itu, saat itu saya enggak peduli lagi dengan tendernya, saya tidak perduli mau lolos atau tidak, karena harga diri saya sudah diinjak-injak (oleh bangsa kita sendiri). Biarlah itu berlalu seiring waktu (romantis gini...?) Mari kita mulai membangun kepercayaan diri kita terhadap diri kita sendiri. Anda pasti mampu. Alhamdulillah, sampai saat ini saya dan bisnis saya masih bisa eksis ditengah-tengah gempuran produk luar yang harganya terkadang membingungkan. (Murah banget, maksudnya).

Saya salut dengan Polytron (bukan iklan!) yang sampai saat ini eksis memproduksi peralatan elektronik. Saya pernah berkunjung kesana, dan semua desainer produknya bangsa kita sendiri, dan kualitasnya juga bagus, tidak kalah dengan produk impor. Sayang, industri elektronik semacam Polytron tidak banyak di Indonesia, kebanyakan hanya industri ‘bungkus’ aja, dalam artian impor isinya, pembungkusan dan manual booknya dilakukan di Indonesia. Tapi mudah2an itu tahapan yang harus dilalui untuk memulai transfer teknologi...

Ada juga industri aktif speaker di daerah Soekarno Hatta, disana mulai menggergaji bikin box, penyolderan, pengetesan, dan lain2 dilakukan sendiri. Disana ada engineernya yang menguasai seluruh proses, dan sangat low profile. Hebat! Saya yakin banyak orang2 seperti dia yang mampu, tetapi tidak memiliki kesempatan...

Tapi, ada juga orang yang memanfaatkan ketidaktahuan orang untuk menipu. Masih ingat penemu air menjadi bensin? Sampai2 presiden kita saja dia tipu! Dengan memanfaatkan ketidaktahuan orang, dia mengeduk urang investor untuk dipakai dirinya sendiri. Banyak lho orang seperti itu, hati2 saja, jangan mudah percaya orang2 yang menawarkan investasi...

Dasar:Pulse Width Modulation (PWM)

Kita lihat rangkaian lampu yang dipasang di mobil. Spesifikasi lampu tersebut adalah:
Daya = 12 Watt
Tegangan = 12 Volt
Lampu tersebut dirangkai seperti dibawah ini:



Saat dinyalakan, mengalirlah arus sebesar I = P / V = 1 Ampere. Apabila arus satu ampere mengalir pada beda tegangan 12 Volt, maka resistansi dari lampu adalah 12 ohm. (Betul ya? Hukum ohm.....)

Tiba-tiba, karena ada yang protes lampu tersebut terlalu menyilaukan, maka anda bermaksud mengurangi cahayanya dengan diseri resistor sebesar 12 ohm. Rangkaiannya menjadi begini:



Karena resistor adalah kawat filamen yang memiliki resistansi tertentu, disini lampu dianggap sebagai beban resistif dengan besar resistansi 12 ohm.
Arus yang mengalir di loop tersebut = V / Rtotal = 12/24= 0.5 A
Karena arus yang mengalir adalah 0.5 A, maka daya lampu adalah I ^ 2 * R = 3 Watt
Tapi, karena resistor 12 ohm juga dilewati arus, maka timbullah panas di resistor tersebut, sebesar:
I ^ 2 * R = 0.5 ^ 2 * 12 = 3 watt.

Dengan 3 watt, maka resistor tersebut akan panassss... Lampu emang redup, tapi malah ada resistor yang panas nih....

Perhatikan 2 pernyataan dibawah:

1. Daya lampu pada awal adalah 12 Watt, setelah diseri resistor menjadi 3 Watt, artinya, intensitas cahaya menjadi seperempat kalinya.
2. Daya yang dibutuhkan pada rangkaian pertama adalah 12 Watt, sedangkan pada rangkaian kedua adalah 6 Watt. Artinya, ‘penghematan’ energi hanya setengahnya.

Apakah ini merugikan? Jelas ya, karena energi yang termanfaatkan (berupa cahaya) berkurang 4 kali, sementara pengurangan daya hanya berkurang 2 kali... Sisanya, terbuang berupa panas pada resistor. Artinya, efisiensi sistem (konversi listrik ke cahaya) jauh berkurang akibat adanya resistor.

Knowledge:
1. Anda jangan mencoba menserikan lampu rumah anda dengan resistor, meskipun anda berniat baik melakukan penghematan, karena bukannya penghematan yang diperoleh, malah bikin rumah menjadi panas dan membahayakan...
2. Apabila tegangan rumah anda 110 Volt, tapi anda memasang lampu pijar 220 Volt 100 Watt, maka lampu tersebut menyerap daya 25 Watt. Tapi, coba bandingkan cahaya lampunya apabila anda memakai lampu pijar 110V 25 Watt, pasti berbeda, kemungkinan lampu 220 Volt lebih redup tetapi menghasilkan panas lebih banyak. Ini terjadi karena saat desain, lampu tersebut di set berada pada efisiensi tertinggi pada tegangan kerjanya. .... Yah... kadang praktek lebih rumit dibandingkan teori. ya kan...

Terus apa hubungannya antara PWM dan artikel ini? Nyambung enggak sih?

Kita membutuhkan sistem pengaturan daya yang efisien, dengan kata lain, penambahan resistor pada kenyataannya tidak mengurangi daya, tetapi ‘memindahkan’ daya untuk kemudian dibuang. Apa urgensi dari pengaturan daya tersebut? Tentu saja banyak, misalnya pengaturan putaran motor, pengaturan panas heater suatu furnace, dan lain sebagainya.

Oleh karena itu, para ahli menemukan metoda PWM yaitu Pulse Width Modulation, bahasa Indonesianya Modulasi Lebar Pulsa. Caranya adalah dengan melakukan ‘chopping’ sumber daya dari beban.



Pada gambar diatas, lampu di ON/OFF kan, dimana perioda ON dan OFF nya tergantung dari daya yang diinginkan. Perbandingan dari perioda ON dan perioda T disebut dengan DUTY CYCLE.

Wah, kalo begitu, lampunya kedip dong? Tidak, selama frekuensi ON/OFF nya cukup tinggi sehingga mata tidak dapat merasakan kedipan lampu tersebut. Selain itu, karena lampu berupa filamen panas, saat sumber daya dimatikan, filamen lampu tidak langsung dingin, sehingga masih menyala. Otomatis, kedipan lampu sama sekali tidak terlihat.

Dengan metoda seperti diatas, tidak ada daya yang terbuang meskipun daya lampu dikurangi sampai 10%. Saklar pada rangkaian PWM bukanlah saklar mekanik, tetapi biasanya berupa komponen MOSFET atau Power Transistor. Rangkaian chopping pada PWM tidak memungkinkan apabila memakai relay, karena relay responnya tidak bisa cepat. Salah-salah hanya akan berdengung saja... (Kecuali untuk pengontrolan heater, perioda PWM bisa cukup lama, misalnya 5 detik).

Penerapan PWM

1. PWM bisa dipakai sebagai pengganti DAC, misalnya untuk reproduksi suara. Dengan hanya satu port digital, kita bisa menghasilkan suara dikombinasikan dengan Low Pass filter. Low pass filter ini dipergunakan untuk membuang komponen frekuensi tinggi dari sinyal, karena sinyal PWM yang berupa sinyal kotak memiliki komponen frekuensi tinggi (coba pelajari transformasi fourier untuk rekonstruksi sinyal kotak).
2. Pengendalian pemanas/heater di industri, pada umumnya memakai prinsip PWM.
3. Sistem injeksi bahan bakar (injection), volume bensin yang dibakar tergantung dari lamanya injector membuka. Ini sesuai dengan prinsip PWM.
4. Switching power supply yang memakai LM2576 merupakan prinsip PWM. Bandingkan dengan LM7805 yang selalu panas pada beban 1 A dan tegangan input 12V.
5. Power supply komputer, charger HP, charger notebook, saat ini sudah memakai prinsip PWM, pemakaian transformator sudah jarang.
6. Pengaturan putaran motor 3 phasa di industri biasanya memakai modul yang disebut dengan Inverter. Inverter ini memakai prinsip kerja PWM.
7. Dimmer lamp memakai prinsip PWM, frekuensi PWM nya adalah 50Hz, dikontrol memakai TRIAC.
8. Kalau buka-buka buku koleksi skema elektronik jaman baheula, biasanya ada rangkaian peredup lampu pijar, dimana lampu pijar hanya diseri dengan dioda BY127. Ini bertujuan agar duty cycle menjadi 50% sehingga lampu menjadi redup.
9. dan banyak lagi

Yang tidak memakai PWM

1. Masih banyak dijual dipasaran Power Supply 12 Volt 20 Ampere yang memakai 5 buah 2N3055 dan ditempeli dengan heatsink yang buesaaarrr dan dilengkapi kipas. Transistor tersebut panas bukan karena rusak, tetapi memang sudah sifat alamiahnya.
2. Audio Power Amplifier. Selalu memakai power transistor besar dan dilengkapi dengan fan, apalagi apabila powernya diatas 100 Watt. Saya belum melihat power amplifier yang memakai PWM, mungkin pembaca pernah melihatnya?
3. Pengendalian traksi motor pada Kereta Listrik. Diatap KRL terdapat resistor yang besar sekali untuk mengatur daya motor. Sepertinya bisa dipakai untuk menjemur baju. Menurut salah seorang rekan di Balai Yasa Manggarai, sudah ada beberapa KRL yang memakai VVVF (Variable Voltage Variable Frequency), mungkin ini mirip dengan prinsip PWM? Maaf saya belum mendalaminya....

Sekian bahasan saya mengenai PWM, terus terang, saya hanya tau kulitnya aja, tapi mudah-mudahan cukup sebagai gambaran mengenai PWM......

Selasa, 05 Agustus 2008

Dasar:Analog Digital dan Digital to Analog Converter

Kalau kita jalankan Setup Bios, biasanya terdapat informasi CPU Temperature. Bagaimana sih caranya sehingga temperatur CPU bisa ditampilkan di layar monitor? Mari kita bahas apa yang dimaksud Analog to Digital Converter.

Dalam sebuah industri, besaran fisis yang berupa temperatur, tekanan (pressure), laju aliran fluida (flow) harus dikendalikan. Pada umumnya, pengendalian tersebut menggunakan PC, PLC ada juga yang disebut dengan SCADA. Pada intinya, besaran fisis tersebut harus dapat diketahui oleh sistem digital. Bagaimana caranya?

Besaran fisis tersebut dirubah menjadi besaran elektris menggunakan sensor. Keluaran sensor biasanya berupa tegangan atau arus (standarnya 4-20mA). Kemudian tegangan/arus tersebut diubah menjadi besaran digital memakai komponen ADC (Analog to Digital Converter).

Sensor

Ambil contoh sederhana, sensor temperatur. Sensor temperatur biasanya mempunyai range output yang berpadanan dengan temperatur. Misalnya, sensor temperatur memiliki range pengukuran temperatur 0 – 100 derajat celcius, sedangkan range outputnya adalah 0 – 5 Volt. Artinya, pada suhu 0 derajat celcius, keluaran dari sensor adalah 0 V dan pada 100 derajat celcius keluarannya adalah 5 Volt. Berapa temperatur apabila keluaran dari sensor 2.5 Volt? Dengan rumus interpolasi, diperoleh bahwa temperatur yang terukur adalah 50 derajat celcius.

Apakah output dari sensor bisa disambungkan ke port digital? (contohnya input dari port paralel yang pernah kita coba untuk mendeteksi penekanan saklar)

Jelas tidak bisa, karena input digital hanya bisa mendeteksi 0 Volt sebagai LOW, dan 5 Volt sebagai HIGH. Sedangkan 2.5 Volt bukan LOW atau HIGH.

Analog to Digital Converter

ADC merupakan komponen yang mengubah besaran analog (dalam hal ini tegangan yang berpadanan dengan temperatur) dan dikonversi menjadi besaran digital.
ADC memiliki beberapa karakteristik penting:
a. Input voltage range
b. Bit resolution
c. Sampling rate
ADC memiliki beberapa jenis bit resolution, antara lain 8 bit, 10 bit, 12 bit, 16 bit dan bahkan 20 bit. Apa yang dimaksud dengan bit resolution?

Setiap tegangan input yang dikonversi menjadi digital hasilnya harus berupa deretan 1 dan 0 yang merepresentasikan besar tegangan tersebut. Katakanlah dengan ADC 8 bit, maka tegangan input harus dikonversi menjadi 00000000 (0 desimal) sampai 11111111 (255 desimal).

Contoh:

Temperatur --- Tegangan --- Keluaran ADC
0 --- 0 V --- 00000000 = 0 desimal
100 --- 5 V --- 11111111 = 255 desimal
50 --- 2.5 V --- 10000000 = 128 desimal

Sekarang kita bisa mencari hubungan antara temperatur dengan keluaran ADC dengan memperhatikan:
a. Range temperatur 0 – 100 derajat celcius
b. Range output sensor 0 – 5 Volt
c. Range input ADC 0 – 5 Volt
d. Resolusi ADC 8 bit = 0 – 255

Range output sensor (b) dan range input ADC (c) harus sama, apabila tidak, perlu memakai ‘signal conditioner’ untuk menyamakan range tegangan. Signal conditioner biasanya berupa rangkaian Operational Amplifier, bukan sampo cuci rambut :) Kita lupakan dulu masalah rangkaian signal conditioner, Insya Allah akan saya kupas dilain posting.

0 derajat celcius ekivalen dengan 0
100 derajat celcius ekivalen dengan 255

Jadi persamaannya:

Keluaran ADC = (255/100) * temperatur

Atau
Temperatur = (100/255) * keluaran ADC

Misalnya keluaran ADC adalah 154, maka temperaturnya adalah 60.39 derajat celcius

Pertanyaannya, kalau temperaturnya 43 derajat celcius, berapa keluaran ADC?

Keluaran ADC = (255/100) * 43 = 109.65

Benar?

Hmm... kenapa jadi ada angka koma? Padahal bilangan biner 8 bit tidak ada angka koma ya? Keluaran dari ADC adalah tanpa koma karena hanya 8 bit. Jadi keluaran ADC adalah integer dari 109.65 = 109

Jadi persamaannya perlu disempurnakan:

Keluaran ADC = | (255/100)*temperatur | atau INT( (255/100) * temperatur )

Dalam konversi ADC, akan timbul error karena ada proses kuantisasi (apa itu kuantisasi? silahkan cari di oom google hehe...) Error ini akan semakin kecil apabila resolusi ADC semakin besar. Sebagai gambaran, ADC yang dipergunakan untuk konversi sinyal suara/musik adalah 16 bit. (Coba lihat Sound Recorder, apabila kita akan mensave suara, disitu ada pertanyaan jenis hasil yang diinginkan).



Sedangkan 24.000 kHz adalah sampling rate, akan kita bahas kemudian.

Jadi, apabila tegangan ini dikonversi menjadi digital 8 bit, dari komponen ADC itu akan keluar 8 buah kabel/jalur yang isinya mulai dari 00000000 sampai 11111111 ? Ya... benar sekali, meskipun ada juga ADC yang jenisnya Serial ADC, dimana keluaran dikirimkan dalam bentuk serial sehingga mengurangi jumlah kabel/jalur.

Sekarang apa yang dimaksud dengan sampling rate?

Sampling rate adalah interval pencuplikan data, sampling rate 1 Hz artinya besaran analog (tegangan) dikonversi setiap 1 detik sekali, jadi 24000 Hz artinya data tegangan dikonversi 24000 kali dalam satu detik. Untuk mendapatkan audio yang sekelas HIFI, dibutuhkan sampling rate 44000 Hz dan resolusi ADC 16 bit, sedangkan untuk kualitas percakapan/speech, sampling ratenya adalah 8000 Hz, resolusi 8 bit sudah cukup.

Proses perekaman suara oleh komputer/mp3 player/berbicara di HP GSM/CDMA (bukan AMPS yang jaman baheula...) salah satunya terdapat proses Analog to Digital conversion.

Digital to Analog Converter (DAC)

DAC adalah kebalikan dari ADC, dengan kata lain, mengubah besaran digital menjadi besaran analog (misalnya tegangan). Parameternya sama, antara lain bit resolution. Biasanya sampling rate tidak dinyatakan dalam DAC, karena konversi digital ke analog berlangsung sangat cepat dan hanya tergantung dari kecepatan data digital yang dikirim ke komponen DAC.

Proses playback MP3 player/mendengarkan suara di HP/memainkan lagu di komputer adalah proses konversi dari digital ke analog.

Mudah-mudahan uraian singkat ini cukup dapat dipahami, karena Digital Input, Digital Output, ADC dan DAC merupakan dasar dari PC interfacing dan mikrokontroller.

Mendapatkan second serial di ATMEGA32 (Soft UART)

Apabila dibutuhkan lebih dari 1 serial port, maka bisa menggunakan softuart, yaitu uart yang dibuat oleh software. pin untuk TX dan RX adalah:

TX : Pin 19 (OC1A)
RX : Pin 20 (ICP1)

Sedangkan source codenya adalah:

#include < avr/io.h>
#include < avr/interrupt.h>
#include < inttypes.h>
#include < avr/iom32.h>
#include < stdio.h>
#include < math.h>
#include < avr/pgmspace.h>
#include < avr/eeprom.h>
#include < avr/wdt.h>

#define F_OSC 11059200
#define SOFT_BAUD 9600 // Software uart baud rate

#define BIT_TIME (unsigned short)((F_OSC + SOFT_BAUD/2) / SOFT_BAUD)
#define kbhit() (srx_done)

volatile unsigned char stx_count;
unsigned char stx_data;

volatile unsigned char srx_done;
unsigned char srx_data;
unsigned char srx_mask;
unsigned char srx_tmp;

SIGNAL( SIG_INPUT_CAPTURE1 )
{
OCR1B = ICR1 + (unsigned short)(BIT_TIME * 1.5);
srx_tmp = 0;
srx_mask = 1;
TIFR = 1 << OCF1B;
if( !(SRXPIN & 1 << SRX))
TIMSK = 1 << OCIE1A^1 << OCIE1B;
}

SIGNAL( SIG_OUTPUT_COMPARE1B )
{
unsigned char in = SRXPIN;

if( srx_mask )
{
if( in & 1 << SRX )
srx_tmp |= srx_mask;
srx_mask << = 1;
OCR1B += BIT_TIME;
}
else
{
srx_done = 1;
srx_data = srx_tmp;
TIFR = 1 << ICF1;
TIMSK = 1 << TICIE1^1 << OCIE1A;
}
}

SIGNAL( SIG_OUTPUT_COMPARE1A )
{
unsigned char dout;
unsigned char count;

OCR1A += BIT_TIME;
count = stx_count;

if( count )
{
stx_count = --count;
dout = 1 << COM1A1;
if( count != 9 )
{
if( !(stx_data & 1) )
dout = 1 << COM1A1^1 << COM1A0;
stx_data >>= 1;
}
TCCR1A = dout;
}
}

void suart_init( void )
{
OCR1A = TCNT1 + 1;
TCCR1A = 1 << COM1A1^1 << COM1A0;
TCCR1B = 1 << ICNC1^1 << CS10;

TIFR = 1 << ICF1;
TIMSK = 1 << TICIE1^1 << OCIE1A;

stx_count = 0;
srx_done = 0;
STXDDR |= 1 << STX;
}

unsigned char sgetchar( void )
{
while( !srx_done );
srx_done = 0;
return srx_data;
}

void sputchar( unsigned char val )
{
while( stx_count );
stx_data = ~val;
stx_count = 10;
}

void sputs( char *txt )
{
while( *txt )
sputchar( *txt++ );
}

int main(void)
{
DDRD=0xbe;

while (1)
{
sputs(“Kirim string\r\n”);
}
}

Keterangan source code:
1. Untuk mengirimkan string, gunakan sputs();
2. Untuk mengirimkan 1 karakter, gunakan sputchar();
3. Untuk menerima data dari serial, cek dahulu apakah ada data baru dengan kbhit(), jika true berarti ada data masuk, ambil data dengan fungsi sgetchar();
4. Untuk softuart tidak ada fasilitas interupsi.

Atmega32 dan RS-232

Sebuah mikrokontroller tentu saja perlu berkomunikasi dengan dunia luar, misalnya dengan PC. Interface yang populer untuk keperluan ini adalah Serial Port RS-232. Untuk melengkapi serial port RS-232 ke mikrokontroller atmega anda, gunakan IC TTL to RS232 converter, yang dikeluarkan oleh Maxim MAX232, atau ICL232. Rangkaiannya:



Di sisi PC, anda dapat menggunakan software Hyperterminal yang terdapat di Accessories, atau, apabila ingin yang lebih bagus, gunakan software Docklight (www.docklight.de). Atau, jika anda mau membuat aplikasi under Delphi yang membaca port serial, gunakan komponen cport yg bisa di download di http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/c/co/comport/


Software di avr-gcc untuk mengakses port serial ini adalah.

#include < avr/io.h>
#include < avr/interrupt.h>
#include < inttypes.h>
#include < avr/iom32.h>
#include < stdio.h>
#include < math.h>
#include < avr/pgmspace.h>
#include < avr/eeprom.h>
#include < avr/wdt.h>

#define F_OSC 11059200
#define UART_BAUD_RATE 9600
#define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_OSC)/((UART_BAUD_RATE)*16l)-1)

volatile unsigned char ser[22]; // variabel buffer serial rx

SIGNAL (SIG_UART_RECV)
{
unsigned char c;
unsigned char a;

c = UDR;

for(a=0;a<21;a++) ser[a]=ser[a+1];
ser[21]=c;
}


void usart_putc(unsigned char c) // kirim ke serial 1 char
{
while(!(UCSRA & (1 << UDRE)));
UDR = c;
}

void usart_puts (char *s) // kirim ke serial 1 string
{
while (*s)
{
usart_putc(*s);
s++;
}
}

int main(void)
{
DDRD=0xfe;

UBRRH = (unsigned char)(UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) >> 8);
UBRRL = (unsigned char)UART_BAUD_CALC(UART_BAUD_RATE,F_OSC);
UCSRB = (1 << RXEN)|(1 << TXEN)|(1 << RXCIE);
UCSRC = (1 << URSEL)|(3 << UCSZ0);

while (1)
{
usart_puts(“Serial ready\r\n”);
}
}

Keterangan source code:

1. Setiap kali RX menerima data, maka data tersebut disimpan di variabel ser[21], data sebelumnya bergeser. Lihat fungsi interupsi serial SIGNAL (SIG_UART_RECEIVE)
2. Untuk mengirim 1 karakter ke TX, gunakan fungsi usart_putc();
3. Untuk mengirim 1 string ke TX, gunakan fungsi usart_puts();
4. Setting baud date di #define UART_BAUD_RATE 9600

Senin, 04 Agustus 2008

Dasar:Pedoman membuat PCB

Berikut pedoman yang bisa dipakai untuk membuat PCB:
1. Pad untuk komponen (IC, resistor, header dll) diameter 62mil, diameter hole 40mil
2. Via diameter 50mil, hole 30mil
3. Lebar track minimum 10 mil, atau 12 mil
4. Jarak antar track minimum 30 mil (center to center), meskipun 20 mil juga bisa, hanya tingkat kegagalannya lebih tinggi
5. Gunakan track lebih lebar untuk jalur power supply (misalnya 24 mil), lebih lebar lebih baik
6. Lubang sekrup, gunakan PAD diameter 150mil, hole diameter 100mil
7. Batas-batas PCB menggunakan Multilayer lebar 10mil.
8. TO220, diameter pad 80mil, hole diameter 50mil
Sampai saat ini saya masih memakai Protel versi 1.5 untuk desain PCB. Dengan pedoman diatas, pengalaman saya tingkat kegagalan fabrikasi PCB cukup kecil dan penyolderan cukup mudah.

Dasar:Mikrokontroller Atmel AVR 8 bit

Atmel Semiconductor sudah mengeluarkan mikrokontroller seri AVR 8 bit yang menurut saya memiliki banyak keunggulan dibandingkan seri 89C51. Keunggulan tersebut antara lain (perbandingan dengan ATMEGA32):
1. Variannya sangat banyak, mulai dari yang 8 pin sampai 64 pin
2. Memiliki internal EPROM, anda tidak perlu lagi memakai batere untuk mem-backup isi RAM
3. Memiliki 8 channel ADC 10 bit
4. Memiliki internal oscilator, sehingga bisa dikonfigurasikan tanpa Xtal.
5. Ram internal 2kb (bandingkan 89C51 yang hanya 128byte)
6. 32KB EEPROM untuk program (89C51 hanya 4kb)
7. Internal watch dog. Nah ini penting, sehingga bisa mencegah sistem hang
8. Brown-out detector, juga mencegah hang.
9. In-system programming, tidak perlu programmer khusus
10. Punya port SPI, I2C
11. Arsitektur RISC, 1 instruksi hanya dilaksanakan 1 clock, bandingkan 89C51 membutuhkan 6-12 clock.
12. Dan yang paling penting:Development tools, cross compiler (C) gratis! Bandingkan dengan 89C51 harus memakai Frankln Cross Compiler yang harganya selangit...

Untuk developmentnya, saya biasanya memakai bahasa C, karena kalau memakai assembly, rumit banget dan memusingkan (menurut saya...) Dengan memakai bahasa C, pemrograman menjadi sangat mudah dan cepat. Kalau mau mencoba memakai bahasa Pascal, bisa juga, silahkan cek www.mikroe.com

Jadi, tinggalkan kebiasaan lama memakai bahasa Assembler untuk pemrograman mikrokontroller, gunakan bahasa C jika anda ingin development yang cepat dan mudah... Gratis juga kan?

Tertarik? Sekarang mari kita persiapkan tools nya yang gratis itu:

Software di PC:
1. AvrStudio Versi 4.13 Build 571 (ini yang saya pakai), silahkan download di www.atmel.com
2. WinAVR Versi 20071221, download di www.sourceforge.net atau search menggunakan google, keyword WinAVR
3. PonyProg2000 download di http://ponyprog.sourceforge.net

Catatan:
WinAVR dengan nama avr-gcc tersedia juga di linux, cuma saya belum mencobanya.

Programmer:

Untuk programmernya kita harus membeli Universal Programmer seharga 10 Juta-an... Kaget? Enggak kok, cuma harus menyiapkan uang sekitar 10 ribu untuk:
1. DB25 Female
2. 4 buah resistor 100 ohm
3. Konektor 6 pin, bisa memakai Header 6 pin
4. Kabel isi banyak kurang lebih 1meter (atau kabel pita)




Konektor DB25 adalah konektor yang dicolokkan ke paralel port untuk memprogram. Nah, dalam proses programmingnya, setiap PCB (atau desain) yang anda buat memakai mikrokontroller AVR, harus menyiapkan konektor 6 pin yang terhubung ke:
1. GROUND
2. Reset (Pin 9 pada ATMEGA32)
3. Not connected
4. SCK (Pin 8 pada ATMEGA32)
5. MISO (Pin 7 pada ATMEGA32)
6. MOSI (Pin 6 pada ATMEGA32)

Sekarang kita buat rangkaian yang paling sederhana, setidaknya kita bisa meyakinkan bahwa seluruh proses mulai dari pembuatan software sampai memprogram AVR berjalan dengan lancar.



Rangkaian sederhana ATMEGA32:



Rangkaiannya mirip dengan 89C51, Xtalnya juga bisa memakai standar 89C51, cuma capasitor xtalnya 22pF. Rangkaian ini berfungsi untuk menyalakan 3 buah LED saja karena tujuan kita adalah menguji apakah ATMEGA32 ini bisa berfungsi atau tidak.

Untuk power supply, gunakan 5 Volt, bisa menggunakan LM2576, 7805 atau sumber tegangan lainnya, hanya jangan sampai lebih dari 5.5 Volt karena dapat mengakibatkan ATMEGA32 rusak.

Mari kita desain software yang bisa menyalakan ketiga led tersebut bergantian tahap demi tahap.

Pembuatan Software ATMEGA32

1. Install AvrStudio yang sudah didownload
2. Install WinAVR
3. Install PonyProg2000

Apabila semuanya sudah diinstall, silahkan buka software AVRSTUDIO nya.

1. Pilih Project – New Project
2. Pilih AvrGCC dan nama project, serta folder project itu disimpan. Lihat gambar dibawah:



Opsi Create Folder akan membuat satu folder baru untuk project yang akan kita buat. Untuk projectnya, saya beri nama:testpertama. AVRStudio akan membuat folder testpertama di My Documents
3. Klik Next



4. Pilih Debug Platform:AVR Simulator dan ATmega32 pada Device.
5. Klik Finish
6. Klik Project – Configuration Option



7. Pilih opsi seperti gambar diatas. Frequency diisi dengan 11059200 hz. Optimization pilih O0 (tanpa optimasi).
8. Klik Ok
9. Sekarang anda telah siap untuk menuliskan source codenya:



10. Isi source code dengan:



#include < avr/io.h >
#include < avr/interrupt.h >
#include < inttypes.h >
#include < avr/iom32.h >
#include < stdio.h >
#include < math.h >
#include < avr/pgmspace.h >
#include < avr/eeprom.h >
#include < avr/wdt.h >

int main(void)
{
DDRC=0xff;
PORTC=0x01;

while (1);
}

Gunakan source code diatas sebagai tempate apabila anda akan membuat software pada platform ATMEGA32. Memang saat ini tidak semua header pada include dipergunakan, tetapi tidak masalah apabila dimasukkan sebagai template.

Pada bahasa C, awal eksekusi adalah pada fungsi main(void), fungsi dari masing-masing perintah tersebut adalah:

DDRC=0xff;
Berfungsi untuk memberitahu ATMEGA32 bahwa PORTC akan dipakai untuk OUTPUT. Silahkan baca datasheet ATMEGA32 mengenai DDR (Data Direction Register)

PORTC=0x01;
Adalah perintah untuk memprogram PORTC agar berisi 01 hexa (00000001 biner).

while (1);
Adalah perintah looping tak berakhir, maksudnya, setelah 2 perintah tersebut dijalankan, sistem akan diam disini.

11. Klik Build – Rebuild all

Apabila dibagian bawah tertulis Build succeded with 0 warnings... berarti proses kompilasi berhasil. Sekarang mari kita isikan hasil kompilasi tersebut ke IC ATMEGA32

12. Siapkan kabel programmer yang sudah dibuat, colokkan ke Paralel Port
13. Sambungkan ujung yang lain kabel programmer yang dipasang header 6 pin ke pin 6 – 9 pada ATMEGA32
14. Jalankan software PonyProg
15. Pilih AVRMicro dan ATMEGA32 pada sebelah kanan atas software ponyprog
16. Pilih Setup-Interface setup dan ikuti setting dibawah:



17. Klik Probe, jika jawabannya Ok, berarti sambungan kabel benar.
18. Klik Setup-Callibration, kemudian Ok (hanya jalankan pada pertama kali merun ponyprog saja)
19. Klik File – Open Program, kemudian cari file hex pada folder My Documents\testpertama\default
20. Klik Command-Write Program, sampai muncul pesan bahwa pemrograman sukses. Jika pemrograman gagal, cek kembali hubungan kabel.
21. Klik Command-Security and Configuration Bit
.


22. Sesuaikan dengan gambar diatas, klik pada BODLEVEL, BODEN dan CKOPT
23. Klik Write
22. Klik Ok, coba reset mikrokontroller dengan memutus dan menyambungkan kembali power supply.
23. Lihat apakah led yang terhubung ke pin 23 dan 24 menyala dan led yang terhubung ke pin 22 mati. Jika ya, berarti anda sudah sukses memprogram ATMEGA32 dengan bahasa C! Kenapa hanya 2 led yang menyala padahal port C diisi angka 1? Silahkan pelajari source code dan rangkaiannya.

Sekarang, mari kita buat agar LED tersebut menyala bergantian.

Tambahkan pada program satu buah fungsi delay, sehingga program menjadi:
.
.
.
void tunggu(unsigned int dx)
{
unsigned int x;
unsigned int y;

for(x=0;x< 500;x++)
{
for(y=0;y< dx;y++) {}
}
}

int main(void)
{
DDRC=0xff;

while (1)
{
PORTC=0x06;
tunggu(500);
PORTC=0x05;
tunggu(500);
PORTC=0x03;
tunggu(500);
}
}

Coba dicompile dan dimasukkan ke mikro nya, apakah benar lednya menyala bergantian?

Pengembangan lebih lanjut:
1. Output port C dihubungkan dengan 8 buah lampu 220 Volt melalui isolasi optis yang dibahas pada posting mengenai isolasi optis.
2. Buat program yang membuat ke 8 lampu tersebut menyala bergantian.
atau
Anda dapat juga membuat alat pencegah maling seperti yang terdapat pada posting saya di bagian isolasi optis.

Dasar:Power Supply 5 Volt

Setiap mikrokontroller pasti membutuhkan sumber tegangan, lazimnya adalah 5 Volt (meskipun ada beberapa yang bisa memakai tegangan 2.85 – 3.6 Volt).
Tapi, apakah masih memakai LM7805 untuk sumber tegangan 5Volt? Anda perlu heatsink yang besar kan kalau memakai LM7805 karena panasnya.... minta ampun!
Tampaknya anda perlu mengucapkan selamat tinggal kepada LM7805, karena National Semiconductor sudah mengeluarkan LM2576 untuk regulator 5 volt berjenis ‘Simple Switcher’.

Rangkaiannya (diambil dari datasheet LM2576):



Dengan beban 1 Ampere pada Output dan Input 12 Volt, LM2576 hanya hangat saja, karena bekerja dengan prinsip switching power supply. Komponen yang kritis adalah:
Coil L1 = 100uH
Gunakan coil yang ukuran kawatnya cukup besar sehingga dapat dialiri arus cukup besar, mungkin anda perlu mencoba-coba dahulu induktor yang cocok. Terkadang agak sulit mencarinya di pasar lokal, tapi beberapa toko sudah menjualnya.
Catch Dioda 1N5822
Dioda ini sudah tersedia di pasar lokal.
Capasitor gunakan yang berkualitas tinggi (105 derajat celcius), biar enggak meletus!
Untuk input lebih dari 12 volt saya sarankan memakai heatsink kecil.

Saat mendesain PCB, usahakan jalur Ground dibuat setebal dan sedekat mungkin dengan LM2576.

Pengamatan saya, saat ini banyak sekali peralatan elektronik yang memakai IC jenis ini, termasuk travel charger (charger HP di mobil), dll.

Seperti juga LM78xx, LM2576 tersedia dengan bermacam2 tegangan keluaran (3.3 Volt, 5Volt, 12 Volt) dan versi adjustable. Silahkan download datasheetnya di www.national.com. Anda akan menemukan bentuk2 rangkaian lain, termasuk Inverting power supply (menghasilkan -12 Volt dari 12 Volt).

Dasar:Interfacing Power Electronic dan Optoisolating

Untuk menghubungkan PC/mikrokontroller dengan peralatan luar yang arus/tegangannya besar, tidak bisa secara langsung, karena tegangan keluar dari mikrokontroller/PC maksimum hanya 5 volt dengan arus kurang dari 10mA. Oleh karena itu, dibutuhkan rangkaian ‘interface’ sehingga mikrokontroller/PC bisa menjalankan peralatan dengan tegangan/arus besar.

Selain itu, teknik ‘optoisolating’ adalah mencegah hubungan elektris antara mikro/PC dengan peralatan berarus besar tersebut. Pengalaman saya, optoisolating adalah ‘wajib’ karena bisa menghindari:
a. Rusaknya mikro/PC akibat kesalahan rangkaian/masuknya listrik tegangan tinggi ke PC/mikro
b. Mencegah transient dari beban ke PC/mikro. Transient ini sering mengakibatkan PC/mikro ‘hang’

Teknik isolating bisa memakai 2 komponen, yaitu:
1. Mechanical relay/contactor
2. IC Optoisolator (TLP521, PC812, dll.)

Sekarang mari kita bahas satu per satu:

Mechanical Relay

Misal kita ingin menyalakan lampu 220V yang dikontrol oleh paralel port/mikrokontroller.



Tipe transistor bisa memakai BD139/TIP31, sedangkan tipe relay tergantung dari beban, dipasaran banyak tersedia relay 12 volt tetapi bebannya bisa 220 Volt. Apabila memakai relay yang 12 volt, rangkaian anda harus menyediakan tegangan 12 volt, selain 5 volt untuk mikrokontroller.
Jangan lupakan dioda pada terminal relay, untuk mencegah arus induksi merusak transistor.
Prinsip kerjanya adalah sebagai berikut:
Apabila pada input terdapat tegangan 5 volt, maka transistor menjadi ON, menghubungkan relay ke Ground, akibatnya relay ON.
Relay ON menyebabkan lampu menyala, karena lampu dihubungkan dengan sumber tegangan 220 volt.
Cukup sederhana bukan?
Nah, sekarang, silahkan membuat ‘lampu disko’ yang terdiri dari 8 lampu menyala bergantian dikendalikan dengan komputer/mikrokontroller.... Atau, mau membuat alat ‘pencegah maling untuk rumah kosong’? idenya adalah:
1. Lampu taman dinyalakan otomatis apabila sudah jam 6 sore, dan dimatikan pada jam 6 pagi.
2. Menyalakan TV pada waktu-waktu tertentu.
3. Menyalakan pompa air pada pagi dan sore hari.
4. Menyalakan radio pada waktu-waktu tertentu
Dengan cara diatas, maling akan berfikir bahwa rumah kosong tersebut ada penghuninya, karena terdengar suara TV, pompa air, dan lain-lain.
Malahan, apabila anda mau berjalan-jalan ke toko elektronik, disana banyak tersedia ‘magnetic switch’ yang bisa ditempelkan di pintu, sehingga apabila pintu terbuka, swith tersebut akan OFF dan menyuruh komputer/mikrokontroller untuk mengirimkan SMS langsung ke HP anda! Canggih bukan?

Ok, kita teruskan dengan teknik optoisolating menggunakan optoisolator.



Cara kerja:
1. Apabila input LOW, maka LED Pada optoisolator menyala, sehingga transistor pada optoisolator ON. Karena transistor pada opto ON, maka akan menshortkan GATE dari mosfet ke GROUND, akibatnya mosfet OFF dan Beban tidak menyala.
2. Apabila input HIGH, LED pada optoisolator mati, transistor opto akan OFF sehingga gate mosfet terhubung ke 12 Volt lewat resistor 1k, akibatnya mosfet akan ON dan beban menyala.

Mosfet disini bisa menggunakan IRF540 dari International Rectifier. Mosfet bisa digantikan juga dengan power transistor seperti 2N13001. Apabila ingin menyalakan beban 220V, maka pada keluaran bisa dipasang relay 12 Volt atau Solid State Relay.
Dalam rangkaian optoisolated, perlu diingat bahwa power supply 12 Volt dan Groundnya harus terpisah dari power supply 5 Volt untuk mikrokontroller, jika tidak, percumah dong pake optoisolator...

Input Optoisolated

Tadi adalah optoisolated untuk OUTPUT, sekarang bagaimana dengan INPUT? Kan harus terisolasi optik juga? Caranya lebih mudah, lihat rangkaian berikut:



Apabila pada input terdapat tegangan 5 Volt, maka LED opto menyala, mengakibatkan transistor opto ON sehingga output dihubungkan dengan ground = 0 Volt = Low. Sedangkan apabila input tidak terdapat tegangan, LED opto mati, transistor OFF sehingga output menjadi mendekati 5 volt = High.

Disini perlu dicatat bahwa state dari output adalah berlawanan dengan input, sehingga pada software perlu di-invert kan dahulu.

Kuncinya adalah, semua sensor (switch, magnetic switch, proximity sensor, dll) harus dapat menyalakan/mematikan LED. Rangkaian ini bisa dipakai apabila kita akan memakai sensor yang sudah jadi, misalnya produk OMRON, AUTONICS, dll.

Teknik optoisolated pada OUTPUT dan INPUT merupakan standar dan keharusan di modul-modul kontrol industri, oleh karena itu, dalam desain modul kontrol, jangan lupa untuk menambahkan rangkaian Optoisolated pada bagian Input dan Outputnya.Selain itu, implementasi optoisolator harus memisahkan power supply dari mikrokontroller dengan bagian high currentnya.. agak merepotkan memang.

Dasar:Lebih dalam dengan paralel port

Anda sudah mencoba menyalakan LED dan mendeteksi penekanan saklar lewat paralel port. Sekarang, apa saja sih isi paralel port itu yang berjumlah 25 pin? Kita lihat tabel berikut:



Dari tabel diatas bisa kita lihat bahwa paralel port memiliki banyak pin untuk Input dan Output, pin tersebut disesuaikan dengan kebutuhan printer karena pada desain awalnya, paralel port adalah untuk menghubungkan PC dengan printer. Meskipun sekarang kebanyakan PC dan printer terhubung lewat port USB, sehingga paralel port tidak dipakai lagi (bagus bukan?, kita bisa memanfaatkan paralel port....)

Address paralel port LPT1 biasanya adalah 378 Hexa (selanjutnya, untuk notasi heksa akan saya tuliskan 0x378). Bagaimana isi dari address port 0x378 itu?



Disini kita lihat bahwa address Base+0 = 0x378 adalah Write, dengan kata lain, kita bisa menuliskan di port ini dan hasilnya dilihat di pin 2 – 9 paralel port. Sedangkan untuk port 0x379 (base+1), konfigurasinya adalah:



Terlihat bahwa port hanya bisa dibaca (Read Only), artinya kita membaca isi dari port itu, dan akan merepresentasikan pin-pin pada paralel port.

Begitu juga dengan alamat base+2 (0x37a), konfigurasinya adalah:



Untuk pin-pinnya, silahkan cocokkan nama pin pada tabel pertama.

Biasanya yang dipakai untuk Input dan Output via paralel port adalah Base+0 (pin 2-9) dan Base+1 (pin 10,11,12,13 dan 15). Untuk input, memang paralel port hanya menyediakan 5 channel, berbeda dengan output, disediakan lebih dari 8 channel apabila anda memanfaatkan juga port Base+2.

Apabila anda membutuhkan lebih banyak port untuk input maupun output, bisa dilaksanakan dengan teknik multiplexing, tetapi saya tidak akan membahas teknik tersebut karena tampaknya paralel port sudah mulai ‘usang’ digantikan dengan USB. Alasan lain:
1. Paralel port tidak tersedia di notebook jaman sekarang (kecuali memakai PCMCIA to paralel port, jangan memakai USB to paralel port)
2. Pemrograman paralel port cukup repot karena akses port secara langsung tidak diijinkan oleh Windows NT/XP.
3. Koneksi/kabel antara PC dan alat tidak bisa terlalu panjang. (Beberapa literatur menyarankan panjang kabel maksimum 1 meter).

Untuk kebutuhan interfacing dengan PC, saya sarankan menggunakan mikrokontroller atau produk sejenis yang memakai koneksi USB (coba cek www.labjack.com, anda bisa membelinya menggunakan kartu kredit seharga usd 108).

Apabila memakai mikrokontroller, komunikasi antara PC dan mikrokontroller bisa menggunakan RS-232 atau RS-485 sehingga panjang kabel antara PC dengan alat lebih dari 1 meter (maksimum 1km, cukup panjang bukan?). Keuntungan lain:
1. Notebook memang sudah tidak ada port serial RS-232, tetapi konverter USB to Serial banyak dijual dipasaran dengan harga kurang dari 150rb. (kalau mau lebih murah, bisa juga membeli kabel data untuk handphone yang USB).
2. Apabila dibutuhkan sistem yang wireless antara PC dan mikrokontroller, cukup beli saja modul wireless yang banyak tersedia di pasaran (pasar luar negeri maksudnya, silahkan buka www.aerocomm.com/www.mouser.com)
3. RS-232 hanya menggunakan 3 kabel (RX, TX dan GROUND), bandingkan dengan paralel port yang menggunakan lebih dari 10 kabel.