SLEEP MODE DAN WATCHDOG TIMER

on Friday 20 December 2013

PRAKTIKUM 9
SLEEP MODE DAN WATCHDOG TIMER

TUJUAN :
1. Memahami penggunaan mode sleep pada mikrokontroler.
2. Memahami penggunaan watchdog timer pada program.

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

PERCOBAAN :
9.1 Sleep Mode Selama 4 Detik dan Wake Up Saat Terjadi Timer Overflow
Pada percobaan kali ini akan dibuat program untuk mengakses mode sleep pada mikrokontroler. Mode sleep akan terjadi selama 4 detik, kemudian mikrokontroler akan aktif kembali (wake up). Pada saat wake up, mikrokontroler akan melakukan perubahan terhadap kondisi LED yang terhubung pada pin 12. Sehingga jika program dijalankan, seakan-akan LED akan berkedip dengan selang waktu 4 detik. Namun, sebenarnya selama 4 detik tersebut mikrokontroler sedang dalam sleep mode (tidak melakukan apa-apa).

Prosedur :
1. Rangkailah rangkaian pada Gambar 9.1 berikut ini.
2. Tuliskan sintaks program berikut ini pada Arduino IDE, kompilasi dan upload program.

#include <avr/sleep.h>
#include <avr/power.h>
#define LED_PIN (13)
volatile int f_timer=0;
kemudian lakukan
ISR(TIMER1_OVF_vect) {
if(f_timer == 0) {
f_timer = 1;
}
}
void enterSleep (void) {
set_sleep_mode(SLEEP_MODE_IDLE); sleep_enable();
power_adc_disable(); power_spi_disable();
power_timer0_disable(); power_timer2_disable();
power_twi_disable(); sleep_mode();
sleep_disable(); power_all_enable();
}
void setup() {
pinMode(LED_PIN, OUTPUT);
TCCR1A = 0x00; TCNT1=0x0000;
TCCR1B = 0x05; TIMSK1=0x01;
}
void loop() {
if(f_timer==1) {
f_timer = 0;
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
enterSleep();
}
}

Tugas dan Pertanyaan :
1. Amati hasil Percobaan 9.1, buatlah kesimpulan !
Dari hasil simulasi proteus ketika rangkaian di-run LED akan menyala sekitar 4 atau 7 detik kemudian LED mati selama kurang lebih 6 atau 7 detik, LED yang mati tersebut akan melakukan sleepmode dan kembali menyala saat terjadi timer overflow.
2. Apakah manfaat penggunaan sleep mode pada mikrokontroler ? Jelaskan !
Manfaat penggunaan SLEEPMODE adalah menghemat daya. Saat terjadi sleep mode, beberapa fungsi yang ada pada mikrokontroller yang tidak digunakan akan dimatikan (non-active). Sehingga daya yang terpakai cuma sedikit.
LED menyala selama lebih kurang 4 detik


LED mati selama lebih kurang 6 detik

9.2 Sleep Mode Selama 8 Detik dan Wake Up Saat Watchdog Timer Aktif
Pada percobaan kali ini akan dibuat program untuk mengakses watchdog timer pada mikrokontroler. Watchdog timer akan digunakan untuk mengaktifkan kembali mikrokontroler dari mode sleep. Watchdog timer akan terjadi tiap 8 detik.

Prosedur :
1. Gantilah sintaks program pada Percoban 9.1 menjadi seperti berikut ini, lakukan kompilasi dan upload program ke mikrokontroler.
#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>
#define LED_PIN (13)
volatile int f_wdt=1;
ISR(WDT_vect) {
if(f_wdt == 0) { f_wdt=1; }
else { Serial.println("WDT Overrun!!!"); }
}
void enterSleep(void) {
set_sleep_mode(SLEEP_MODE_PWR_SAVE);
sleep_enable(); sleep_mode();
sleep_disable(); power_all_enable();
}
void setup() {
Serial.begin(9600);
Serial.println("Initialising...");
delay(100);
pinMode(LED_PIN,OUTPUT);
MCUSR &= ~(1<<WDRF);
WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = 1<<WDP0 | 1<<WDP3;
WDTCSR |= _BV(WDIE);
Serial.println("Initialisation complete.");
delay(100);
}
void loop() {
if(f_wdt == 1) {
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
f_wdt = 0; enterSleep();
}
}

Tugas dan Pertanyaan :
1. Amati hasil Percobaan 9.2, buatlah kesimpulan !
Dari hasil simulasi proteus ketika rangkaian di-run LED akan menyala sebentar (sekejap mata) kemudian LED mati selama kurang lebih 8 atau 10 detik, LED yang mati tersebut akan melakukan sleepmode dan kembali menyala saat watch dog timer aktif.
LED menyala sekejap mata

LED menyala sekejap, lepas tuh LED akan mati seperti gambar di bawah ini.
LED mati dengn waktu yang lama (1menit)
2. Apakah manfaat penggunaan watchdog timer pada mikrokontroler ? Jelaskan !
Watchdog timer digunakan untuk mengaktifkan kembali mikrokontroller dari sleep mode. Saat watchdog timer aktiv, fungsi pada mikrokontroller yang dimatikan pada saat sleep akan aktiv kembali. Watchdog Timer juga digunakan untuk mengatasi sebuah situasi dimana program yang sedang dijalankan akan mengalami kemacetan sehingga menyebabkan system berhenti beroperasi.

Dibawah ini merupakan program Arduino nya beserta simulasi proteus :)

TERIMA KASIH :) 
#NHS