Line Sensor pada Line Follower

Pada aplikasi Robot Line Follower, ada sejumlah pilihan line sensor yang dapat digunakan. Yang paling sederhana menggunakan LDR, dengan menggunakan prinsip pembagi tegangan. Namun, LDR memiliki respons yang agak lambat, sehingga untuk line follower yang lebih agresif, sensor ini digantikan dengan Infra Red yang lebih responsif.

Berikut adalah dua rangkaian line sensor sederhana berbasis infrared. Yang pertama mengeluarkan output tegangan analog, sementara yang kedua dapat langsung dihubungkan dengan pin I/O digital.

qtr1a

qtr1c



Untuk diskusi dan sharing mengenai mikrokontroler dan robotik, silahkan bergabung dengan milis id-mikrontroler@yahoogroups.com. Bila memerlukan informasi produk dan pelatihan terkait dengan mikrokontroler dan robotik, silahkan menghubungi Next System Robotics Learning Center.

Atmel ISP Programmer

Programmer ini dihubungkan dengan port paralel dari komputer, dan dapat digunakan untuk memprogram kebanyakan mikrokontroler AVR dari Atmel, tanpa harus mencabut chip dari sistem. Antarmuka melalui port paralel ini memiliki pinout yang sama dengan programmer STK-200 dari Kanda Systems. Kabel pemrograman STK-200 sangat populer, dan kebanyakan software ISP download mendukungnya.

Divais ini sangat sederhana, hanya berisi satu chip 74LS245 (octal bidirectional 3-state driver), serta didukung oleh software programmer seperti PonyProg. Ketika divais tidak diprogram, jalur interface pemrograman dalam kondisi tri-state, sehingga divais dapat berfungsi secara normal.

Berikut adalah standard pinout ISP::
atmel_isp_layout
RESET, digunakan untuk me-reset target dengan kendali komputer.
SCK, serial data clock.
MOSI - Master Out Slave In, digunakan untuk mengirim data dari PC (master) ke AVR (slave). Data dikirimkan pada sisi dari SCK.
MISO - Master In Slave Out, digunakan untuk mengirim data dari AVR (master) ke PC (slave). Data dikirimkan pada sisi dari SCK.
LED, sebagai indikator bahwa pemrograman tengah berlangsung.
PWR, digunakan untuk menyediakan daya pada sistem target selama pemrograman.

atmel_isp_ckt

Memprogram Mikrokontroler AVR

AVR memiliki dua mode pemrograman: Parallel Programming Mode (Parallel Mode) dan Serial Downloading Mode (ISP mode).

Pada Parallel Mode, divais yang akan diprogram ditempatkan pada soket pemrograman dan diperlukan tegangan 12V pada pin RESET. Komunikasi antara programmer dan divais dilakukan dengan perintah pemrograman secara paralel. Kecepatan pemrograman dua kali lebih cepat dibanding ISP Mode. Cara pemrograman ini biasanya digunakan dalam pre-program dan/atau ISP Mode tidak dapat digunakan karena faktor disain. Kebanyakan programmer, kecuali STK500, kelihatannya tidak mendukung mode ini.

Pada ISP Mode, divais berkomunikasi melalui interface SPI untuk memprogram dan mem-verifikasi. Mode ini hanya memerlukan tiga jalur sinyal tanpa tegangan pemrograman 12 Volt, sehingga dapat langsung memprogram sistem target - ISP (In-System Programming). Hanya saja, ISP Mode tidak dapat merubah fuse bit pada beberapa divais, dan beberapa divais tidak memiliki fitur ISP. Divais seperti ini harus diprogram secara paralel.
avrx_lpt

Ketika menggunakan AVR dengan ISP Mode, target board harus dirancang dengan mempertimbangkan fungsi ISP, yang menggunakan pin ISP : RESET, SCK, MISO dan MOSI. Pin ISP dapat berbagi antara fungsi I/O dan ISP dengan memuaskan. Ketika menggunakan pin I/O yang memiliki fungsi ISP, harap diperhatikan hal-hal berikut:

a. Sisipkan sebuah resistor antara pin RESET dan rangkaian reset untuk menghindari interferensi dari rangkaian reset.
b. Pastikan bahwa aksi ISP tidak menimbulkan efek pada fungsi lain.
c. Jangan men-drive dari rangkaian luar saat operasi ISP berlangsung, atau bila dikehendaki demikian, perlu disisipkan sebuah resistor.
d. Jangan menghubungkan dengan beban berat karena akan mempengaruhi fungsi ISP.

isp_pcb2

Sensor Temperatur LM35

lm35LM35 dari National Semiconductor adalah sebuah sensor temperatur centigrade presisi, yang memiliki tegangan output analog. Memiliki jangkauan pengukuran -55ºC hingga +150ºC dengan akurasi ±0.5ºC. Tegangan output adalah 10mV/ºC. Tegangan output dapat langsung dihubungkan dengan salah satu port mikrokontroler yang memiliki kemampuan ADC, misalnya ATmega8535. ADC pada ATmega8535 memiliki resolusi 10-bit, yang dapat memberikan keluaran 2^10 = 1024 nilai diskrit. Bila digunakan catu 5V, resolusi yang dihasilkan adalah 5000mV/1024 = 4.8mV. Karena LM35 memiliki resolusi output 10mV/ºC, maka resolusi termometer yang dibuat dengan ATmega8535 adalah 10mV/4.8mV ~ 0.5ºC.

Beberapa varian LM35:

* LM35, LM35A memiliki jangkauan -55ºC hingga +150ºC.
* LM35C, LM35CA memiliki jangkauan -40ºC hingga +110ºC.
* LM35D memiliki jangkauan 0ºC hingga +100ºC.

Pemrograman Mikrokontroler PIC dengan Bahasa C

Mikrokontroler PIC 16F877 merupakan salah satu produk dari Microchip yang sangat populer. Hadir dalam beberapa kemasan, namun yang umum beredar di pasaran umum adalah PDIP 40. Mikrokontroler ini memiliki flash 8kB, 33 buah port I/O, 8 kanal ADC dan 2 kanal PWM; sehingga cukup ideal untuk diterapkan dalam aplikasi robotika.

Ada sejumlah compiler bahasa tingkat tinggi yang tersedia untuk PIC, diantaranya MikroC yang berbasis Bahasa C. Pemrograman dengan MikroC cukup mudah. Kelihatannya, pihak pengembang ingin memanjakan penggunanya, sehingga dalam beberapa bagian, kemudahan menjadi keterbatasan. Anyway, untuk pembelajar pemula atau mereka yang ingin meng-aplikasikan mikrokontroler PIC secara cepat, MikroC merupakan produk yang bisa dipertimbangkan.

