Kamis, 28 November 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                                : 1 set
2.      Arduino Uno                           : 1 pcs
3.      Kabel USB tipe B                   : 1 pcs
4.      Project Board                          : 1 pcs
5.      Kabel Jumper                          : 1 pcs
6.      LED                                        : 1 pcs
7.      Resistor 330 Ohm                   : 1 pcs
8.      Switch pushbutton                  : 1 pcs
9.      LCD                                        : 1 pcs
10.  Potensiometer                         : 1pcs
PERCOBAAN:
6.1 Penggunaan Times Overflow untuk LED Blinking
            Pada percobaan kali ini akan dibuat program untuk membuat led berkedip per 500 mS. 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 mS.
Prosedur:
1.      Buatlah rangkaian seperti pada gambar 6.1.

2.      Tuliskan sintaks program berikut ini, kemjudian lakukan kompilasi dan upload program ke sistem minimum Arduino.
boolean dataLed = 0;
unsigned int overflowCount = 0;
void setup() {
Serial.begin(9600);
pinMode(12, OUTPUT);
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 34286;
TCCR1B |= (1 << CS12); //256 prescaler
TIMSK1 |= (1 << TOIE1);
sei();
}
ISR(TIMER1_OVF_vect) {
TCNT1 = 34286;
if(dataLed == 0) {
dataLed = 1;
}
else{
dataLed = 0;
}
digitalWrite(13, dataLed);
overflowCount++;
}
void loop() {
Serial.print("Overflow count = ");
Serial.println(overflowCount,DEC);
delay(100);
}
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.
Untuk hasil nya dapat anda lihat di SINI

6.2 Jam Digital Menggunakan Timer
            Pada percobaan kali ini akan dibuat program sederhana yang berfungsi sebagai jam digital dengan memanfaatkan fitur timer mikrokontroller. Timer akan dikonfigurasi 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);
}

Hasil nya dapat anda lihat DISINI

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(500);
}
3.      Buka serial monitor pada Arduino IDE, kemudian tekan switch pushbutton dan amati nilai TCNT1 yang ditampilkan pada serial monitor.

Hasil nya dapat anda lihat DISINI

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(500);
}
2.      Buka serial monitor pada Arduino IDE, kemudian tekan switch pushbutton dan amati nilai TCNT1 yang ditampilkan pada serial monitor.
Hasil nya dapat anda lihat DISINI

0 komentar:

Posting Komentar

Twitter Delicious Facebook Digg Stumbleupon Favorites More