Sistem Minimum Mikrokontroler Dengan Bootloader – Praktis, Tak Perlu Lagi ISP Programmer/Downloader

Memiliki sistem minimum sebuah mikrokontroler dalam proses belajar mikrokontroler mutlak diperlukan. Meskipun kita bisa menggunakan software simulator yang sangat canggih untuk belajar mikrokontroler tanpa hardware, namun dengan praktek secara langsung menggunakan hardware yang sesungguhnya dapat memberikan pengalaman yang baik yang nantinya akan dapat membantu kita dalam pengaplikasian mikrokontroler secara riil.

Pada tulisan ini akan dibahas 3 buah sistem minimum yang dapat digunakan untuk teman belajar mikrokontroler maupun untuk aplikasi sistem berbasis mikrokontroler. Sistem minimum yang dimaksud adalah: Starduino Board, MinSys ATmega8535/16/32, dan MinSys MCS-51 berbasis mikrokontroler STC-51 tipe STC11F32XE.

Ketiganya adalah sistem minimum yang dilengkapi program bootloader sehingga tidak diperlukan lagi rangkaian ISP Downloader/Programmer.

telinks_starduino

STARDUINO BOARD
Starduino Board adalah sistem minimum AVR ATmega8 dengan bootloader Arduino sehingga board ini bisa diprogram langsung menggunakan program IDE Arduino melalui port serial RS232.

Starduino Board memiliki peta I/O yang sama dengan Arduino Duemilanove/UNO. Jadi untuk program-program Arduino bisa dijalankan menggunakan board ini. Akan tetapi tidak semua program yang berjalan di Arduino Duemilanove/UNO bisa berjalan di Starduino. Semata karena Starduino hanya menggunakan ATmega8 sedangkan Arduino Duemilanove/UNO menggunakan ATmega328. Namun demikian, ATmega8 bisa diganti dengan ATmega168 atau ATmega328, sehingga Starduino Board tidak lagi berbeda dengan Arduino Duemilanove/UNO.

Starduino Board memiliki konektor pin-pin I/O berupa deretan header tunggal (male) yang siap dihubungkan ke modul-modul antarmuka pendukung seperti sensor, keypad, LCD, seven-segment, dan lain-lain. Header tunggal (male) dipilih karena konektor ini dapat terhubung dengan sangat baik jika dipasangkan dengan black-housing.

Starduino Board membutuhkan tegangan suplai 7,5-12V DC. Konektor tegangan suplai adalah sebuah terminal-screw sehingga kuat dan tak mudah goyah. Starduino Board juga memiliki 5 buah power-port 5V yang dapat digunakan untuk mensuplai rangkaian-rangkaian pendukung maupun breadboard.

Berikut adalah screenshot program Arduino 1.0.1 ketika meng-upload program pengujian Starduino melalui port serial RS232 (COM1) dan screenshot terminal COM1.

starduino_tester_pde starduino_tester_pde_com1

Starduino Board merupakan pilihan tepat jika Anda membutuhkan sistem minimum dengan jumlah I/O memadai, memori program yang cukup dan tidak memerlukan ISP Programmer. Dengan IDE Arduino, Anda dapat mengubah Starduino Board menjadi prototipe sistem apapun dengan mudah dan handal. Handal, karena library Arduino telah teruji secara internasional!

Untuk informasi harga dan pemesanan Starduino Board, silakan berkunjung ke situs kami di: http://teknikelektrolinks.com.

telinks_msmega MSMEGA (ATmega8535/16/32)
Sistem minimum berikutnya adalah sistem minimum mikrokontroler AVR ATmega8535, ATmega16, atau ATmega32. Seperti terlihat pada foto di samping, sistem minimum ini dilengkapi dengan port serial RS232, 8 buah LED, 3 buah push-button, konektor header tunggal untuk antarmuka I/O, dan port ISP.

Sistem minimum ini juga memiliki bootloader sehingga tidak diperlukan lagi rangkaian ISP Programmer/Downloader. Program bootloader yang digunakan adalah buatan The chip45 GmbH & Co. KG (www.chip45.com). Untuk meng-upload file program mikrokontroler (.HEX) digunakan program chip45boot2 GUI.

Kelebihan bootloader buatan chip45 adalah program menggunakan algoritma autobaudrate sehingga bootloader ini dapat digunakan dengan clock sesuai kebutuhan kita. Pada board MSMEGA digunakan kristal 11.0592 MHz untuk mendapatkan kesempurnaan transfer data serial UART.

Berikut adalah screenshot program chip45boot2 GUI ketika meng-upload file program m16.hex dan screenshot program Hyperterminal pada port COM1 dengan baudrate 9600.

chip45boot2_gui

msmega_com1

Adapun program pengujian sistem minimum MSMEGA di atas adalah sebagai berikut:

m16_c

Program pengujian di atas di-compile menggunakan AVR-GCC dengan perintah-perintah sebagai berikut:

C:\WinAVR\bin>avr-gcc -g -Os -mmcu=atmega16 -c m16.c uart.c
C:\WinAVR\bin>avr-gcc -g -mmcu=atmega16 -o m16.elf m16.o uart.o
C:\WinAVR\bin>avr-objcopy -j .text -j .data -O ihex m16.elf m16.hex

FYI, program ditulis menggunakan editor teks Cream 0.43 (Vim 7.3.107). Program dapat Anda download dari: http://cream.sourceforge.net.

Untuk informasi harga dan pemesanan sistem minimum ATmega8535/16/32, silakan mengunjungi situs kami di: http://teknikelektrolinks.com.

telinks_stc51

MINSYS STC-51
STC-51 adalah produk mikrokontroler buatan Cina berarsitektur MCS-51 dengan berbagai macam pengembangan. STC-51 memiliki tipe mikrokontroler yang beraneka-ragam. Mikrokontroler STC-51 selain lebih cepat dibandingkan dengan mikrokontroler AT89S51/52, juga memiliki fitur-fitur seperti ADC Internal, PWM Generator, dan lain-lain seperti layaknya mikrokontroler PIC dan AVR.

Jadi, jika Anda pengguna mikrokontroler seri AT89S51/52, maka STC-51 merupakan pilihan tepat untuk pengembangan fitur sistem tanpa harus mempelajari lagi pemrograman mikrokontroler dari awal. Dan jika Anda seorang pemula yang ingin mempelajari mikrokontroler MCS-51, sistem minimum ini sangat cocok karena mikrokontroler yang digunakan (STC11F32XE) telah memiliki bootloader sehingga dapat diprogram melalui port serial RS232. Jadi tidak perlu lagi ISP Programmer/Downloader.

Untuk meng-upload file .HEX atau file .BIN, digunakan program STC-ISP sebagai berikut:

stc_isp

Berikut adalah program pengujian sistem minimum MCS-51 berbasis mikrokontroler STC11F32XE yang ditulis menggunakan M-IDE Studio for MCS-51 dengan kompiler SDCC.

mide51_stc51

Dan berikut ini adalah screenshot program Hyperterminal yang terhubung dengan sistem minimum STC11F32XE melalui port serial COM1.

hyperterminal_stc51

Tipe mikrokontroler STC-51 yang dapat digunakan selain tipe 11FxxXE adalah STC89C52RC, STC12C5AxxS2, dan tipe mikrokontroler 40-pin PDIP yang lain asalkan kompatibel dengan pin-pin AT89S51/52.

Dengan mikrokontroler STC-51, kemampuan sistem minimum menjadi semakin hebat. Tak hanya kaya fitur layaknya mikrokontroler PIC dan AVR, kecepatan mikrokontroler STC-51 mencapai 12 kali lipat dari mikrokontroler AT89C51.

Jika Anda berminat, silakan mengunjungi situs kami di: http://teknikelektrolinks.com untuk mengetahui informasi harga dan prosedur pemesanannya.

Selamat belajar dan selamat berkarya!

:)

Tutorial Mikrokontroler 89S51: Mengenal MIDE-51 Development Tools MCS-51 GRATIS Dari OpCUBE

mide51

MIDE-51 adalah sebuah paket program IDE untuk mikrokontroler MCS-51 yang terintegrasi dengan kompiler C MCS-51, assembler MCS-51, dan juga simulator MCS-51.