Bagi mereka yang ingin mempelajari mikrokontroler PIC dengan cepat, NEXT SYSTEM Robotics Learning Center yang berlokasi di Bandung, menyelenggarakan kelas pelatihan Pemrograman Mikrokontroler PIC dengan Bahasa C, BASIC dan Pascal. Peserta pelatihan bisa mendapatkan PIC 16F877 dengan harga sangat murah. Silahkan menghubungi telepon (022) 4222062 atau email info@nextsys.web.id untuk informasi lebih lanjut.

Pemrograman Mikrokontroler dengan Bahasa C

Kembali ke era kegelapan dari mikroprosesor, dimana pengembangan software dilakukan secara eksklusif dengan bahasa assembly yang spesifik dari divais tertentu. Bahasa assembly ini menggunakan mnemonic sebagai pengganti dari kode numerik bahasa mesin. Untuk menuliskan 0x12 0x07 0xA4 0x8F yang akan memerintahkan chip untuk memasukkan sebuah nilai ke sebuah lokasi memori, kita dapat menuliskannya demikian dengan bahasa assembly: MOV 22, MYBUFFER+7. Program assembler akan menerjemahkan perintah tersebut ke dalam kode mesin.

Saya pernah menulis kode dalam bahasa mesin sewaktu kuliah dulu, dan percayalah saat saya mengatakan bahwa bahasa assembly merupakan langkah maju dalam upaya meningkatkan produktivitas. Namun, bahasa assembly untuk sebuah piranti terikat dengan piranti tersebut. Sulit untuk menjadi mahir di dalam bahasa assembly karena ketika mikrokontroler yang dimaksud kadaluarsa atau hilang dari pasaran, maka apa yang kita pelajari pun menjadi mubazir. Bahasa assembly merupakan bahasa dengan tujuan tertentu yang hanya bekerja pada chip tertentu. Bila kita menguasai bahasa assembly untuk chip Motorola, tidak secara otomatis kita akan menguasai bahasa assembly untuk chip Zilog.

Bagaimana dengan bahasa tingkat tinggi? Seperti Bahasa C misalnya?

Bahasa tingkat tinggi umumnya dikembangkan untuk tujuan umum, untuk pemakain secara luas. Bahasa C merupakan salah satu bahasa tingkat tinggi yang banyak diminati. Sekali kita belajar C, kita dapat berpindah dengan mudah diantara keluarga mikrokontroler, menulis software dengan lebih cepat dan kode yang dibuat lebih mudah dimengerti dan di-maintain. Namun harus dicatat, mikrokontroler yang dimaksud harus memiliki C compiler yang ditulis untuknya. Dengan kata lain, kita bisa membuat program dalam bahasa C untuk mikrokontroler AVR, bila tersedia C compiler untuk AVR.

Saat ini, tidak sulit mencari C compiler untuk mikrokontroler yang beredar di pasaran, walaupun harus sedikit menunggu untuk chip-chip keluaran terbaru.

Satu produk C Compiler open source untuk mikrokontroler AVR, yang cukup banyak diminati, adalah WinAVR, yang dapat diunduh dari http://sourceforge.net/projects/winavr. WinAVR dapat diadaptasikan ke dalam AVR Studio IDE yang memiliki GCC plug-in.

Mikrokontroler KicChips

KicChips merupakan mikrokontroler turunan dari PIC, yang dapat diprogram dengan mudah menggunakan Bahasa BASIC melalui KicStudio. KicChips dapat dengan mundah dihubungkan dengan LED, Saklar, Buzzer, dan yang lainnya, serta mendukung beberapa antarmuka standar untuk mengendalikan modul elektronik secara Serial dan I2C.

Yang menarik adalah, firmware di dalam chip dapat di-update dan di-upgrade melalui internet. Dengan demikian, pengguna bisa mendapatkan update terakhir tanpa harus membeli chip yang baru.

KicChips dapat diprogram secara langsung melalui dua buah resistor dan kabel serial yang dihubungkan dengan komputer. Jadi, tidak perlu membeli atau membuat programmer untuk men-download program yang sudah dibuat.

Selain dengan BASIC, pihak vendor menyediakan KicFlow, yang memungkinkan pengguna untuk mengembangkan program menggunakan flowchart.

Setiap chip memiliki In-Circuit Debugger. Fitur mengagumkan ini memungkinkan pengguna untuk melakukan simulasi program di komputer sementara chip tengah beroperasi pada saat yang bersamaan.

Sensor Cahaya

Sejumlah divais elektronik sederhana dapat digunakan sebagai "mata" pada robot, diantaranya:


  • Photoresistor atau sel CdS (cadmium-sulfide). Sel CdS memiliki resistansi yang nilainya bergantung pada cahaya yang diterimanya. Bila tidak ada cahaya yang mengenainya, resistansi-nya sangat tinggi,
    sementara ketika dikenai cahaya, nilai resistansi-nya turun. Sel CdS sangat mudah dihubungkan dengan komponen elektronik lainnya, namun yang harus diperhatikan, komponen ini memiliki reaksi yang lambat, tidak dapat "menangkap" lampu kilat lebih dari 20 atau 30 kali per detik.

  • Phototransistor. Kemasannya sama dengan transistor biasa, dengan bagian atas terbuka. Tidak seperti sel CdS, reaksi phototransistor sangat cepat, dapat "menangkap" lampu kilat puluhan ribu kali per
    detik.

  • Photodiode. Merupakan versi dioda dari phototransistor. Satu karakteristik umum dari kebanyakan photodiode adalah, outputnya rendah, bahkan ketika dikenakan cahaya terang. Agar memberikan output yang efektif, biasanya, output photodiode dihubungkan dengan sebuah penguat.


Masing-masing komponen di atas memiliki sensitivitas yang berbeda. CdS mirip dengan mata manusia, sensitif terhadap cahaya tampak; sementara Phototransistor dan Photodiode lebih sensitif di daerah inframerah.

Mikrokontroler AVR Seri Tiny

AVR Tiny merupakan mikrokontroler yang mengesankan dan ekonomis. Secara fisik cukup kecil, namun di dalamnya tidak demikian. AVR Tiny mengusung arsitektur AVR RISC yang kompatibel dengan semua mikrokontroler AVR. Mereka memiliki In System Programming (ISP), Flash Memory, Internal EEPROM dan RAM, Timer, Interupsi, Analog Comparator, ADC dan yang lainnya.

