Jumat, 02 Maret 2012

Timer Counter pada ATmega8535


  1.  DASAR TEORI

Timer/counter dalam Atmega8535 ada 3 yaitu:
·         Timer/counter 0
·         Timer/counter 1
·         Timer/counter 2    

Interrupt timer berasal dari dua sumber yaitu:
1.      Overflow interrupt, dimana interrupt terjadi jika TCNTn mencapai 255 untuk timer 8 bit dan 65535 untuk timer 16 bit.
2.      Compare match interrupt, dimana interrupt terjadi jika nilai OCR sama dengan TCNTn.

Pada dasarnya Timer hanya menghitung pulsa clock. Frekuensi pulsa clock yang dihitung tersebut bisa sama dengan frekuensi kristal yang digunakan atau dapat diperlambat menggunakan prescaler dengan faktor 8, 64, 256, atau 1024.

Contohnya jika sebuah sistem mikrokontroler menggunakan kristal dengan frekuensi 4 MHz dan timer yang digunakan adalah timer 8 bit, maka maksimum waktu timer yang bisa dihasilkan adalah:
     tMAX = 1/fCLK x (FFh+1)
                = 1/4.000.000 x (255+1)
                = 0,000064 s

Untuk menghasilkan timer yang lebih lama dapat digunakan prescaler, misalnya 1024, maka maksimum waktu timer yang bisa dihasilkan adalah:
     tMAX = 1/fCLK x (FFh+1) x N
                = 1/4.000.000 x (255+1) x 1024
                = 0,065536 s

Untuk menghitung nilai TCNT supaya menghasilkan waktu timer tertentu dipergunakan rumus berikut:
TCNT = (1 + FFh) – (Ttimer x fCLK)/N

Dimana:
TCNT = nilai Timer (Heksadesimal)
fCLK  = Frekuensi clock kristal yang digunakan (Hz)
Ttimer = Waktu timer yang diinginkan (detik)
N = prescaler (1,8,64,256,1024)
1+FFh = nilai maksimum timer adalah FFh dan overflow saat FFh ke 00h


2.      ALAT DAN BAHAN YANG DIGUNAKAN
  1. 1 set Personal Computer/Laptop yang sudah berisi program Code Vision dan Khazama
  2. 1 buah ISP Downloader AVR
  3. 1 buah sistem minimum AVR
  4. 1 buah I/O
  5. 1 buah kabel printer USB


3.      PROSEDUR
A.    Timer
  1. Rangkailah peralatan yang diperlukan seperti dalam Gambar 7.1. Hubungkan soket jumper PORTC pada minimum system dengan soket jumper pada OUTPUT LED.
Gambar 1.1 Blok diagram antarmuka mikrokontroler dengan I/O
  1. Buka program Code Vision AVR
  2. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTC untuk LED serta Timer. Kemudian simpanlah file tersebut.
Gambar 7.3 Setting LED dan Timer
  1. Perhatikan blok program berikut.

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0xD5;
OCR0=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Global enable interrupts
#asm("sei")

  1. Tuliskan script berikut dalam interrupt:

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xD5;
// Place your code here
if (PINC==0)
   {PORTC=0xFF;}
else
   {PORTC=0x00;}
}

  1. Perhatikan dan catat nyala LED.
  2. Lakukan hal serupa dengan Timer1 dan Timer2
  3. Ubah nilai TCNT sehingga menghasilkan timer 1 detik dengan Timer 16 bit(Timer1).

B.     Counter
  1. Rangkailah peralatan yang diperlukan seperti dalam Gambar 7.1. Hubungkan soket jumper  PORTC pada minimum system dengan soket jumper pada OUTPUT LED. Hubungkan 
Gambar 1.1 Blok diagram antarmuka mikrokontroler dengan I/O

  1. Buka program Code Vision AVR
  2. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTC untuk LED serta Timer. Kemudian simpanlah file tersebut.

Gambar 7.3 Setting LED dan Timer
  1. Perhatikan blok program berikut.

// Timer/Counter 0 initialization
// Clock source: T0 pin Falling Edge
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x06;
TCNT0=0xFB;
OCR0=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Global enable interrupts
#asm("sei")

  1. Tuliskan script berikut dalam interrupt:

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xFB;
// Place your code here
if (PINC==0)
   {PORTC=0xFF;}