Untuk kompiler C, MIDE-51 menggunakan program SDCC dan untuk assembler, MIDE-51 menggunakan ASEM51. Baik SDCC maupun ASEM51, keduanya termasuk program-program terbaik yang tersedia secara gratis (freeware). ASEM51 adalah assembler yang pernah digunakan untuk memprogram Mobot Mars!

Untuk simulator, MIDE-51 mengintegrasikan program TS Controls Emulator 8051 dan JSim51. Meskipun kedua simulator ini dibuat pada tahun 1998 dan 1999, namun masih layak kita gunakan dalam proses debugging. Software TS Controls Emulator 8051 adalah simulator yang dulu menemani saya bertahun-tahun dalam mempelajari pemrograman 8051, termasuk juga saya gunakan dalam pekerjaan secara profesional.

MIDE-51 menganut sistem single-file project, jadi dalam pembuatan program kita hanya perlu membuat sebuah file program saja, sehingga sangatlah cocok digunakan untuk pemula. Namun demikian, bukan berarti MIDE-51 tidak layak digunakan untuk membuat program 8051 yang kompleks.

Membuat Program BLINK.C

mide51_new

Sebagai contoh, mari kita membuat program BLINK.C. Program ini sederhana saja, hanya mengubah-ubah kondisi logika PORT1 dari logika HIGH ke logika LOW dan sebaliknya secara terus-menerus dengan interval tertentu. Atau biasa disebut sebagai blinking led kalau pada pin PORT1 kita berikan rangkaian LED.

Langkah pertama adalah memilih menu File –> New atau bisa juga dilakukan dengan menekan tombol shortcut Ctrl-N.

Selanjutnya, MIDE-51 akan membuka window editor baru yang belum bertitel apapun (Untitled).

Langkah selanjutnya adalah mengetik listing program berikut ini:

/* BLINK.C */

#include <at89x51.h>

void delay(int n)
{
  int i, j;
  for (i=1;i<=n;i++)
    for (j=1;j<=10;j++);
}

/* PROGRAM UTAMA */
int main(void)
{
  while(1)
  {
    P1 = 0;
    delay(5000);
    P1 = 0xff;
    delay(5000);
  }
}

Setelah selesai mengetik program di atas, simpan dengan nama blink.c dan kompilasi dengan memilih menu Build –> Build and Sim.

mide51_save      mide51_build

Selesai melakukan kompilasi, MIDE-51 akan mengeksekusi program TS Controls Emulator 8051 dan otomatis membuka file hexa hasil kompilasi SDCC sebagai berikut:

image

Untuk melakukan simulasi (debugging), terdapat beberapa perintah yang dapat kita gunakan yakni:

  • Step Into Next Instruction (F11)
  • Step Over CALL (F10)
  • Step Over CALL/DJNZ (Shift-F10)
  • Reset (Ctrl-Shift-F5)

Dengan perintah-perintah tersebut kita dapat mengikuti jalannya program dengan tujuan agar kita dapat lebih memahami bagaimana program mikrokontroler bekerja. TS Controls Emulator 8051 juga dapat mensimulasikan kerja TIMER dan juga INTERRUPT. Memang bukan software emulator yang ‘DAHSYAT’, tapi layak untuk digunakan.

Jika Anda mengikuti jalannya program assembler pada simulator, nantinya akan terlihat perubahan nilai pada register P1 (PORT1) yang berubah-ubah dari FF ke 00 dan sebaliknya. Nilai register ini dapat di lihat pada Window SF Registers.

Untuk simulator JSIM-51 dapat Anda coba dan bandingkan sendiri.

Btw, File hexa hasil kompilasi program dapat langsung diprogram ke memori mikrokontroler menggunakan rangkaian dan program downloader ISP untuk dilihat hasil kerjanya secara langsung menggunakan board mikrokontroler 89S51.

Sekian perkenalan singkat kita dengan MIDE-51. Anda dapat mengunduh paket program MIDE-51 menggunakan download link berikut ini.

Download MIDE-51
( ~4 MB )

Selamat belajar dan selamat berkarya!

:)

Tutorial Mikrokontroler 89S51: Contoh Program Komunikasi Data Serial UART

89s51_rs232

