Categories
Mikrokontroler

Hari-2: Pelatihan Mikrokontroler AVR

Hari-2 Pelatihan Mikrokontroler AVR saya isi dengan topik ADC (Analog to Digital Converter) dan Komunikasi port serial.

Apa dan mengapa ADC?

ADC atau Analog to Digital Converter adalah sebuah alat yang dapat digunakan untuk mengkonversi sinyal atau isyarat analog menjadi digital yang siap disimpan atau diproses lebih lanjut oleh peralatan digital, termasuk mikrokontroler AVR.

Mikrokontroler AVR ATmega 8535, yang kita gunakan dalam pelatihan, memilki 8 kanal ADC, yang dikontrol menggunakan multiplekser, dengan resolusi maksimum 10-bit. Port ADC 8-kanal ini terdapat di PORTA, perhatikan gambar diagram pin kemasan PDIP berikut ini:

Categories
Mikrokontroler Pembelajaran

Hari-1: Pelatihan Mikrokontroler AVR

Hari-1 Pelatihan Mikrokontroler AVR saya isi dengan memberikan konsep I/O. Yach lumayan banyak juga yang harus dipelajari, yaitu: antarmuka LED, antarmuka LCD, antarmuka pushbutton dan keypad matrix.

Perangkat keras yang digunakan adalah AVR Microcontroller Development Board v1.0 (AMDB1.0) yang merupakan produk dari tim Technovision (mahasiswa-mahasiswa ELINS, UGM). AMDB1.0 ini memiliki beberapa fitur:

  • Untuk mikrokontroler Atmel AVR: ATmega16, 32, 8515, 8535 (40 pin)
  • Dilengkapi dengan LCD 2×16 karakter;
  • Port serial RS232;
  • 8 buah LED;
  • 4 buah pushbutton;
  • 1 buah keypad matrix ukuran 4×4 (16 pushbutton);
  • 1 buat tampilan 4x7segmen, dan
  • 1 buat dot matrix 5×7 dot

Apa yang harus dilakukan untuk membuat aplikasi? Tentu saja, Anda harus mengikuti alur sebagaimana ditunjukkan pada gambar berikut ini:

Categories
Mikrokontroler

Sistem Akuisisi Data menggunakan ATMega8

Oleh Dominikus, diterjemahkan secara bebas oleh Agfianto Eko Putra

Pendahuluan

Projek ini adalah upaya untuk membuat sebuah sistem akuisisi data sederhana, sebuah sistem yang bisa digunakan untuk memperoleh data-data dari sensor melalui rangkaian mikrokontroler yang kemudian disalurkan melalui port serial ke komputer (yang selanjutnya bisa dibuat GUI-nya, sebagaimana proyek Sistem Akuisisi data dan Pencatatan oleh Abbas Raza (klik disini)).

Dalam proyek kali ini, akan digunakan komputer untuk GUI dari sistem akuisisi data yang menggunakan bantuan mikrokontroler ATMega8. Mikrokontroler ini sudah memiliki 6 kanal ADC 10-bit didalamnya, untuk versi kemasan DIP. Sedangkan versi kemasan TQFP memiliki 8-kanal, atau Anda bisa menggunakan mikrokontroler Atmel AVR lainnya (ATMega16, ATMega32, dll).

Untuk sensor suhu digunakan LM335, yang dapat digunakan untuk membaca suhuh sekitar hanya dengan 2 kabel saja. LM335 menghasilkan suatu sinyal luaran yang sebanding dengan skala suhu dalam Celcius. Potensiometer digunakan untuk melakukan kalibrasi tegangan luaran terhadap suhu yang diketahui, misalnya 2,98V sebanding dengan 25 Celcius. Rangkaian ditunjukkan pada Gambar 1.

Categories
Mikrokontroler

BASIC Compiler untuk AVR

Mengapa menggunakan Bahasa BASIC untuk pemrograman mikrokontroler AVR? BASIC merupakan bahasa tingkat tinggi, lebih mudah dipelajari dan dipahami dibandingkan dengan bahasa Assembly atau C.

Berikut ini, sengaja, saya sampaikan ulasan singkat tentang beberapa BASIC Compiler untuk mikrokontroler Atmel AVR. Mengapa? Agar Anda bisa mendapatkan informasi langsung dari sumbernya serta membandingkan semuanya…

Categories
Mikrokontroler

Tutorial AT89: RTC DS1307 (64 x 8 Serial Real-Time Clock)