else
   {PORTC=0x00;}
}

  1. Sambungkan PIN B.0 ke push button
  2. Lalu tekan push button pada pin B.0
  3. Hitung berapa kali push button ditekan sampai LED menyala/mati. Apakah sama dengan nilai TCNT yang dimasukkan (“TCNT0=0xFB;”).
  4. Perhatikan dan catat nyala LED.
  5. Lakukan hal serupa dengan Timer1 dan Timer2
  6. Ubah nilai TCNT sehingga menghasilkan counter sesuai nilai masukan yang diinginkan.

      4.  DATA HASIL PERCOBAAN

Timer : Tampilan LED dengan nilai 1 detik maka LED nyala perlahan dengan menggunakan Timer 1 (16 bit).

Counter : Inputan push button pada port B. perbedaannya adalah clock source “ to pin falling edge” dan timer value FB (4 kali tekan). Hasilnya ketika push button ditekan 4 kali maka nyala led pada akan menyala dan jika ditekan lagi 4 kali maka akan mati.


5. PEMBAHASAN
TIMER:
Untuk TIMER dapat kita peroleh untuk delay waktu 1 detik  dengan Timer 1 (16 bit) yaitu 65535.
Mempermudah kita untuk memprogram maka dapat diperoleh rumus sebagai berikut:
TCNT = (1 + FFh) – (Ttimer x fCLK)/N
           = (1 + 65535) - (1 x 4.000.000)/256
           = 65535 – 4.000.000/256
           = 65535 – 15625 = 49910 dengan nilai Hex = C2F6
Program
// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer 1 value
TCNT1H=0x0C;
TCNT1L=0xD5;
// Place your code here
    if (PINC==0)
   {PORTC=0xFF;}
else
   {PORTC=0x00;}
}

COUNTER:
      Untuk menentukan nilai dari counter yaitu kita harus mengganti nilai dari TCNT0. Perhitungannya yaitu nilai maksimal dari counter yaitu FF, sehingga misalkan kita menginginkan nilai dari counter kita 4 yaitu dengan mengurangi nilai maksimal dengan nilai counter yang kita inginkan:
                                                           FF – 4 = FB

Jadi nilai yang harus kita masukkan pada TCNT0 adalah FB.

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xFB;
// Place your code here
if (PINC==0)
   {PORTC=0xFF;}
else
   {PORTC=0x00;}
}




Sabtu, 17 Desember 2011

Pengenalan Codevision AVR


A.    Pengenalan Codevision AVR.
            CodeVision AVR Penggunaan mikrokontroler sekarang ini telah umum. Mulai dari penggunaan untuk kontrol sederhana sampai kontrol yang cukup kompleks, mikrokontroler dapat berfungsi jika telah diisi sebuah program, pengisian program ini dapat dilakukan menggunakan compiler yang selanjutnya didownload ke dalam mikrokontroler menggunakan downloader.  Salah satu compiler program yang umum digunakan sekarang ini adalah CodeVision AVR yang menggunakan bahasa pemrograman C.
            CodeVision AVR mempunyai suatu keunggulan dari compiler lain, yaitu adanya codewizard, fasilitas ini memudahkan kita dalam inisialisasi mikrokontroler yang akan kita gunakan, codevision telah menyediakan konfigurasi yang bisa diatur pada masing-masing chip mikrokontroler yang akan kita gunakan, sehingga kita tidak perlu melihat datasheet untuk sekedar mengonfigurasi mikrokontroler. Berikut ini langkah-langkah menggunakan codevision.
B.     Membuat Project dengan CodeVisionAVR. 
            Jalankan aplikasi CodeVisionAVR dengan cara melakukan klik ganda pada shortcut  ikon CodeVisionAVR yang ada pada Desktop atau klik START MENU cari file exe CodeVisionAVR.
 Gambar 1  Ikon CodeVisionAVR pada Desktop

  
            Sebuah Splash Screen akan muncul seperti ditunjukkan oleh Gambar 2. Informasi tentang versi yang dipakai dan keterangan evaluation akan terlihat.

 Gambar 2. Tampilan Splash Screen


            Beberapa detik kemudian aplikasi CodeVisionAVR akan muncul seperti yang ditunjukkan oleh Gambar 3.
  
  Gambar 3. IDE CodeVisionAVR


            Untuk memulai membuat  project  baru, pada menubar, pilih File → New, seperti yang ditunjukkan oleh Gambar 4a selain itu kita juga dapat membuka dengan cara klik icon seperti ditunjukkan pada gambar 4b yang berada pada Toolbar.

 Gambar 4a. Membuat file baru

 Gambar 4b. Icon untuk membuat file baru

            Anda harus membuat sebuah project sebagai induk desain dengan memilih Project, lalu klik tombol OK seperti pada Gambar 5.

 Gambar 5. Membuat project baru

            Berikutnya Anda akan ditanya apakah akan menggunakan CodeWizardAVR. Tentu saja lebih menyenangkan bila Anda memilih jawaban “ya” dengan cara menekan tombol Yes seperti pada Gambar 6.