Berikut adalah beberapa anggota keluarga ATtiny, namun tidak semuanya tersedia di Indonesia:


  • ATtiny11 1-Kbyte In-System programmable Flash Program Memory, 32 byte SRAM, Up to 6 MIPS throughput at 6 Mhz.

  • ATtiny12 1-Kbyte In-System programmable Flash Program Memory, 32 byte SRAM, 64 Byte EEPROM, Up to 8 MIPS throughput at 8 Mhz.

  • ATtiny13 1-Kbyte In-System programmable Flash Program Memory, 64-Byte SRAM, 64-Byte EEPROM, 32-Byte Register File, 4-channel 10-bit A/D, Up to 20 MIPS throughput at 20 Mhz.

  • ATtiny15L 1-Kbyte In-System programmable Flash Program Memory, 64-Byte EEPROM, 32-Byte Register File, 4-channel 10-bit A/D, Up to 1.6 MIPS throughput at 1.6 MHz.

  • ATtiny2313 2K Bytes of In-System Self-Programmable Flash, 128 Bytes In-System Programmable EEPROM, 128 Bytes Internal SRAM. USI--Universal Serial Interface, Full Duplex UART. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. Compatible with Obsolete AT90S2313.

  • ATtiny24 2K Bytes of In-System Self-Programmable Flash, 128 Bytes In-System Programmable EEPROM, 128 Bytes Internal SRAM. 8-bit and 16-bit timer/counters with PWM, 10-bit ADC, USI-Universal Serial Interface, On-chip Temperature Sensor. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 8KB version: ATtiny84
    * 4KB version: ATtiny44

  • ATtiny25 2K Bytes of In-System Self-Programmable Flash, 128 Bytes In-System Programmable EEPROM, 128 Bytes Internal SRAM. Two 8-bit timer/counters with PWM and prescaler, 10-bit ADC, USI-Universal Serial Interface. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 8KB version: ATtiny85
    * 4KB version: ATtiny45

  • ATtiny26 2K Flash Program Memory, 128 Bytes SRAM, 128-Byte EEPROM, 11-Channel 10-bit A/D converter. Universal Serial Interface. High Frequency PWM. Up to 16 MIPS throughput at 16 MHz.

  • ATtiny28L 2K Flash Program Memory, 32 bytes register file, Keyboard interrupt, high-current LED driver, Analog Comparator. Up to 4 MIPS throughput at 4 MHz.

  • ATtiny44 4K Bytes of In-System Self-Programmable Flash, 256 Bytes In-System Programmable EEPROM, 256 Bytes Internal SRAM. 8-bit and 16-bit timer/counters with PWM, 10-bit ADC, USI-Universal Serial Interface, On-chip Temperature Sensor. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 8KB version: ATtiny84
    * 2KB version: ATtiny24

  • ATtiny45 4K Bytes of In-System Self-Programmable Flash, 256 Bytes In-System Programmable EEPROM, 256 Bytes Internal SRAM. Two 8-bit timer/counters with PWM and prescaler, 10-bit ADC, USI-Universal Serial Interface. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 8KB version: ATtiny85
    * 2KB version: ATtiny25

  • ATtiny84 8K Bytes of In-System Self-Programmable Flash, 512 Bytes In-System Programmable EEPROM, 512 Bytes Internal SRAM. 8-bit and 16-bit timer/counters with PWM, 10-bit ADC, USI-Universal Serial Interface, On-chip Temperature Sensor. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 4KB version: ATtiny44
    * 2KB version: ATtiny24

  • ATtiny85 8K Bytes of In-System Self-Programmable Flash, 512 Bytes In-System Programmable EEPROM, 512 Bytes Internal SRAM. Two 8-bit timer/counters with PWM and prescaler, 10-bit ADC, USI-Universal Serial Interface. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 4KB version: ATtiny45
    * 2KB version: ATtiny25

Menggunakan Perintah RCTIME pada PBASIC

Dalam PBASIC, perintah RCTIME dapat digunakan untuk mengukur waktu charge dan discharge dari sebuah rangkaian resistor/kapasitor. Untuk mengukur resistansi dan kapasitansi, gunakan sensor resistif atau kapasitif seperti thermistor atau sensor kelembaban kapasitif atau potensiometer. Dalam penginderaan yang lebih luas, RCTIME dapat berfungsi sebagai stopwatch yang presisi untuk kejadian yang berdurasi sangat pendek.

Ketika RCTIME di-eksekusi, perintah ini akan memulai sebuah counter (menghitung jumlah unit waktu). Counter ini akan segera berhenti setelah pin yang ditentukan tidak lagi dalam kondisi 0 atau 1 (tergantung pada definisi yang diberikan). Gambar di bawah menunjukkan rangkaian RC yang cocok untuk digunakan dengan perintah RCTIME. Rangkaian A disarankan, karena ambang logika BASIC Stamp adalah sekitar 1.4 Volt. Ini berarti bahwa tegangan yang diamati pada pin akan dimulai pada 5V, kemudian turun hingga 1.4V (span 3.6V) sebelum RCTIME berhenti. Dengan rangkaian B, tegangan akan mulai pada 0V kemudian naik hingga 1.4V (span 1.4V) sebelum RCTIME berhenti.

Sebelum RCTIME di-eksekusi, kapasitor harus ditempatkan pada keadaan yang ditentukan dalam perintah RCTIME. Sebagai contoh, untuk rangkaian A, kapasitor harus di-charge hingga penuh (5V) terlebih dahulu.

Berikut adalah urutan instruksi tipikal untuk rangkaian A (asumsi menggunakan pin 7)"

result VAR Word
HIGH 7
PAUSE 1
RCTIME 7, 1, result
DEBUG DEC ? result
END


Pada BASIC Stamp 2, unit waktu adalah 2 µs, sementara pada BASIC Stamp 2p, unit waktu adalah 0.75 µs.

Menggunakan PWM pada ATmega8535

Kebanyakan mikrokontroler AVR memiliki kanal PWM di dalam chip-nya. Fasilitas ini membuat penggunaan PWM menjadi lebih sederhana dan lebih akurat. Timer atau Counter dalam AVR dapat digunakan dalam modus PWM tanpa mengganggu fungsi dasar timer. Timer1 dapat di-konfigurasi dalam modus PWM dengan men-setting bit PWM11 dan PWM10 dalam register TCCR1A.




























PWM11PWM10Description
00PWM operation of Timer/Counter1 is disabled
01Timer/Counter1 in 8-bit PWM Mode
10Timer/Counter1 in 9-bit PWM Mode
11Timer/Counter1 in 10-bit PWM Mode

Prescale dapat dipilih melalui register TCCR1B.

