Menggunakan ADC pada ATmega8535

Dalam mikrokontroler keluarga AVR, khususnya kelas ATmega, umumnya sudah dilengkapi dgn ADC – Analog to Digital Conver, yang tertanam di dalamnya. Sebagai contoh, ATmega8535 yang cukup populer di negeri ini.

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
  Waitms 1000
Loop
End

Selamat mencoba.

NEXT SYSTEM
Robotics Learning Center
ITC Kosambi F2
Jl. Baranang Siang 6-8
Bandung 40112
Tel. (022) 4222062, 70775874

Email: info@nextsys.web.id

Official Website: http://edukasi.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 pengguna MCS51 beralih ke AVR saat membutuhkan kecepatan yang lebih tinggi. Bisa dipahami karena kebanyakan instruksi di-eksekusi dalam satu siklus clock saja (bandingkan dgn MCS51 yang memerlukan 1-12 siklus clock). Kedua, di kebanyakan chip AVR buatan Atmel – www.atmel.com – sudah memiliki built-in ADC (biasanya 10 bit), sehingga untuk meng-capture masukan analog, tidak perlu menambahkan rangkaian eksternal, kecuali resolusi 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 memiliki 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.

Namun dalam perkembangan terakhir, terdapat fenomena yang menarik untuk disimak. Ada sebuah pergeseran konsep disain yang dilakukan oleh sejumlah pengembang chip mikrokontroler. Dua varian, AVR dan PIC, menggunakan rujukan Bahasa C dalam pengembangan sejumlah produknya – C Optimized. Artinya, chip-chip tersebut memang dirancang untuk diprogram secara optimal dengan Bahasa C.

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 🙂