Gambar 6. Memilih untuk menggunakan CodeWizardAVR

            Tampilan CodeWizardAVR yang sederhana namun lengkap ditunjukkan oleh Gambar 7. Pilih Chip dengan IC yang Anda gunakan. Sebagai contoh Anda memilih Chip ATmega8535. Tab-tab pada CodeWizardAVR menunjukkan fasilitas yang dimiliki oleh chip yang Anda pilih. Cocokkan pula frekuensi kristal yang Anda gunakan pada bagian Clock. Pengisian frekuensi clock digunakan  oleh software untuk menghitung rutin-rutin seperti delay agar diperoleh perhitungan yang cukup akurat.

Gambar 7. CodeWizardAVR pada tab Chip

            Selanjutnya merupakan inisialisasi dari PORT YANG DITUNJUKKAN OLEH Gambar 8. Terdapat 4 PORT, yaitu PORT A, PORT B, PORT C, dan PORT D. kita bisa menginisialisasi port-port ini sebagai INPUT ataupun sebagai OUTPUT. Selain itu kita dapat memilih aktif HIGH (1) atau aktif LOW (0) untuk OUTPUT ataupun INPUT.

Gambar 8. Seting Port

            Untuk selanjutnya yaitu merupakan inisialisasi LCD (Liquid Crystal Display). LCD alphanumeric yang dihubungkan dengan Port C haruslah mempunyai pengkawatan seperti yang ditunjukkan oleh Gambar 9. Pada tab LCD, pilihlah Port C.

Gambar 9. Seting LCD pada Port C


            Selanjutnya yaitu inisialisasi pada USART (Komunikasi Serial). Pertama pilih/centang pada bagian “Receiver “ dan ” Transmiter”, apabila menginginkan interupsi pada USART maka beri centang pula pada “Rx_Interrupt” dan “Tx_Interrupt”. Untuk Baud Rate pilih “9600”. Dan untuk Communication Parameters pilih “8 Data, 1 Stop, No Pariti. Ini merupakan seting sederhana dari USART. Seperti tampak pada gambar 10.


Gambar 10. Seting USART (Komunikasi Serial)

           
            Selanjutnya yaitu seting ADC (Analog to Digital Converter). Pertama centang pada bagian “ADC Enabled" dan untuk "Use 8 bits” apa bila kita centang berarti kita menggunakan ADC 8 bit, apabila tidak kita centang maka kita menggunakan 10 bit. Kemudian kita pilih Volt Ref, yaitu tegangan referensi dari ADC kita. Disini terdapat 3 pilihan yaitu dari PIN AREF, PIN AVCC, dan Int., Cap. On AREF. Untuk clock pilih 86.400 KHz.

Gambar 11. Seting ADC (Analog to Digital Converter)

            Setelah setting yang kita inginkan dari mikrokontroler selesai, maka seting CodeWizardAVR siap disimpan dalam file. Pada menu CodeWizardAVR, pilih File → Generate, Save and Exit, seperti yang ditunjukkan oleh Gambar 12.

Gambar 12. Menyimpan seting

            Agar file yang dihasilkan tidak berantakan, buatlah sebuah folder baru, untuk nama terserah dari anda.
            Kemudian masuk kedalam folder tersebut untuk menyimpan file-file yang dihasilkan oleh CodeWizardAVR. Yang pertama Anda diminta untuk memberikan nama file C yang dihasilkan. Misalnya beri nama “coba2”, lalu klik tombol Save. Lebih jelas pada Gambar 14. File tersebut nantinya akan mempunyai akhiran .C.

Gambar 14. Menyimpan file pertama


            Yang kedua Anda diminta untuk memberikan nama file project yang dihasilkan. Misalnya beri nama “coba2”, lalu klik tombol Save.  Lebih jelas pada Gambar 15. File tersebut nantinya akan mempunyai akhiran .prj.