Komunikasi data serial UART merupakan salah satu fitur mikrokontroler 89S51 yang sangat penting karena dengan adanya fitur ini mikrokontroler dapat melakukan komunikasi data secara serial dengan  komputer, dengan sesama mikrokontroler, ataupun dengan piranti-piranti kontrol dan otomasi seperti PLC, Temperature Controller, Power Meter, dan lain-lain.

Gambar disamping adalah skematik rangkaian mikrokontroler AT89S51 dengan konverter tegangan TTL-to-RS232 menggunakan IC Maxim MAX232. Kapasitor C1, C2, C3, dan C4 adalah kapasitor elektrolit dengan nilai 1uF/25V atau 22uF/25V. Konektor J1 terhubung ke port serial RS232 komputer.

Untuk menguji rangkaian di atas, berikut adalah contoh program komunikasi data serial yang ditulis dalam bahasa C. Program dikompilasi menggunakan kompiler freeware SDCC. Untuk memudahkan proses pengembangan program, saya menggunakan IDE yang juga freeware yakni MIDE-51. Sedikit pengantar mengenai MIDE-51 beserta download link-nya dapat Anda baca pada postingan berikut ini: https://telinks.wordpress.com/2012/10/12/tutorial-mikrokontroler-89s51-mengenal-mide-51-development-tools-mcs-51-gratis-dari-opcube/

image 

LISTING PROGRAM

/*
  Contoh program komunikasi data serial
http://teknikelektrolinks.com
*/
#include <at89x51.h>
#include <stdio.h>

void delay(unsigned int n)
{
   unsigned int i, j;

   for (i=1;i<=n;i++) for (j=1;j<=10;j++);
}

void putchar (char c)
{
  while (!TI);
  TI = 0;
  SBUF = c;
}

char getchar(void)    // Get Character from UART
{
  if (RI!=0)
  {
    RI = 0;
    return SBUF;
  }
  else
    return -1;
}

void initseri()
{
   SCON = 0x52;
   TMOD = (TMOD & 0x0F) | 0x20;
   PCON = 0x80;
   TH1 = 0xFD;
   TR1 = 1;
   ES = 1;
   TI = 1;
   RI = 0;
   EA = 1;
}

/* PROGRAM UTAMA */
int main()
{
  int x = 0, c;

  initseri();

  printf_tiny("Minsys AT89S51\n\r");
  printf_tiny("Teknik Elektro Links\n\r");
  printf_tiny("http://teknikelektrolinks.com\n\r");

  while(1)
  {
    c = getchar();
    if (c!=-1)
    {
      printf_tiny("\n\rTerima data = %d\n\r", c);
    }
    P1 = ~P1;
    P2 = ~P2;
    P0 = ~P0;
    x++;
    printf_tiny("%d", x);
    delay(5000);
    if (x==10)
    {
      x = 0;
      printf_tiny("\n\r\n\r");
      printf_tiny("Minsys AT89S51\n\r");
      printf_tiny("Teknik Elektro Links\n\r");
      printf_tiny("http://teknikelektrolinks.com\n\r");
    }
  } 
}

Sebelum dapat digunakan, UART perlu diinisialisasi terlebih dahulu, termasuk juga fungsi TIMER1 untuk pembangkit clock baudrate. Pada contoh ini digunakan baudrate 2×9600=19200 pada sistem dengan kristal 11,0592MHz. Pada percobaan ini saya menggunakan kristal 22,1184MHz sehingga baudrate yang dihasilkan adalah 38400.

Berikut adalah screenshot program Hyperterminal yang berkomunikasi dengan mikrokontroler melalui port serial RS232.

89s51_rs232_hyperterminal

Inisialisasi UART dilakukan dengan memanggil fungsi initseri(). Selanjutnya mikro akan mengirimkan tulisan: “Minsys AT89S51… dst.”, dan menampilkan deretan angka mulai dari 1 hingga 10. Mikrokontroler akan terus-menerus mengirimkan data tersebut.

Selain mengirimkan data tulisan, mikrokontroler juga senantiasa mengecek apakah ada data yang diterima dari komputer. Jika mikrokontroler menerima data dari komputer, maka mikrokontroler akan mengirimkan tulisan: “Terima data = <data>”. <data> adalah nilai integer dari data karakter yang diterima oleh mikrokontroler.