RTC yang kita bahas kali ini adalah RTC dengan antarmuka I2C, yaitu DS1307. Artikel yang membahas RTC lain secara lengkap, DS12C887, yang menggunakan antarmuka paralel dan penggunaan bahasa assembly, bisa Anda baca mulai dari Pendahuluan, Register Data/Kontrol, dan Contoh Aplikasi.

Okey… sekarang kita lihat dulu fitur dari DS1307:

  • Real-time clock (RTC) meyimpan data-data detik, menit, jam, tanggal, bulan, hari dalam seminggu, dan tahun valid hingga 2100;
  • 56-byte, battery-backed, RAM nonvolatile (NV) RAM untuk penyimpanan;
  • Antarmuka serial Two-wire (I2C)
  • Sinyal luaran gelombang-kotak terprogram (Programmable squarewave);
  • Deteksi otomatis kegagalan-daya (power-fail) dan rangkaian switch;
  • Konsumsi daya kurang dari 500nA menggunakn mode baterei cadangan dengan operasional osilator;
  • Tersedia fitur industri dengan ketahana suhu: -40°C hingga +85°C
  • Tersedia dalam kemasa 8-pin DIP atau SOIC

Sedangkan daftar pin DS1307:

  • VCC – Primary Power Supply
  • X1, X2 – 32.768kHz Crystal Connection
  • VBAT – +3V Battery Input
  • GND – Ground
  • SDA – Serial Data
  • SCL – Serial Clock
  • SQW/OUT – Square Wave/Output Driver
Categories
Mikrokontroler

Pemrograman Mikrokontroler dalam Bahasa Tingkat-Tinggi

Pembuatan program mikrokontroler dalam bahasa tingkat-tinggi (high-level language, disingkat HLL), misalnya bahasa ‘C’ atau ‘BASIC’, memungkinkan kita mengurangi waktu pengembangan secara signifikan jika dibandingkan dengan Bahasa Assembly. Ada juga yang mengatakan, seorang perancang yang sudah beperngalaman bisa menuliskan sejumlah baris kode-kode yang sama per hari baik dalam C dan Assembly. Namun perlu diingat bahwa, sebaris kode dalam C sama dengan sejumlah kode atau baris dalam Assembly.

Biasanya, sebuah program yang ditulis dalam HLL akan lebih terstruktur dibandingkan program yang sama yang ditulis dalam Assembly. Dengan demikian, akan lebih mudah melakukan pelacakan (debugging) dalam HLL.

Kebanyakan arsitektur mikrokontroler 8-bit dilengkapi dengan sebuah kompailer. Bagaimanapun juga, ada perbedaan besar dalam bagaimana efisiensi arsitektur untuk HLL, dan bagaimana kode-kode C disusun agar efisien untuk suatu arsitektur mikrokontroler tertentu. Ada yang mengatakan bahwa arsitektur berbasis akumulator, seperti 8051 dari Intel, bekerja dengan baik menggunakan variabel-variabel global, sedangkan arsitektur berbasis register, seperti AVR-nya Atmel, bekerja dengan baik menggunakan variabel-variabel lokal.

Categories
Mikrokontroler

Watchdog dengan BASCOM-51 atau BASCOM-AVR

Diterbitkan Nopember 2008, di-update 27 Januari 2010

Pewaktu watchdog merupakan piranti pewaktuan perangkat keras yang bisa memicu reset sistem pada saat program utama, karena ada beberapa keasalahan, seperti hang, mengabaikan layanan rutin ke watchdog (biasanya seperti pemberian pulsa secara rutin), atau gampangannya kalo Anda punya anjing atau kucing kemudian lupa memberikan makan, apa yang terjadi? Ya jegog atau ngeong khan?? Dalam hal ini, saat jegog atau ngeong, pewaktu watchdog akan mereset sistem. Intinya, mengembalikan sistem ke awal mula (kondisi normal) karena telah terjadi kesalahan atau hang tadi…

Watchdog pada keluarga AT89 (khususnya seri AT89S52 ke atas) terdiri dari sebuah pencacah 13-bit dan Watchdog Timer Reset (WDTRST). WDT atau pewaktu watchdog biasanya tidak (belum) diaktifkan. Untuk mengaktifkan WDT, pengguna harus menuliskan 0x1E dan 0xE1 secara berurutn ke register WDTRST (lokasi SFR alamat 0xA6). Saat WDT diaktifkan, nilainya akan selalu dinaikkan setiap siklus mesin selama osliator juga bekerja. Timeout pada WDT bergantung pada frekuensi kristal atau detak yang digunakan. Tidak ada jalan lain untuk menon-aktifkan WDT kecuali melalui RESET (baik reset secara perangkat keras atau reset karena WDT melimpah atau overflow). Pada saat WDT melimpah, maka akan menghasilkan luaran pulsa RESET HIGH pada pin RST.