Lebar pulsa di-load ke dalam timer output compare register OCR1A (OCR1AH dan OCR1AL) dan OCR1B (OCR1BH dan OCR1BL). Timer/Counter1 bertindak sebagai up/down counter, menghitung naik dari 0000H hingga TOP, kemudian berbalik menghitung turun hingga nol, demikian seterusnya. Ketika nilai counter sama dengan isi dari 10-bit OCR1A atau OCR1B, pin OC1A dan OC1B di-set atau di-clear sesuai dengan setting bit dari COM1A1/COM1A0 atau COM1B1/COM1B0 dalam Timer/Counter1 Control Register (TCCR1A).






















PWM ResolutionTimer Top ValueFrequency
8-bit PWM$00FF (255)Ftck1/510
9-bit PWM$01FF (511)Ftck1/1022
10-bit PWM$03FF (1023)Ftck1/2046




























COM1X1COM1X0Effect on OCX1
00Not Connected
01Not Connected
10Cleared on compare match, up-counting. Set on compare match down-counting (non-inverted PWM)
11Cleared on compare match, down-counting. Set on compare match up-counting (inverted PWM)

Berikut adalah contoh dalam Bahasa C:

#define PULSE_WIDTH 0x40

void pwm_start(){
OCR1AL = PULSE_WIDTH; //Load Pulse width
OCR1AH = 0;
DDRD |= (1<<5); //PortD.5 as o/p
TCCR1A = 0x81; //8-bit, Non-Inverted PWM
TCCR1B = 1; //Start PWM
}

Frekuensi yang dapat digunakan untuk aplikasi motor, tergantung pada kualitas motor dan kemampuan H-bridge yang digunakan. Motor yang digunakan pada power window mobil atau mainan, bekerja dengan baik pada frekuensi 500 Hz hingga 1 kHz. Beberapa motor kelas "high-end" bekerja dengan mulus pada 20 kHz. H-bridge 754410 dan L293D telah diuji dan berjalan dengan baik pada frekuensi 5 kHz.

Berikut adalah contoh pemrograman dengan BASCOM-AVR:

$regfile = "m8535.dat"
$crystal = 4000000
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 50

Dim Dummy As Integer
Dim Potvalue As Integer

Config Pind.5 = Output
Config Pind.4 = Output
Config Timer1 = Pwm , Prescale = 64 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Enable Interrupts
Enable Timer1
Config Adc = Single , Prescaler = 64
Start Adc
Ocr1ah = 0
Ocr1ah = 0
Do
Potvalue = Getadc(0)
Dummy = Potvalue / 2
Dummy = Dummy / 2
Ocr1bl = Dummy
Loop



NEXT SYSTEM Robotics Learning Center menyelenggarakan sejumlah program pelatihan seputar pemrograman mikrokontroler dan aplikasinya dalam robotika. Pelatihan diselenggarakan secara reguler maupun inhouse, terbuka untuk siswa kelas 2 hingga kelas 12, mahasiswa, profesional dan umum.Berikut adalah kelas pelatihan yang saat ini diselenggarakan:


  • Pemrograman Robot Lego Mindstorms NXT dengan NXT-G

  • Pemrograman Robot Lego Mindstorms NXT dengan Bahasa C

  • Pemrograman Robot Lego Mindstorms NXT dengan Bahasa Java

  • Pemrograman Robot Lego Mindstorms NXT dengan Microsoft Robotics Studio

  • Pemrograman Robot Boe-Bot dengan Bahasa BASIC

  • Pemrograman Robot Scribbler dengan Bahasa BASIC

  • Pemrograman Robot Edukasi dengan Bahasa BASIC

  • Pemrograman Robot Edukasi dengan Bahasa C

  • Pemrograman Robot Edukasi dengan Bahasa Pascal

  • Pemrograman Mikrokontroler BASIC Stamp dengan Bahasa BASIC

  • Pemrograman Mikrokontroler MCS-51 dengan Bahasa BASIC

  • Pemrograman Mikrokontroler MCS-51 dengan Bahasa C

  • Pemrograman Mikrokontroler AVR dengan Bahasa BASIC

  • Pemrograman Mikrokontroler AVR dengan Bahasa C

  • Pemrograman Mikrokontroler AVR dengan Bahasa Pascal

  • Pemrograman Mikrokontroler PIC dengan Bahasa BASIC

  • Pemrograman Mikrokontroler PIC dengan Bahasa C

  • Pemrograman Mikrokontroler PIC dengan Bahasa Pascal


Disamping itu, NEXT SYSTEM Robotics Learning Center membuka program pelatihan Robotics for Kidz. Program ini ditujukan bagi anak usia 8-12 tahun.

Untuk informasi lebih lanjut, silahkan menghubungi:

NEXT SYSTEM
Robotics Learning Center
ITC Kosambi F2
Jl. Baranang Siang 6-8
Bandung 40112
Telp. (+62 22) 4222062, 70775874
Email: info@nextsys.web.id


http://edukasi.nextsys.web.id

Mikrokontroler PIC

Walaupun mikrokontroler yang satu ini excellent, populasi pemakai di Indonesia, tidak terlalu banyak. Mungkin dikarenakan faktor harga, yang umumnya, hampir 2-3 kali lipat dibanding produk sejenis dari Atmel.

Ada beberapa jenis yang walaupun agak sulit ditemukan, tapi bisa dicari, seperti PIC 16F877A dan PIC 16F84A. Untuk pemula, PIC 16F88 bisa disarankan, karena sudah memiliki internal ADC (7 channel) dan menyediakan fasilitas PWM walaupun cuma satu. Bandingkan dengan PIC 16F84A yang hanya menyediakan input digital saja.

Mikrokontroler ini agak sedikit unik. Saya sebut unik karena sangat berbeda dengan pakem Intel yang selama ini kita ketahui. Yang menarik lagi adalah, instructions set nya cuma 35 (low end) hingga 80 (high end) saja. Ini pula yang disebut sebagai "keterbatasan" selain cuma memiliki akumulator tunggal.

Berikut adalah penjelasan teknis dari beberapa tipe PIC yang kebetulan ada di tangan saya:

PIC16F88 (18 pin)

This powerful (200 nanosecond instruction execution) yet easy–to-program (only 35 single word instructions) CMOS Flash-based 8-bit microcontroller packs Microchip’s powerful PIC® architecture into an 18-pin package and is upwards compatible with the PIC16C7x, PIC16C62xA, PIC16C5X and PIC12CXXX devices. The PIC16F88 features 8 MHz internal oscillator, 256 bytes of EEPROM data memory, a capture/compare/PWM, an Addressable USART, a synchronous serial port that can be configured as either 3-wire Serial Peripheral Interface (SPI™) or the 2-wire Inter-Integrated Circuit (I²C™) bus, 7 channels of 10-bit Analog-to-Digital (A/D) converter and 2 Comparators that make it ideal for advantage analog / integrated level applications in automotive, industrial, appliances and consumer applications.