Perlu diperhatikan juga bahwa dalam contoh program ini digunakan fungsi printf_tiny(), yakni fungsi untuk menampilkan atau mengeluarkan data karakter atau string ke standard output yang ditentukan, dalam hal ini adalah port serial UART. SDCC memiliki banyak jenis fungsi printf() yang dapat Anda pelajari pada dokumentasi SDCC.

telinks_ms89s51

Modul Minimum System 89S51 lengkap dengan rangkaian RS232 seperti di atas dapat Anda dapatkan di: http://teknikelektrolinks.com.

Semoga bermanfaat, selamat belajar dan selamat berkarya!

:)

Counter Barang Dengan Sensor Cahaya Berbasis Mikrokontroler 89S51

telinks_counter_ldr

Counter elektronik merupakan salah satu komponen kontrol dan otomasi yang banyak diaplikasikan di industri. Counter bertugas menghitung. Counter menghitung kuantitas fisik secara elektronik dengan bantuan sensor. Sensor yang banyak digunakan di dunia industri untuk keperluan counting adalah limit-switch, proximity switch, dan infra merah.

Limit-switch menggunakan sistem mekanik dalam kerjanya. Limit-switch merupakan sensor tipe kontak. Penghitungan dilakukan berdasarkan perubahan kondisi limit-switch yang berubah-ubah dari kondisi TERHUBUNG dan TAK-TERHUBUNG. Karena sistemnya mekanik,  perubahan kondisi switch tersebut terjadi karena adanya impact dari benda kerja secara langsung maupun ekstensi-bantunya, sehingga menyebabkan sistem harus dirancang sebaik mungkin agar limit-switch tidak cepat rusak.

Sensor yang lebih baik adalah tipe non-kontak. Proximity-switch dan sensor infra merah adalah sensor non-kontak yang sangat banyak digunakan di dunia industri. Dengan menggunakan sensor tipe non-kontak maka diharapkan usia sensor juga jauh lebih tahan-lama dan akurasi juga akan dapat ditingkatkan.

Berbeda dengan ketiga jenis sensor industrial yang sudah disebutkan di atas, berikut ini adalah rangkaian sensor cahaya menggunakan LDR yang dapat digunakan sebagai sensor pada aplikasi counter barang. Rangkaiannya sederhana, namun hasilnya sangatlah menggembirakan.

telinks_ldr_89s51 Resistansi LDR berubah-ubah sesuai dengan intensitas cahaya yang diterima oleh permukaan sensor. Semakin tinggi intensitas cahaya yang diterima, semakin rendah resistansinya.

Dengan menerapkan rangkaian komparator menggunakan opamp, maka kita dapat mendeteksi perubahan kondisi gelap atau terang dengan batasan dan kepekaan yang kita inginkan.

Rangkaian di samping terbukti sangat efektif untuk membedakan kondisi gelap-terang. Dengan menempatkan sensor pada posisi yang tepat, maka rangkaian akan dapat mendeteksi apakah sensor terhalang benda ataukah tidak. Yang artinya, mikrokontroler AT89S51 akan dapat menghitung jumlah perubahan logika (pulsa) yang terjadi.

Pada gambar di atas ditampilkan screenshot demo program counter barang yang dibuat menggunakan VB.NET 2005 Express Edition. Program berkomunikasi dengan mikrokontroler AT89S51 melalui port serial RS232. Secara kontinyu mikrokontroler akan memonitor kondisi sensor, dan akan menghitung jika terjadi perubahan logika. Data hitungan akan dikirimkan kepada komputer secara langsung maupun menunggu request atau permintaan dari komputer.

Handal. Itulah kata yang cocok untuk rangkaian sensor cahaya menggunakan LDR tersebut, karena secara pengujian dan penerapan rangkaian tersebut terbukti sangat efektif mendeteksi perubahan cahaya sesuai dengan harapan.

Modul rangkaian sensor dapat dipesan secara tersendiri (modul sensor saja) ataupun lengkap dengan sistem mikrokontrolernya, baik mikrokontroler AT89S51/52 atau mikrokontroler AVR ATmega/ATtiny. Untuk pemesanan silakan menghubungi kami di: http://teknikelekrtolinks.com/kontak.htm.