Instruksi Watchdog pada BASCOM51/BASCOM-AVR

Sintaks:

START WATCHDOG ' untuk menjalankan pewaktu watchdog
STOP WATCHDOG  ' untuk menghentikan pewaktu watchdog
RESET WATCHDOG ' untuk mereset nilai pewaktu Watchdog

Catatan:

  • AT89S8252 memiliki pewaktu Watchdog internal.
  • Pewaktu watchdog adalah pewaktu yang bisa me-RESET mikrokontroler saat mencapai nilai tertentu.
  • Selama jalannya program, pewaktu ini harus di-reset (secara manual) sebelum mencapai nilai maksimum-nya. Hal ini untuk memastikan bahwa program berjalan dengan baik dan benar (kayak bahasa Indonesia aja ya…).
  • Saat program mengalami masalah (hang, crash) atau diam saja pada suatu kalang, maka tidak terjadi proses reset pewaktu Watchdog sehingga RESET sistem secara otomatis akan terjadi.

Anda perlu mengkonfigurasi waktu reset Watchdog dengan perintah…

CONFIG WATCHDOG = waktu

Waktu, yang dinyatakan dalam milidetik, jika watchdog tidak direset, akan menyebabkan limpahan (overflow) yang kemudian me-RESET sistem, nilainya antara lain: 16, 32, 64, 128, 256, 512, 1024 atau 2048

Contoh dan penjelasan

$regfile="89s8252.dat"
$crystal = 12000000
$baud = 2400

Config Watchdog = 2048           ' lakukan reset setelah 2048 milidetik
Start Watchdog                   ' jalankan pewaktu watchdog
Dim I As Word
For I = 1 To 10000
   Print I                         ' tampilkan nilai I
'  Reset Watchdog
'
' jika Anda perhatikan, perintah FOR-NEXT
' tidak akan selesai karena keburu di-RESET
' tetapi jika perintah Reset Watchdog diaktifkan...
' instruksi FOR-NEXT akan berjalan dengan normal,
' karena pewaktu WDT akan di-reset sebelum
' mencapai 2048 milidetik
Next
End

Semoga bermanfaat…

Categories
Mikrokontroler

Pengetahuan Dasar Mikrokontroler AVR

Pendahuluan

Keluarga Mikrokontroler AVR merupakan mikrokontroler dengan arsitektur modern (emang selama ini ada yang kuno kali??). Terdapat 3 macam atau jenis mikrokontroler AVR, yaitu:

  • TinyAVR (tidak ada kaitannya ama mbak Tini yang jualan gudeg…)
  • AVR atau Classic AVR, dan
  • megaAVR (nah yang ini sudah mulai banyak yang nulis bukunya…)

Perbedaan jenis-jenis tersebut terletak dari fasilitas, atau lebih dikenal dengan fitur-fiturnya. Jenis TinyAVR merupakan mikrokontroler dengan jumlah pin yang terbatas (sedikit maksudnya) dan sekaligus fitur-fiturnya juga terbatas dibandingkan yang megaAVR. Semua mikrokontroler AVR memiliki set instruksi (assembly) dan organisasi memori yang sama, dengan demikian berpindah-pindah (walaupun tidak disarankan) antar mikrokontroler AVR gak masalah dan mudah!

Beberapa mikrokontroler AVR memiliki SRAM, EEPROM, antarmuka SRAM eksternal, ADC, pengali perangkat keras, UART, USART dan lain sebagainya. Bayangkan saja Anda punya TinyAVR dan MegaAVR, kemudian telanjangi (maksudnya copotin) semua periferal-nya, nah Anda akan memiliki AVR Core yang sama! Kayak membuang semua isi hamburger, maka Anda akan mendapatkan rotinya doang yang sama…

Memilih AVR “yang benar”

Moralnya…  tidak peduli tinyAVR, AVR (Classic AVR) atau megaAVR semuanya memiliki unjuk-kerja yang sama saja, tetapi dengan “kompleksitas” atau fasilitas yang berbeda-beda, ibaratnya begini: banyak fasilitas dan fitur = megaAVR, fitur atau fasilitas terbatas = TinyAVR. Gitu aja kok repot…

Nah AVR (Classic AVR) ada di antara kedua jenis tersebut dan perbedaan antara kelompok-kelompok ini semakin menjadi tidakjelas. Nah untuk aplikasi yang ingin Anda buat, sebaiknya Anda memilih mikrokontroler AVR dengan fitur-fitur yang Anda butuhkan, apalagi sekarang mikrokontroler AVR dijual dengan harga yang relatif terjangkau (nb: harga di Yogyakarta).