PIC16F877A (40 pin)

This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS FLASH-based 8-bit microcontroller packs Microchip's powerful PIC® architecture into an 40- or 44-pin package and is upwards compatible with the PIC16C5X, PIC12CXXX and PIC16C7X devices. The PIC16F877A features 256 bytes of EEPROM data memory, self programming, an ICD, 2 Comparators, 8 channels of 10-bit Analog-to-Digital (A/D) converter, 2 capture/compare/PWM functions, the synchronous serial port can be configured as either 3-wire Serial Peripheral Interface (SPI™) or the 2-wire Inter-Integrated Circuit (I²C™) bus and a Universal Asynchronous Receiver Transmitter (USART). All of these features make it ideal for more advanced level A/D applications in automotive, industrial, appliances and consumer applications.

PIC 16F872 (28 pin)

This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS FLASH-based 8-bit microcontroller packs Microchip's powerful PIC® architecture into an 28-pin package and is upwards compatible with the PIC16C5X, PIC12CXXX and PIC16C7X devices. The PIC16F872 features 64 bytes of EEPROM data memory, self programming, an ICD, 5 channels of 10-bit Analog-to-Digital (A/D) converter, 2 additional timers, a capture/compare/PWM functions and the synchronous serial port can be configured as either 3-wire Serial Peripheral Interface (SPI™) or the 2-wire Inter-Integrated Circuit (I²C™) bus. All of these features make it ideal for more advanced level A/D applications in automotive, industrial, appliances and consumer applications.

PIC 16F84A (18 pin)

This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS Flash/EEPROM-based 8-bit microcontroller packs Microchip’s powerful PIC® architecture into an 18-pin package. The same device can be used for prototyping and production and the end application can be easily updated without removing the device from the end product via the ICSP. Easily adapted for automotive, industrial, appliances low power remote sensors, electronic locks and security applications.

Menghubungkan BASIC Stamp dengan Modul Sonar SRF04

Mikrokontroler harus merubah level logika pada pin INIT pada modul sonar untuk memulai sebuah pembacaan. Setelah pin input INIT menjadi LOW, modul sonar akan mengirimkan sebuah ping. Setelah itu, output ECHO menjadi HIGH dan akan menjadi LOW kembali setelah modul menerima sebuah pantulan.

Perintah PULSOUT mengirimkan sebuah pulsa high pada pin INIT pada modul sonar. Perintah PULSIN mengukur waktu yang diperlukan gelombang pantul untuk kembali. Setelah merekam pembacaan, mikrokontroler menunggu 10 ms untuk memberikan waktu pada modul untuk melakukan reset secara baik.

Waktu eksekusi dari perintah PULSIN adalah berbeda untuk pin yang berbeda. Bila kita merubah pin yang digunakan, perintah PULSIN dalam subrutin sr_sonar di atas mungkin akan kehilangan tepi naik dari input ECHO dan mengembalikan nilai pembacaan nol. Menggunakan perintah RCTIME akan memperbaiki masalah ini. Trik lain adalah memberikan sedikit jeda dengan sebuah perintah dummy sebelum mengukur waktu echo dengan perintah RCTIME (lihat contoh di bawah). Kita perlu melakukan percobaan untuk menentukan kode terbaik untuk aplikasi yang dibuat.

'
' Devantech SRF04 Example
'

wDist var word

INIT con 0
ECHO con 1

' CONVERSION FACTORS:
'
' The PULSIN command returns the round-trip echo time in 2us units
' which is equivalent to the one-way trip time in 1us units.
'
' Filename: srf04-1.bs2
' distance = (echo time) / (conversion factor)
'
' use 74 for inches (73.746us per 1 in)
' use 29 for centimeters (29.033us per 1 cm)
'

convfac con 74 ' use inches

'---------------------------------------------

main
gosub sr_sonar
debug dec wDist, cr
pause 200
goto main

sr_sonar:
pulsout INIT,5 ' 10us init pulse
pulsin ECHO,1,wDist ' measure echo time
wDist=wDist/convfac ' convert to inches
pause 10
return

sr_sonar_2:
pulsout INIT,5 ' 10us init pulse
output INIT ' dummy command (delay)
rctime ECHO,1,wDist ' measure echo time
wDist=wDist/convfac ' convert to inches
pause 10
return

Menggunakan LCD

Penampil LCD cukup mudah ditemukan di pasaran, terutama ukuran 16x2. Harganya pun relatif terjangkau.

Di dalam penggunaannya, hubungan antara mikrokontroler dan LCD dapat menggunakan hubungan 8-bit atau 4-bit. Pilihan kedua lebih banyak digunakan karena akan menghemat pin I/O :) Selain pin data, juga perlu dihubungkan pin RS dan pin E.

Menggunakan penampil LCD 16*2, khususnya dengan mikrokontroler MCS51 dan BASCOM-8051, relatif mudah. Berikut adalah contoh program untuk menampilkan kata HELLO WORLD! pada dua baris LCD:

Config LCD = 16*2
Config lcdpin=pin, db4=p0.4, db5=p0.5, db6=p0.6, db7=p0.7,e=p0.3, rs=p0.2

Cursof Off
Cls
Lcd "Hello"
LowerLine
Lcd "World!"
End

Memprogram EEPROM I2C dengan Bahasa C

Berikut adalah contoh bagaimana meng-akses I2C EEPROM Atmel 24C02 menggunakan CodeVision-AVR:

/* bus I2C dihubungkan dengan PORTB */
/* sinyal SDA pada bit 3 */
/* sinyal SCL pada bit 4 */

#asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm

#include <i2c.h>
#include <delay.h>
#define EEPROM_BUS_ADDRESS 0xa0

/* membaca satu byte dari EEPROM */
unsigned char eeprom_read(unsigned char address) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}

/* menulis satu byte ke EEPROM */
void eeprom_write(unsigned char address, unsigned char data) {

i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();

/* jeda 10ms untuk menyelesaikan penulisan */
delay_ms(10);
}

void main(void) {
unsigned char i;

/* inisialisasi bus I2C */
i2c_init();

/* menulis byte 55h pada alamat AAh */
eeprom_write(0xaa,0x55);

/* membaca byte dari alamat AAh */
i=eeprom_read(0xaa);

while (1); /* loop selamanya */
}

Memprogram EEPROM I2C dengan BASCOM-AVR

I2C singkatan dari Inter Integrated Circuit, adalah sebuah protokol untuk komunikasi serial antar IC, dan sering disebut juga Two Wire Interface (TWI). Bus yang digunakan untuk komunikasi antara mikrokontroler dan divais periferal seperti memori, sensor temperatur dan I/O expander.