Gambar 15. Menyimpan file kedua


            Yang terakhir Anda diminta untuk memberikan nama file project CodeWizard yang dihasilkan. Misalnya beri nama “coba”, lalu klik tombol Save. Lebih jelas pada Gambar 16. File tersebut nantinya akan mempunyai akhiran .cwp.

 Gambar 16. Menyimpan file ketiga 

            Setelah ketiga file disimpan maka akan muncul lembar kerja kita. Pada bagian atas merupakan nama dari projek kita. Selanjut pada bagian bawah dari nama projek yaitu merupakan program bahasa C yang merupakan program yang telah kita setting pada langkah awal (pada form inisialisasi). Jadi dari program “#include <mega8535.h> sampai // LCD module initialization lcd_init(16);” merupakan program yang telah kita setting pada langkah awal (pada form inisialisasi) yang ditunjukkan oleh Gambar 17-18.

Gambar 17. Lembar Kerja Dari Codevision AVR


            Sekarang Anda coba untuk menyisipkan instruksi utama. Instruksi ini ditambahkan pada badan program file coba.c, dibawah instruksi “while” seperti yang ditunjukkan oleh Gambar 18.

Gambar 18. Menambahkan inti program


            Setelah program utama telah ditambahkan, kemudian pilih menu Project → Compile untuk melakukan kompilasi seperti yang ditunjukkan oleh Gambar 19a, atau dengan klik icon seperti pada Gambar 19b pada menu Toolbar. Lalu kotak dialog seperti ditunjukkan Gambar 20 akan muncul. Klik tombol OK.

Gambar 19a. Melakukan kompilasi


Gambar 19b. Icon untuk melakukan kompilasi


            Setelah kita kompail dan tidak ada informasi error (apabila terdapat informasi warning program kita masih dapat dijalankan/tidak apa-apa) pada program kita, selanjutnya klik tombol OK yang berada pada kanan bawah.

Gambar 20. Informasi hasil kompilasi


            Setelah itu kita buka file tempat dimana kita menyimpan projek kita tadi. Kemudian buka file folder bernama ‘Exe’ seperti ditunjukkan pada Gambar 21.

Gambar 21. Folder ‘Exe’ tempat projek kita


            Setelah itu akan muncul file ber-extensi ‘hex’. File inilah yang nantinya akan kita downloadkan ke dalam mikrokontroler kita.

Gambar 22. File Hex





SELAMAT MENCOBA!!!!!!

Monitoring Tandon Air



            Pada postingan kali ini saya ingin membahas mengenai alat sederhana untuk memonitoring tandon air. Komponen utama dari alat ini adalah sensor ultrasonik untuk mengukur ketinggian dari airnya.untuk lebih jelasnya langsung saja kita pelajari pembahasan dibawah!!!

              Ini saya kasih sedikit penjelasan tentang komponen yang digunakan!!
1.      Sensor Ultrasonik SRF 04 
                                                 Gambar 1. Senror Ultrasonok SRF 04

Ultrasonik adalah suara atau getaran dengan frekwensi yang terlalu tinggi untuk bisa didengar oleh telinga manusia, yaitu kira-kira di atas 20 KHz. Hanya beberapa hewan, seperti lumba-lumba menggunakannya untuk komunikasi, sedangkan kelelawar menggunakan gelombang ultrasonik untuk navigasi. Dalam hal ini, gelombang ultrasonik merupakan gelombang ultra (di atas) frekuensi gelombang suara (sonik).
Gelombang ultrasonik dapat merambat dalam medium padat, cair dan gas. Reflektivitas dari gelombang ultrasonik ini di permukaan cairan hampir sama dengan permukaan padat, tapi pada tekstil, dan busa, maka jenis gelombang ini akan diserap.

2.      RS 232
Jika peralatan yang digunakan menggunakan logika TTL, maka sinyal port serial harus dikonversikan terlebih dahulu ke pulsa TTL sebelum digunakan begitu juga sebaliknya. Converter yang paling mudah digunakan ialah RS232. Di dalam IC ini terdapat charge pump yang akan membangkitkan tegangan +10 Volt dan -10 Volt dari sumber +5 Volt tunggal. Dalam IC DIP (Dual Inline Package) 16 pin ini terdapat 2 buah transmitter dan 2 buah receiver.


Gambar 2. RS232 Dalam Rangkaian

