Advertisement

Osilator, Pemberi Detak Mikrokontroler

0 9.780

dsc_0309Kali ini embeddednesia akan membahas tentang Osilator. Pada tulisan  sebelumnya mungkin anda sudah bisa membuat LED berkedip. Selamat!! Sekarang saatnya membuat LED tersebut berkedip lebih cepat.

Yang sampai saat ini anda lakukan adalah memasukan kode – kode mesin kedalam mikrokontroler lalu menjalankan kode – kode program tersebut, tapi tahukah anda bagaimana program tersebut berjalan? Dan seberapa cepat?

Semua mikrokontroler pada prinsipnya memerlukan sumber clock. Clock tak ubahnya seperti “bit musik” atau detak jantung yang mikrokontroler gunakan untuk mengeksekusi kode dalam satu langkah. Tanpa clock, mikrokontroler tidak akan bisa menjalankan kode program  dan dengan clock yang buruk ( clock yang tidak tetap) maka program akan dijalankan pada laju yang tidak dapat ditentukan. Anda harus memiliki clock yang sejenis dan juga anda memerlukan clock yang akurat.

Ada banyak cara untuk menghasilkan “detak” untuk mikrokontroler. Mikrokontroler AVR memberikan banyak pilihan. Disini akan saya jelaskan bermacam – macam jenis dari pembangkit detak tersebut

  1. External RC- ini umumnya digunakan untuk penerapan yang sangat murah meriah. Menggunakan resistor dan kapasitor. Laju pengisian dan pengosongam bisa digunakan sebagai masukan clock. Saya tidak pernah menggunakan jenis clock seperti ini untuk mikrokontroler.
  2. Internal RC – ini adalah osilator yang sangat keren. Ditemukan pada mikrokontroler jenis baru – seperti halnya AVR. Anda tinggal meminta mikrokontroler membangkitkan clock-nya sendiri. Maka IC ini akan menghasilkan sendiri clocknya. Sayang ini tidak begitu akurat
  3. External Oscillator – merupakan standar defacto. Dengan menggunakan crystal quartz (atau sering disebut “kristal” saja)  pada dua pin oscilator maka program akan dieksekusi dengan frekuensi kristal tersebut.
  4. External Resonator. Sebuah resonator lebih murah ketimbang osilator namun dengan toleransi yang lebih buruk
  5. External Clock – selain osilator, bisa digunakan powered clock driver.  Lebih mudah dilakukan jika anda memiliki banyak perangkat yang perlu dijalankan dengan frekuensi yang sama. Saya tidak pernah menggunakan opsi ini.

Saya menggunakan opsi 2 dan 3 dari 5 pilihan tersebut. Maka saya akan jelaskan saja opsi yang saya pilih tersebut

Internal RC

Atmel sangatlah cerdas. Mikrokontroler ATMEGA8- sebagai contoh memiliki prekonfigurasi 1MHz osilator internal. Jadi ATMEGA8 bisa beroperasi pada 1 instruksi per clock per cycle. Ini berarti setiap osilator melalui satu cycle maka satu instruksi dilaksanakan ( ini hanya anggapan kasar saja – pada kenyataannya ada lebih banyak instruksi yang bisa dilaksankan dalam satu cycle). Anda bisa gunakan mikrokontroler AVR jenis apa saja, namun intinya adalah sama. Saya hanya mengambil contoh pada mikrokontroler ATMEGA8, (mungkin mikrokontroler AVR varian yang lain memiliki osilator internal prekonfigurasi yang sama, silahkan cek datasheet lebih lanjut) yang menjalankan kodenya pada 1MHZ atau 1MIPS (million instructions per second). Ya benar, 1 juta instruksi tiap detik. Itu nilai yang begitu mengagumkan.

Lalu apa masalah dari oscillator internal ? Osilator internal memiliki toleransi ±5% dan memiliki maksimal kecepatan 8MHz. Toleransi ± 5% berarti mikrokontroler ATMEGA8 anda mungkin akan bekerja secara aktual pada 1.000.000 * 1,05 = 1.050.000 IPS ketika ATMEGA8 yang lain berjalan dengan 1.000.000 * 0,95 =950.000 IPS. Mungkin ini kelihatannya tidak begitu berbeda, namun dalam dunia digital perbedaan ini sangat besar. Selain itu ATMEGA8  memiliki kecepatan maksimal 20Mhz (sedangkan osilator internal berjalan maksimal 8Mhz) jadi jika ada ingin memacu mikrokontroler anda pada kecepatan maksimal. Gunakan osilator eksternal J

Osilator Eksternal.

Ini adalah jenis yang umum digunakan sebagai sumber clock

 image001

Osilator kristal quartz hadir tersedia dalam berbagai bentuk dan frekuensi. Beberapa frekuensi yang umum adalah 20 MHz, 16 MHz, 10 MHz, 4 MHz. Kemudian terdapat sejumlah frekuensi seperti 14,7456 MHz, 9,216 MHz, 32,768kHz yang tersedia karena frekuensi tersebut adalah frekuensi kelipatan kecepatan yang dibutuhkan untuk komunikasi serial dan untuk pewaktu.

Didalam metal housing tersebut terdapat crystal quartz yang kecil yang bergetar dengan frekuensi tertentu. Jika osilator internal memiliki toleransi ±5% maka pada sisi lain kristal biasanya memiliki toleransi ± 20 ppm. Jadi kristal 16 MHz mungkin memiliki frekuensi aktual 16,000,020 MHz dan yang lainnya mungkin memiliki frekuensi 15,999,980 Mhz. Ini sama dengan ±0,00000125%. Jadi kristal 4 juta kali lebih akurat ketimbang osilator internal

Catatan teknis :

Saya meminta maaf jika mengisi otak anda sekumpulan hal teknis yang detil. Namun ini sangatlah penting. Perangkat berbentuk metal perak pada gambar diatas  adalah crystal  dan secara teknis bukanlah oscillator. Crystal memiliki harga yang murah sedangkan oscillator sebenarnya berharga mahal (sekitar $2- $4). Lalu apa perbedaanya? Sebuah oscillator menggunakan daya dan menghasilkan frekuensi pulsa sebenarnya. Pulsa ini bisa digunakan untuk men-drive sejumlah peripheral. Sedangkan crystal adalah murni komponen pasif yang membutuhkan driver eksternal untuk menjadi sebuah oscillator. Untungnya 99% dari semua mikrokontroler memiliki rangkaian built in sehingga hanya dengan men-attach crystal yang murah pada dua pin masukan osc, maka driver internal pada mikrokontroler akan mendrive crystal sehingga menghasilkan sebuah oscillator dan mikrokontroler memiliki sumber clock

Beberapa kekurangan dari kristal

  1. Kristal lebih mahal ketimbang resonator.
  2. Tidak bisa dibuat sekecil resonator.
  3. Kristal membutuhkan “load capacitors”. Load capacitors memulai kristal berosilasi, Tanpa load capacitors, kristal anda mungkin berfungsi sekarang, tetapi mungkin nanti tidak.

Pada tulisan berikutnya akan dibahas mengenai pengaturan fuse bit. Apa itu fuse bit? Tunggu pada tulisan saya berikutnya 😉

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.

%d blogger menyukai ini: