Selasa, 17 Desember 2013

TIMER DAN COUNTER



TUJUAN :

1.  Mampu membuat program yang mengunakan fitur timer sebagai pewaktu.

2.  Mampu membuat program yang menggunakan fitur timer sebagai penghitung.
3.  Mampu mempergunakan fitur timer pada mikrokontroler untuk membuat jam digital sederhana.


PERALATAN :

1.  Komputer

2.  Arduino Uno

3.  Kabel USB tipe B

4.  Project board

5.  Kabel jumper

6.  LED

7.  Resistor 330 Ohm

8.  Switch pushbutton

9.  LCD

10. Potensiometer




PERCOBAAN :

6.1 Penggunaan Timer Overflow Untuk LED Blinking

Pada percobaan kali ini akan dibuat program untuk membuat led berkedip per 500 milliseconds. Pada dasarnya LED akan toggle (berubah kondisinya) setiap terjadi interupsi timer overflow. Nilai register timer di-set sedemikian rupa sehingga menghasilkan waktu overflow per 500 milliseconds.
 

Prosedur :

1.  Buatlah rangkaian seperti pada Gambar 6.1


2.  Tuliskan sintaks program berikut ini, kemudian lakukan kompilasi dan upload program ke sistem minimum Arduino.
3.  Buka Serial Monitor pada Arduino IDE, pastikan baudrate pada Serial Monitor adalah 9600. Kemudian amati teks yang ditampilkan pada Serial Monitor. Amati juga kondisi nyala dan mati LED pada pin 12. 
 
Tugas dan Pertanyaan :


1.  Jika dilakukan perhitungan konfigurasi register pada sintaks 6.1, timer 1 akan overflow setiap berapa milliseconds ?
2.  Jelaskan perbedaan penggunaan delay dan timer overflow !

Fungsi Delay adalah menghentikan program untuk sesaat sesuai dengan yang dikehendaki satuannya milisecond (ms). Sedangkan Timer Overflow adalah seperangkat pencacah biner yang terhubung langsung ke saluran mikrokontroler. Jika signal detak yang diberikan sudah melebihi kapasitas timer, maka timer akan memberikan signal Oveflow atau limpahan. Terjadinya overflow ini akan dicatat dalam suatu register tertentu.


3.  Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 6.1 !
6.2 Jam Digital Menggunakan Timer

Pada percobaan kali ini akan dibuat program sederhana yang berfungsi sebagai jam
digital  dengan memanfaatkan fitur timer  mikrokontroler. Timer akan konfigurasi

sehingga terjadi overflow setiap 1 detik. Tiap timer terjadi overflow, variabel detik, menit dan jam akan di-update nilainya. Nilai variabel tersebut akan ditampilkan pada LCD.
Prosedur: 

1.  Buatlah rangkaian seperti Gambar 6.2.
2.  Tuliskan sintaks program berikut ini, lakukan kompilasi dan upload program.

#include<LiquidCrystal.h> LiquidCrystal lcd(2,3,4,5,6,7);

unsigned  int  jam, menit, detik;
boolean  led  =  0;

ISR(TIMER1_OVF_vect) { TCNT1H=0xC2; TCNT1L=0xF7;
detik++;
if(detik>=60) {
detik  =  0;
menit++;
if(menit>=60) {
menit  =  0; jam++; if(jam>=24) {
jam  =  0;
}
}
}
}

void  initTimer1() { TCCR1A=0x00; TCCR1B=0x05; TCNT1H=0xC2; TCNT1L=0xF7; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; TIMSK1=0x01; sei();
}

void  setup()  { lcd.begin(16,2); lcd.clear(); initTimer1();
}

void  loop()  { lcd.clear(); lcd.setCursor(0,0); lcd.print("Jam Digital"); lcd.setCursor(0,1); lcd.print(jam,DEC); lcd.print(":"); lcd.print(menit,DEC); lcd.print(":"); lcd.print(detik,DEC); delay(500);
}

 


Tugas dan Pertanyaan :

1.      Ubahlah sintaks program pada Percobaan 6.2 sehingga jam menampilkan waktu saat ini !
2.  Jika  dilakukan  perhitungan  dengan  konfigurasi  register  pada  sintaks  program

Percobaan 6.2, timer 1 akan overflow setiap berapa milliseconds ?
akan overfllow setiap 60000 ms.

3.  Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 6.2 !






 
6.3 Counter Mode Falling Edge

Pada percobaan kali ini akan dibuat program yang berfungsi untuk menghitung
jumlah penekanan switch pada input counter. Konfigurasi counter menggunakan mode falling edge.

Prosedur :

1.  Buatlah rangkaian seperti pada Gambar 6.3.




2.  Tuliskan sintaks program berikut ini, kemudian lakukan kompilasi dan upload

program ke sistem minimum Arduino.

void  setup()  { Serial.begin(9600); TCCR1A=0x00; TCCR1B=0x06; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
}

void  loop()  {
Serial.print("Nilai TCNT1  =  ");
Serial.println(TCNT1,DEC);
delay(100);
}



3.  Buka Serial Monitor pada Arduino IDE, kemudian tekan switch pushbutton dan amati nilai TCNT1 yang ditampilkan pada Serial Monitor. 

Tugas dan Pertanyaan :

1.  Kapankah nilai counter (TCNT1) akan berubah ? Saat switch ditekan atau dilepas ?

Jelaskan! 
Nilai counter akan berubah ketika switch dilepas, dikarenakan perubahan nilai dari 1 ke 0 atau dari HIGH ke LOW.

2. Berapakah nilai maksimal counter jika input counter menggunakan pin T1 (Timer1)? Jelaskan kenapa! 
Proses interupsi terjadi ketika switch ditekan maupun saat dilepas..  Maka terjadi perubahan baik dari kondisi falling atau pun dari kondisi rising.

3. Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 6.3 !



6.4 Counter Mode Rising Edge

Pada  percobaan  kali  ini  akan  dibuat  program  yang  fungsinya  sama  dengan Percobaan 6.3. Namun pada percobaan kali ini konfigurasi counter menggunakan mode rising edge. 
Prosedur :

1.  Gantilah sintaks program pada Percobaan 6.5 dengan sintaks program berikut ini, kemudian lakukan kompilasi dan upload program ke sistem minimum Arduino.


void  setup()  { Serial.begin(9600); TCCR1A=0x00; TCCR1B=0x07; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
}

void  loop()  {
Serial.print("Nilai TCNT1  =  ");
Serial.println(TCNT1,DEC);
delay(100);
}



2.  Buka Serial Monitor pada Arduino IDE, kemudian tekan switch pushbutton dan amati nilai TCNT1 yang ditampilkan pada Serial Monitor. 
Tugas dan Pertanyaan :

1.      Kapankah nilai counter akan berubah ? Saat switch ditekan atau dilepas ? Jelaskan ! 
Nilai counter akan berubah pada saat switch di lepas.

2.      Jelaskan perbedaan penggunaan counter mode falling edge dan mode rising edge ! 
Mode falling edge adalah perubahan terjadi ketika switch berubah pada saat kondisi 1 ke 0. Rising adalah perubahan yang terjadi pada saat posisi switch dalam saat kondisi 0 ke 1.

Tidak ada komentar:

Posting Komentar