Komunikasi dilakukan melalui dua jalur: SDA (serial data) dan SCL (serial clock). Setiap divais I2C memiliki 7-bit alamat yang unik. MSB adalah fix dan ditujukan untuk kategori divais. Sebagai contoh, 1010 biner ditujukan untuk serial EEPROM. Tiga bit berikutnya memungkinkan 8 kombinasi alamat I2C, yang berarti, dimungkinkan 8 divais dengan tipe yang sama, beroperasi pada bus I2C yang sama. Pengalamatan 7-bit memungkinkan 128 divasi pada bus yang sama. Alamat I2C dikirim dalam byte pertama. LSB dari byte ini digunakan untuk menunjukkan bila master akan melakukan penulisan (0) atau pembacaan (0) terhadap slave.

Divais yang mengirim data sepanjang bus disebut master, divais yang menerima data disebut slave. Master memulai transmisi dengan sebuah sinyal start, dan menghentikan transmisi dengan sebuah sinyal stop pada jalur SDA. Selama sinyal start dan stop, jalur SCL harus dalam keadaan high. Setelah master memulai pengiriman data dengan sebuah sinyal start, master menulis satu byte alamat divais kepada slave. Setiap byte data harus memiliki panjang 8-bit. Slave harus memberikan konfirmasi dari byte data yang diterimanya dengan sebuah bit acknowledge (ACK).

Compiler BASCOM-AVR dapat digunakan untuk membuat program yang dapat melakukan penulisan dan pembacaan ke dan dari EEPROM. BASCOM-AVR memiliki beberapa perintah terkait dengan pengendalian bus I2C.


  • Config SDA : meng-konfigurasi jalur SDA, misalnya PORTB.0
    Config SCL : meng-konfigurasi jaluar SCL, misalnya PORTB.1
    I2cstart : menghasilkan sebuah kondisi start
    I2cstop : menghasilkan sebuah kondisi stop
    I2cwbyte : menulis satu byte pada divais target
    I2crbyte : membaca satu byte dari divais target


Dalam BASCOM-AVR, pertma kita harus meng-konfigurasi port yang digunakan untuk jalur SDA dan SCL dari bus I2C. Selanjutnya, kita kirimkan alamat divasi untuk memilih EEPROM yang terhubung dengan bus I2C. Setelah itu kita kirimkan dua byte ke EEPROM untuk memilih alamat dalam EEPROM dimana kita akan menuliskan data. Byte terakhir yang dikirim dalam rangkaian penulisan adalah byte data.

Dim D_w As Byte , D_r As Byte

Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 ,
Db7 = Portb.0 , E = Portb.6 , Rs = Portb.7

Config Lcd = 16 * 2
Cls
Cursor Off

Config Scl = Portd.0
Config Sda = Portd.1

D_w = 100

'********** menulis satu byte ke EEPROM ***********************************************
I2cstart 'memulai
I2cwbyte &B1010_0000 'kirim alamat divais
I2cwbyte 0 'H adress dari EEPROM
I2cwbyte 0 'L adress dari EEPROM
I2cwbyte D_w 'data ke EEPROM
I2cstop 'berhenti
Waitms 10

'********** membaca dari EEPROM **********************************************
I2cstart 'mulai
I2cwbyte &B1010_0000 'kirim alamat divais
I2cwbyte 0 'H address dari EEPROM
I2cwbyte 0 'L address dari EEPROM
I2cstart 'ulangi start
I2cwbyte &B1010_0001 'alamat slave untuk pembacaan
I2crbyte D_r , Nack 'baca byte dari EEPROM
I2cstop ' stop

Lcd "D_w= "
Lcd D_w 'show byte on LCD
Lowerline
Lcd "D_r= "
Lcd D_r
End


Workshop: Pemrograman Praktis Mikrokontroler PIC untuk Aplikasi Robot

Pada hari Selasa dan Rabu, 19-20 Agustus 2008, saya dan DR. Riza Muhida, asisten profesor bidang Mekatronika di International University Malaysia, memberikan workshop setengah hari kepada 34 orang guru dan siswa dari SMPK/SMAK TRIMULIA dan SMP BIntang Mulia Bandung. Ini merupakan kegiatan workshop mikrokontroler dan robotika pertama untuk kalangan sekolah menengah, khususnya di kota Bandung.

Dengan menggunakan mikrokontroler PIC dan Bahasa C, serta pemrograman mikrokontroler melalui port serial komputer; para guru dan siswa diajak untuk menyelami aplikasi praktis, bagaimana memprogram mikrokontroler, membuat aplikasi sistem lalu lintas, sistem keamanan, membaca data dari sensor, dan lain-lain; serta bagaimana mengendalikan motor, yang nantinya akan digunakan dalam aplikasi robot.

Saat ini, mikrokontroler dan Bahasa C bukan lagi konsumsi para mahasiswa di perguruan tinggi. Dengan pola pembelajaran yang mengedepankan kepraktisan dan kemudahan, serta dukungan dari teknologi terkini, para siswa sekolah menengah pun dapat menikmatinya. Riding the wave dan Don't Reinventing the Wheel.

Tahapan Pemrograman Mikrokontroler

Berikut adalah tahapan pemrograman mikrokontroler PIC dengan bahasa BASIC:

Memprogram Mikrokontroler PIC dengan BASIC

Pada saat kemunculan komputer pribadi di era 1980an, bahasa BASIC cukup populer. Saat ini, BASIC masih diperhitungkan sebagai bahasa pemrograman yang paling mudah digunakan, tidak terkecuali di dalam dunia mikrokontroler. BASIC memungkinkan pengembangan aplikasi lebih cepat dibanding bahasa assembly. Ketika menulis kode untuk mikrokontroler, programmer sering kali berhadapan dengan isu yang sama, seperti komunikasi serial, menampilkan informasi pada tampilan LCD, membangkitkan sinyal PWM, dan yang lainnya. Untuk maksud mem-fasilitasi pemrograman, BASIC menyediakan sejumlah rutin dan pustaka untuk memecahkan masalah ini.

Dalam konteks ukuran program dan kecepatan eksekusi, assembly memiliki sedikit keunggulan dibanding BASIC. Namun, kita bisa menyisipkan kode assembly di dalam BASIC, untuk menangani bagian dimana waktu eksekusi merupakan hal yang kritis.

Mikrokontroler modern seperti PIC, meng-eksekusi instruk dalam satu siklus. Jika clock mikrokontroler adalah 4MHz, maka satu instruksi assembly memerlukan 250ns x 4 = 1us. Secara teknis, satu perintah BASIC terdiri dari sejumlah instruksi assembly. Waktu eksekusi untuk setiap perintah merupakan jumlah dari waktu eksekusi dari sejumlah instruksi assembly yang mewakilinya.