Belajar pemrograman mikrokontroler AVR??

Jawabannya ada di Ebook gratis Tutorial/workshop AVR bisa diunduh disini

Categories
Mikrokontroler

Belajar Mikrokontroler itu Mudah!

Sebenarnya, siapa saja yang perlu belajar mikrokontroler? Apakah hanya monopoli rekan-rekan di ELINS atau Teknik Elektro saja? Tidak, sama sekali tidak. Beberapa pembaca buku saya “Belajar Mikrokontroler AT89C51/52/55: Teori dan Praktek” berasal dari (berdasar email yang masuk dari seluruh Indonesia):

  • Para peminat atau hobyis dengan berbagai latar belakang pendidikan;
  • Pelajar SMA dan STM, bahkan tidak menutup kemungkinan pelajar SMP-pun berhak mendapatkan ilmu mikrokontroler, jika mereka berminat;
  • Mahasiswa teknik (khususnya Elektro, Industri dan Fisika), MIPA (khususnya ELINS dan Ilmu Komputer) maupun dari beberapa disiplin ilmu lainnya.

Kenapa mudah? Karena modalnya (1) Tekad dan (2) Menguasai atau minimal memahami logika dan algoritma. Hal ini disebabkan pemrograman mikrokontroler banyak membutuhkan cara berpikir yang logis dan terstruktur.

Untuk pemula saya sarankan menggunakan BASIC Stamp atau mikrokontroler dengan pendekatan bahasa BASIC atau yang sudah dipahami sebelumnya seperti Bahasa C, karena banyak kemudahan yang ditawarkan, mulai dari pembuatan rangkaian aplikasi hingga pemrogramannya. Lantas sarana belajar apa saja yang perlu disiapkan?

  • Buku-buku bacaan Mikrokontroler yang mudah dipahami, tidak hanya menggunakan bahasa yang Anda pahami (Indonesia) tetapi dituliskan atau disampaikan dengan cara yang relatif mudah dipahami.
  • Perangkat lunak kompiler atau cross assembler yang berkaitan dengan mikrokontroler yang dipelajari, ini digunakan untuk mengubah program kita menjadi siap untuk dieksekusi atau dijalankan oleh mikrokontroler yang bersangkutan. Bagaimana cara mendapatkan kompiler tersebut? Download saja dari website mikrokontroler yang bersangkutan (biasanya mereka menyediakan secara gratis).
  • Penting juga untuk menyediakan sebuah perangkat lunak lengkap yang bisa melakukan penggambaran rangkaian dan simulasi program mikrokontroler secara internal maupun visual secara real-time.
  • Perlu juga membuat rangkaian pemrogram (donwloader) atau papan pengembang atau langsung rangkaian aplikasi untuk melihat langsung hasil pemrograman mikrokontroler yang dilakukan.

Adakah perangkat lunak yang bisa untuk melakukan simulasi secara internal maupun visual? Tentu saja ada, hanya saja komersil dan harganya mahal sekali. Akan saya jelaskan ebook gratis saya yang bisa diunduh disini… monggo…

Categories
Mikrokontroler

Apakah Mikrokontroler itu?

Jika kita bicara tentang Mikrokontroler, maka tidak terlepas dengan pengertian atau definisi tentang Komputer itu sendiri, mengapa? Ada kesamaan-kesamaan antara Mikrokontroler dengan Komputer (atau Mikrokomputer), antara lain:

  • Sama-sama memiliki unit pengolah pusat atau yang lebih dikenal dengan CPU (Central Processing Unit);
  • CPU tersebut sama-sama menjalankan program dari suatu lokasi atau tempat, biasanya dari ROM (Read Only Memory) atau RAM (Random Access Memory);
  • Sama-sama memiliki RAM yang digunakan untuk menyimpan data-data sementara atau yang lebih dikenal dengan variabel-variabel;Sama-sama memiliki beberapa keluaran dan masukan yang digunakan untuk melakukan komunikasi timbal-balik dengan dunia luar.

Lantas apa yang membedakan antara Mikrokontroler dengan Komputer atau Mikrokomputer? Begitu mungkin pertanyaan yang ada di benak kita, saat kita membaca beberapa daftar kesamaan yang sudah saya tuliskan tersebut. Sama sekali berbeda, itu jawaban yang saya berikan kepada Anda:

Mikrokontroler adalah versi mini dan untuk aplikasi khusus dari Mikrokomputer atau Komputer!

Berikut saya berikan kembali daftar kesamaan yang pernah ditulis sebelumnya dengan menekankan pada perbedaan antara Mikrokontroler dan Mikrokomputer:

  • CPU pada Mikrokomputer berada eksternal dalam suatu sistem, sampai saat ini kecepatan operasionalnya sudah mencapai tingkat lebih dari 2 GHz, sedangkan CPU pada Mikrokontroler berada internal dalam sebuah chip, kecepatan bekerja masih cukup rendah, dalam orde MHz (misalnya, 24 MHz, 40 MHz dan lain sebagainya). Kecepatan yang relatif rendah ini sudah mencukupi untuk aplikasi-aplikasi berbasis mikrokontroler.
  • Jika CPU pada mikrokomputer menjalankan program dalam ROM atau yang lebih dikenal dengan BIOS pada saat awal dihidupkan, kemudian mengambil atau menjalankan program yang tersimpan dalam hard disk. Sedangkan mikrokontroler sejak awal menjalankan program yang tersimpan dalam ROM internal-nya (bisa berupa Mask ROM atau Flash PEROM). Sifat memori program ini non volatile, artinya tetap akan tersimpan walaupun tidak diberi catu daya.
  • RAM pada mikrokomputer bisa mencapai ukuran sekian MByte dan bisa di-upgrade ke ukuran yang lebih besar dan berlokasi di luar chip CPU-nya, sedangkan RAM pada mikrokontroler ada di dalam chip mikrokontroler yang bersangkutan dan ukurannya sangat minim, misalnya 128 byte, 256 byte dan seterusnya dan ukuran yang relatif kecil inipun dirasa cukup untuk aplikasi-aplikasi mikrokontroler.
  • Keluaran dan masukan pada mikrokomputer jauh lebih kompleks dibandingkan dengan mikrokontroler, yang jauh lebih sederhana, selain itu, pada mikrokontroler tingkat akses keluaran dan masukan bisa dalam satuan per bit.
  • Jika diamati lebih lanjut, bisa saya katakan bahwa Mikrokomputer atau Komputer merupakan komputer serbaguna atau general purpose computer, bisa dimanfaatkan untuk berbagai macam aplikasi (atau perangkat lunak). Sedangkan mikrokontroler adalah special purpose computer atau komputer untuk tujuan khusus, hanya satu macam aplikasi saja.

Perhatikan gambar berikut agar Anda mendapatkan gambaran tentang mikrokontroler…

ALU, Instruction Decoder, Accumulator dan Control merupakan Otak-nya mikrokontroler yang bersangkutan. Jantungnya berasal dari detak OSC (lihat gambar sebelah kiri atas). Sedangkan di sekeliling ‘Otak’ terdapat berbagai macam periferal seperti SFR (Special Function Register yang bertugas menyimpan data-data sementara selama proses berlangsung), Memori RAM (tugas hampir sama seperti SFR hanya saja tidak berhubungan langsung selama proses operasional mikrokontroler), ADC (untuk mengubah data-data analog menjadi digital untuk diolah atau diproses lebih lanjut), EEPROM (sama seperti RAM hanya saja tetap akan menyimpan data walaupun tidak mendapatkan sumber listrik/daya) dan port-port I/O untuk masukan/luaran, untuk melakukan komunikasi dengan pihak-pihak eksternal mikrokontroler (sensor dan aktuator).

Ciri khas mikrokontroler lainnya, antara lain:

  • ‘Tertanam’ (atau embedded) dalam beberapa piranti (umumnya merupakan produk konsumen) atau yang dikenal dengan istilah embedded system atau embedded controller;
  • Terdedikasi untuk satu macam aplikasi saja (lihat contoh-contoh yang akan saya terangkan pada bagian berikutnya);
  • Hanya membutuhkan daya yang rendah (low power) sekitar 50 mWatt (Anda bandingkan dengan komputer yang bisa mencapai 50 Watt lebih);
  • Memiliki beberapa keluaran maupun masukan yang terdedikasi, untuk tujuan atau fungsi-fungsi khusus;
  • Kecil dan relatif lebih murah (seri AT89 di pasaran serendah-rendahnya bisa mencapai Rp. 15.000,00 sedangkan Basic Stamp bisa mencapai Rp. 500.000,00);
  • Seringkali tahan-banting, terutama untuk aplikasi-aplikasi yang berhubungan dengan mesin atau otomotif atau militer.

Dapatkan informasi lengkapnya dengan mengunduh ebook gratisnya disini