Selamat berkarya!

:)

Modul Interface Kontroler Level Air Tandon Untuk Mikrokontroler

Sistem pengisian tandon air secara otomatis dapat dibuat dengan mengaplikasikan kontroler mekanik yang umum dipakai, yakni switch otomatis dengan bola pelampung. Switch pelampung ini cukup efektif untuk mengontrol level air di dalam tandon air.

Satu kuncinya: Jangan gunakan switch pelampung untuk menggerakkan pompa secara langsung, karena kemampuan kontak switch yang digunakan kurang besar.

Jika digunakan secara langsung untuk menggerakkan pompa air, pasti umurnya tidak akan lama. Jadi, tambahkan unit relay atau kontaktor dengan kemampuan kontak yang besar. Memang jadi lebih mahal total biayanya, karena harga kontaktor 20A lebih mahal daripada switch pelampung itu sendiri.

Untuk menggantikan sistem mekanik tersebut, saya menerapkan sebuah sistem elektronik dengan sensor level air elektronik menggunakan stik (batangan) baja anti-karat. Anda bisa menyimak tulisan tentang perancangan sensor level air ini di link berikut ini:

https://telinks.wordpress.com/2010/04/24/perancangan-sensor-ketinggian-air-tandon/

Dalam tulisan tersebut, Anda dapat melihat rancangan sensor level air tandon dengan 5 buah stik baja anti-karat beserta rangkaian skematik sensornya.

Nah, pada tulisan kali ini, saya akan menyajikan sebuah modul rangkaian antarmuka mikrokontroler untuk sistem pengontrolan level air tandon. Berikut adalah foto modulnya.

telinks_modul_level_air_tandon

Modul ini terdiri dari rangkaian sensor level air dengan 3 buah stik baja anti-karat sebagai sensornya. Satu stik sebagai referensi tegangan dan terhubung dengan GND. Stik kedua sebagai batas level bawah, dan stik ketika sebagai batas level atas.

Rangkaian sensor level air memiliki 2 buah keluaran logika yang menyatakan kondisi sensor level air atas dan bawah (terkena air ataukah tidak)

Rangkaian lain penyusun modul ini adalah rangkaian LED dan RELAY. Rangkaian LED berfungsi sebagai indikator untuk kondisi sensor level atas dan bawah, dan sebuah LED lagi sebagai indikator ekstra. RELAY berfungsi sebagai kontak yang dapat secara langsung digunakan untuk menggerakkan pompa air berukuran kecil. Namun demikian, sebaiknya gunakan relay atau kontaktor yang lebih besar sebagai power driver pompa air.

Modul ini dapat dengan mudah dihubungkan ke sistem minimum mikrokontroler, baik yang berbasis 89S51/52, AVR, PIC, ataupun tipe-tipe yang lain. Modul ini membutuhkan catudaya DC 5V. Semua pin input dan output-nya bekerja pada level tegangan TTL.

Algoritma program kontrol otomatis pengisian air tandon sangatlah sederhana. Jika kedua sensor tidak terkena air, maka berarti tandon kosong, dan kontroler harus mengaktifkan relay. Pompa pun berputar dari tandon akan terisi air.

Dan jika kedua sensor terkena air, maka berarti tandon penuh, dan kontroler harus mematikan relay. Sangat sederhana, bukan?

Berikut adalah contoh program pengontrolan pompa pengisian air tandon berdasarkan pembacaan sensor level air yang diletakkan dalam tandon yang ditulis dalam bahasa Pascal. Kompiler yang digunakan adalah TURBO51, yakni kompiler Pascal untuk mikrokontroler keluarga MCS-51.

telinks_program_level_air_tandon

Bagi Anda yang membutuhkan modul rangkaian antarmuka ini, Anda dapat menghubungi saya melalui SMS ke 083834849975 atau melalui email ke info@teknikelektrolinks.com. Modul dilengkapi dengan contoh program untuk mikrokontroler 89S51 dan AVR dengan kompiler TURBO51, AVR-GCC, dan Arduino.

Selamat berkarya!

:)