3.      USB to Serial
IC Serial RS 232 yang berada pada kabel data digunakan sebagai antarmuka dari PC ke perangkat luar atau sebaliknya. Tegangan pada RS 232 berada dengan level tegangan digital. Tegangan yang digunakan oleh RS 232 atau TC 232 tersebut adalah +3 V s/d +25V untuk logika “0” dan -3 s/d -25 untuk level logika “1”. Tegangan yang cukup tinggi menyebabkan data dapat ditransmisikan cukup jauh. Ada dua macam sistem transmisi dalam komunikasi serial, yaitu asinkron dan sinkron, pada komunikasi data serial sinkron, clock dikirimkan bersama-sama dengan data serial, sedangkan komunikasi data asinkron clock tidak dikirimkan bersama data serial, melainkan dibangkitkan secara sendiri-sendiri baik pada sisi pengirim (transmitter) maupun pada sisi penerima (receiver).
Konsep dasar pengiriman seri adalah pada saat data parallel internal dimasukkan ke pengubah parallel ke seri. Kanal seri mengirimkan setiap karakter per elemen, sehingga hanya diperlukan 2 penghantar, yaitu kirim data (TXD), dan terima data (RXD). Adapun piranti tambahan yang dibutuhkan adalah IC MAX232. 
                                              Gambar 3. USB To Serial



A.    PERANCANGAN
1.      DIAGRAM BLOK

Gambar 4. Diagram Blok Rangkaian

2.      PRINSIP KERJA
a.       Input
Input yang akan dideteksi pada rangkaian ini adalah jarak dari sensor terhadap permukaan air. Jarak dideteksi menggunakan sensor ultrasonik kemudian masuk ke rangkaian minimum sistem mikroprosesor untuk dilakukan proses pehitungan.
  
b.      Mikrokontroler ATmega16
Mikrokontroler digunakan untuk melakukan perhitungan dari sensor ultrasonik agar dari bentuk sinyal pulsa menjadi data nilai jarak. Jadi mikro mengirimkan perintah ke sensor, setelah sensor mendapat perintah dari mikro maka sensor mengirimkan gelombang suara (dari transmiter). Selanjutnya gelombang suara tersebut akan memantul mengenai permukaan dari air, kemudian akan diterima oleh receiver. Dari data yang diterima receiver ini nanti akan di konversi oleh mikro ke nilai jarak. Nilai jarak ini nanti dikirimkan ke program borland delphi ke komputer melalui rangkaian MAX232 serta USB to serial.

c.       MAX 232
Pada rangkaian MAX 232 untuk mengkonversi sinyal dari port serial ke pulsa TTL.

d.      USB to Serial
Dari MAX 232 kemudian masuk ke converter USB to serial agar data mudah dibaca menggunakan laptop atau PC
e.       PC
PC digunakan untuk menampilkan berapakah volume dari tandon air setelah dilakukan perhitungan terlebih dahulu, selain itu program Delphi 7 digunakan untuk menampilkan nilaianya.


3.      GAMBAR SKEMA RANGKAIAN

Gambar 5. Skema Rangkaian


4.      LAY OUT PCB


            Gambar 6a.PCB MAX 232          Gambar 6b. Minimum Sistem ATmega16



       B.     HASIL
1.      Foto Alat

                                                                                          Gambar 7. Hardware Alat

2.      Foto Tampilan Delphi


                                           Gambar 8. Tampilan Awal Program Delphi

  
                                                                           Gambar 9. Tampilan Utama Program Delphi


Langkah Kerja:
a.       Buka file simpanan program (.dpr atau .exe)
b.      Jika menjalankan dari format .dpr maka RUN program tersebut, tetapi bila yang dijalankan format .exe maka tinggal klik 2x program akan jalan.
c.       Klik tombol “SETTING”, atur “PORT” port berapa yang digunakan dan “BOUDRATE” yang digunakan.
d.      Kemudian isikan berapa nilai dari luas alas dari tandon yang akan kita monitoring ke kolom “Luas Alas” dan juga isikan nilai dari jarak pemasangan sensor dari dasar tandon ke kolom “Tinggi Sensor”.
e.       Klik tombol START, maka program “Monitoring Tandon Air” siap untuk digunakan. Saat program start dijalankan maka data dari mikrokontroler akan diterima oleh program delphi, selanjutnya secara otomatis akan menghitung berapakah volume dari tandon tersebut serta ditampilkan dalam grafik batang.
f.       Tombol Stop digunakan untuk menghentikan sementara program.
g.      Tombol Exit digunakan untuk keluar dari program.


Yang iningi download listing programnya dan program exe-nya download disini


 
Design by Wordpress Theme | Bloggerized by Free Blogger Templates | coupon codes