Saat ini, pilihan terbaik untuk pengembangan aplikasi dengan BASIC adalah PIC16F84, PIC16F87x, PIC16F62x, PIC18Fxxx. Kontroler ini memiliki program memory dengan teknologi flash, yang dapat dihapus dan diprogram ulang secara cepat, sehingga memungkinkan debugging secara cepat pula. Dengan satu kali klik mouse di dalam programming software, program mikrokontroler dapat secara instan dihapus kemudian di-reload tanpa harus mencabut chip dari alat. Program yang telah di-load ke dalam memori flash dapat tersimpan walaupun catu daya dimatikan. Disamping memori flash, mikrokontroler seri PIC16F87x dan PIC16F84 memiliki 64-256 byte memori EEPROM internal, yang dapat digunakan untuk menyimpan data program dan parameter lain ketika catu daya dimatikan. Instruksi BASIC, EEPROM_Read dan EEPROM_Write, dapat digunakan untuk keperluan ini.

Berikut adalah program LED berkedip yang dibuat dengan mikroBASIC untuk mikrokontroler PIC.

program LED_Blink

main:

TRISB = 0 ' Configure pins of PORTB as output
eloop:
PORTB = $FF ' Turn on diodes on PORTB
Delay_ms(1000) ' Wait 1 second
PORTB = 0 ' Turn off diodes on PORTB
Delay_ms(1000) ' Wait 1 second
goto eloop ' Stay in loop

end.

Menggunakan ADC pada ATmega8535

Dalam mikrokontroler keluarga AVR, umumnya sudah dilengkapi dgn ADC yang tertanam di dalamnya. Sebagai contoh, ATmega8535 yang cukup populer.

Menggunakan fasilitas ADC yang terdapat dalam ATmega8535 dengan Bahasa BASIC, cukup mudah. Cukup melakukan inisialisasi untuk modus operasi, prescaler dan tegangan referensi yang digunakan. Selanjutnya, data analog siap diubah menjadi digital.

Berikut adalah contoh penerapannya dengan menggunakan BASCOM-AVR:

$regfile = "m8535.dat"
$baud = 9600
Config Adc = single, Prescaler = auto, Reference = avcc
Start Adc
Dim W as Word
Do
W = Getadc(0)
Print W
Loop
End

Selamat mencoba.

NEXT SYSTEM
Robotics Learning Center
http://www.nextsys.web.id

Menggunakan ADC

Dalam dunia elektronika, istilah ADC atau Analog to Digital Converter,
sudah sangat umum. Banyak chip untuk fungsi tersebut yang dapat kita
jumpai di pasaran. Satu yang cukup populer adalah ADC 0809, yang
menyediakan input analog 8 kanal dan output 8 bit. Untuk yang ingin
lebih ringkas, dapat menggunakan ADC 0831. Chip ini menyediakan input
analog 1 kanal dan output serial. Ukuran fisiknya cuma 8 pin. Namun,
kita harus membayar ekstra untuk ukurannya yang kompak :)

Namun, dalam beberapa kasus konversi, kita tidak perlu menggunakan
chip ADC, namun cukup menggunakan konsep RCTime - Resistor, Capacitor,
Time; memanfaatkan waktu pengisian kapasitor.

Dalam mikrokontroler BASIC Stamp, sudah ada command untuk maksud
tersebut. Jadi, kalau kita perlu meng-capture data analog dari
rangkaian Photocell, Potensiometer atau Thermistor; cukup merangkainya
dengan sebuah Capacitor; kemudian memanfaatkan command RCTIME. Command
ini akan menghitung berapa lama waktu pengisian capacitor, yang
nilainya akan berubah sesuai dgn perubahan nilai resistansi yang akan
di-capture.

LOW 0
RCTIME 0, 1, x

Kita akan mendapatkan nilai hasi konversi: x :)

Jadi, utk aplikasi pengendali lampu berdasarkan intensitas cahaya
matahari yang dapat diatur derajat intensitasnya secara digital, cukup
gunakan RCTIME ;)

LOW 0
RCTIME 0, 1, x
IF ( x = 13000 ) THEN nyalakan_lampu ELSE matikan_lampu

Selamat ber-eksplorasi!

Mengapa Memilih PICAXE?

Mikrokontroler merupakan single chip computer yang saat ini relatif
populer, baik di kalangan industri maupun pendidikan. Dari sekian banyak
pilihan, terdapat sejumlah mikrokontroler yang sejak semula memang
dirancang untuk sebuah kemudahan dalam penggunaannya (teknologi
seyogyanya membawa kemudahan, bukan). Sebut saja produk turunan dari
mikrokontroler PIC yang populer dengan nama PICAXE
(http://www.rev-ed.co.uk).

Sistem PICAXE menawarkan harga yang ekonomis untuk sebuah solusi yang
powerful dan simple. Program dapat di-download langsung melalui kabel,
tidak memerlukan programmer atau eraser. Software untuk memprogramnya
disediakan secara cuma-cuma.

Program dapat dibuat secara grafis menggunakan flowchart, serta dapat
juga diprogram dengan Bahasa BASIC. Keduanya tersedia dalam software
yang bebas digunakan.

Jadi, PICAXE bisa disebut sebagai sistem, karena ke dalamnya sudah
dimasukkan sejumlah fasilitas. Ini semua untuk memudahkan penggunanya.

Agak disayangkan, saya belum menemukan produk ini di Indonesia (kalau
ada rekan yang mengetahuinya, silahkan share). Distributor terdekat ada
di Singapura. Mungkin Pak Riza bisa menambahkan, apakah di Malaysia ada
distributor-nya? atau harus impor dari Singapura? :)

Mengapa Memilih Mikrokontroler AVR?

Kebanyakan pemain MCS-51 beralih ke AVR saat membutuhkan kecepatan yang
lebih tinggi. Bisa dipahami karena kebanyakan instruksi di-eksekusi
dalam satu siklus clock saja (bandingkan dgn MCS-51 yang memerlukan
1-12 siklus clock). Kedua, di kebanyakan chip AVR buatan Atmel
(www.atmel.com) ini sudah built-in ADC (biasanya 10 bit), sehingga untuk
meng-capture masukan analog, tidak perlu menambahkan rangkaian eksternal
(kecuali 10 bit tidak memadai).

Dari sisi bahasa pemrograman, khususnya bahasa tingkat tinggi, hampir
tidak ada perbedaan. Hanya perlu perhatian pada fitur spesifik yg hanya
dimiliki oleh AVR.

Harga? Untuk yang non-industrial standard, kelihatannya cukup murah.
Misalnya saja ATTINY2313 (2k Flash, 20 pin, 18 pin I/O, dapat dipacu
hingga 20MHz) sekitar 15 ribu. Yang lebih besar seperti ATMEGA8 (8k
Flash) sekitar 15 ribu juga. Yang ada built-in ADC seperti ATTINY26 (2k
Flash, 11 channel ADC 10 bit) sekitar 16 ribu. Yang lebih besar seperti
ATMEGA8535 sekitar 50 ribu. Untuk yg membutuhkan flash yang besar hingga
128k, bisa memilih ATMEGA128, yang harganya sekitar 80 ribu.

Jadi, dari sisi harga, relatif terjangkau.

Berikut adalah contoh pemrograman dalam bahasa BASIC (dgn BASCOM-AVR,
www.mcselec.com) untuk membuat sebuah LED yang terhubung dgn port B.0
berkedip:

Config Portb = Output 'set port B as output

Do
Portb.0 = 1 ' set port B high
Waitms 500 ' wait 500 ms
Portb.0 = 0 ' set port B low
Waitms 500 ' wait 500 ms
Loop

Cukup sederhana, bukan? :)

Memilih Mikrokontroler

Saat ini, beragam jenis mikrokontroler (uC) dapat kita jumpai di
pasaran. Mulai yang berteknologi 8-bit hingga 32-bit, bahkan
mikrokontroler dengan sejumlah prosesor di dalamnya (Propeller dari
Parallax).

Namun, apapun teknologi dan brand uC yang dipilih, yang penting bisa
memenuhi kebutuhan dari aplikasi yang akan dikembangkan. Kita tidak
perlu memilih uC yang "canggih" jika ingin membuat pengontrol pompa air.
Atau, kurang tepat bila memilih uC yang "sederhana" untuk aplikasi robot
yang kompleks serta memerlukan respons yang cepat. Jadi, perlu
mempertimbangkan aspek tepat guna, sehingga hasilnya pun cost-effective :)

Dalam diskusi dgn beberapa rekan beberapa waktu lalu, banyak yang
mempersoalkan penggunaan uC BASIC Stamp karena lambat. Dengan kemampuan
mengolah 4000 instruksi per detik (BS2), rasanya tidak "lambat-lambat"
amat. Bahkan untuk aplikasi robot sederhana, hasilnya cukup memuaskan.

So, mulailah dari yang sederhana, mudah dan ekonomis; dan segera
wujudkan aplikasi pertama Anda. Itu merupakan trigger yang yang akan
memicu lahirnya aplikasi-aplikasi berikutnya.

Proyek running LED merupakan aplikasi favorit dari banyak penulis buku
uC berbahasa Indonesia. Mungkin bisa dicoba juga sebagai aplikasi
pertama kita :)

Start small. Start now.

Mikrokontroler: Idealisme dan Aplikasi

Dalam diskusi dengan beberapa pemain mikrokontroler, ada satu isu yang
mengemuka, apakah kita akan bertahan dengan idealisme, artinya, setiap
pengguna mikrokontroler haruslah menggunakan bahasa assembly sebagai
bahasa pemrograman, atau lebih fokus pada aplikasi, tanpa menghiraukan
bahasa pemrograman yang digunakan?

Harus diakui, belajar assembly tidak mudah. Sehingga, dalam masa
pembelajarannya, kerap kali, kita kehabisan waktu, sehingga banyak
proyek menjadi terbengkalai alias tidak selesai.

Dalam diskusi tersebut, muncul perdebatan yang sangat hangat. Perdebatan
baru berhenti setelah seorang teman yang sangat senior berkata, "Kalian
memperdebatkan idealisme, siapa paling hebat dalam hal assembly. Mohon
maaf, berapa banyak aplikasi yang sudah kalian buat?"

Saya kira, soal bahasa pemrograman yang digunakan, tidak perlu
diperdebatkan. Yang penting, hasil atau aplikasinya ada, selesai dan
bisa segera dimanfaatkan. Menggunakan assembly tidak masalah.
Menggunakan C atau BASIC pun tidak masalah. Terkadang, pengguna
mikrokontroler merasa kurang afdol kalau belum menguasai assembly. Ya,
silahkan saja. Yang penting, jangan sampai kehabisan waktu, sementara
proyek yang dikerjakan tidak kunjung selesai :)

Harus diakui, untuk proyek yang menuntut respons yang segera (real
time), mau tidak mau, suka tidak suka, assembly adalah pilihan. Untuk
kebutuhan seperti ini, mikrokontroler yang digunakan pun harus gegas dan
memang dikhususkan untuk operasi real time.

Mikrokontroler: Sebuah Catatan Pemula

Di era digital saat ini, keberadaan mikrokontroler dan mikroprosesor
sudah menyebar sedemikian dekat dgn kehidupan kita. Kedua, keberadaannya
yang semakin mudah dijangkau, baik dari sisi biaya maupun penguasaannya.

Sewaktu kuliah dulu, mikrokontroler belum populer. Waktu itu hanya
diperkenalkan mikroprosesor Z80, itupun di tingkat akhir. Jadi, belum
sempat ngoprek sudah harus lulus :)

Baru beberapa tahun terakhir menyimak perkembangan mikrokontroler,
ternyata perkembangannya memang luar biasa. Perubahannya menggelinding
sedemikian cepat, sesaat setelah Intel membebaskan rancangan arsitektur
8051-nya.

Dulu, untuk bermain mikrokontroler, tidak ada pilihan bahasa
pemrograman. Mutlak harus menggunakan assembly. Bahkan waktu programming
Z80, yang di-input adalah machine code dalam heksadesimal. Rumit sekali.

Sekarang, ada sejumlah pilihan bahasa pemrograman, yang semuanya
menawarkan kemudahan, sehingga semakin banyak orang memasuki dunia
kontrol dan otomasi. Untuk pemula, bisa mulai dengan BASIC atau PASCAL
yang cukup ramah. Untuk tingkat berikutnya bisa mencoba C. Untuk yang
ingin mempertahankan idealisme, bisa tetap bermain di Assembly :)

Modul-modul pendukung pun sangat banyak. Mulai dari sistem minimum
sampai asesorisnya. Jadi, untuk memulai, pemula awam tidak perlu
menyolder atau hunting komponen, tapi bisa memulainya dgn cara modular
seperti mainan LEGO. Yang penting, hasil atau aplikasinya bisa langsung
terlihat, tanpa harus jungkir balik membangunnya. Lebih mudah, lebih
cepat, hemat usia :)