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




PRAKTIKUM 10
PENGGUNAAN FUNGSI MATEMATIKA

TUJUAN :
1. Mampu mempergunakan fungsi matematika pada pemrograman mikrokontroler.
2. Mampu mengimplementasikan fungsi matematika untuk melakukan perhitungan matematika sederhana.

PERALATAN :
1. Komputer : 1 set
2. Arduino Uno : 1 pcs
3. Kabel USB tipe B : 1 pcs

PERCOBAAN :
10.1 Penggunaan Fungsi pada Library Math.h
Pada percobaan kali ini akan dijelaskan penggunaan fungsi matematika pada pemrograman mikrokontroler menggunakan Arduino IDE. Fungsi-fungsi yang digunakan telah tersedia pada file library math.h.

Prosedur :
1. Tuliskan sintaks program berikut ini, lakukan kompilasi dan upload program.
void setup() { Serial.begin(9600);
Serial.println("========== Fungsi Matematika ===========");
Serial.print("cos(90) = "); Serial.println(cos(90));
Serial.print("sin(45) = "); Serial.println(sin(45));
Serial.print("tan(90) = "); Serial.println(tan(90));
Serial.print("atan(90) = "); Serial.println(atan(90));
Serial.print("atan2(90,10) = "); Serial.println(atan2(90,10));
Serial.print("sqrt(9) = "); Serial.println(sqrt(9));
Serial.print("exp(9) = "); Serial.println(exp(9));
Serial.print("log(100) = "); Serial.println(log(100));
Serial.print("log10(100) = "); Serial.println(log10(100));
Serial.print("pow(9,2) = "); Serial.println(pow(9,2));
Serial.print("square(9) = "); Serial.println(sqrt(9));
Serial.print("fabs(-1.5) = "); Serial.println(fabs(-1.5));

Serial.print("fmod(1.2334,2) = "); Serial.println(fmod(1.2334,2));
}
void loop() {
}

Tugas dan Pertanyaan :
1. Buka aplikasi Serial Monitor, kemudian amati data yang ditampilkan pada Serial Monitor. Periksalah hasil perhitungan pada program secara manual. Apakah ada yang salah dari perhitungan program ? Jika ada sebutkan pada fungsi apa !
Fungsi Trigonometri diatas salah, karena seharusnya input parameter trigono berbentuk radians.

Berikut hasil dari serial monitor yang inputan parameter trigono nya belum diganti degrees masih rad.

Berikut hasil dari serial monitor yang inputan parameter trigono nya sudah diganti degrees .

2. Pada fungsi trigonometri, parameter input fungsi dalam bentuk apa ? radian atau degree ?
Dalam bentuk Radians.

3. Buatlah kalkulator sederhana dengan antarmuka serial port, dimana kalkulator tersebut mampu melakukan perhitungan besar sudut pada salah satu sudut segitiga. Gunakan fungsi trigonometri untuk melakukan perhitungan !




untuk lebih jelasnya silahkan download link ini ... :)
Prograam Arduino Penggunaan Fungsi Matematika :
http://www.mediafire.com/download/njbtai5oza0nij1/program_arduino_minggu_ke-10.rar

Prograam Arduino : Kalkulator sederhana trigonometri
http://www.mediafire.com/download/gnv4a3xjl5xxalv/kalkulator+trigono.rar

Terima Kasih :)
#NHS



on Tuesday, 17 December 2013
A.  Rangkaian Integrator


Gambar 1.1 Signal Output dari Rangkaian Integrator
Rangkaian Integratori terdiri dari sebuah kapastor dan resistor yang dihub.kan. Sebuah signal pulsa diberikan pada input rangkaian. Ketika input naik secara mendadak dari 0 naik ke maksimum, kapasitor charge secara eksponensial melalui resistor. Ketika pulsa masukan berubah dari maksimum ke 0 secara mendadak maka kapasitor akan discharge secara eksponensial sampai 0. Proses ini berulang untuk masing-masing pulsa masukkan.
Gambar 1.2 Rangkaian Integrator
Salah satu aplikasi dari LM741 adalah sebagai rangkaian integrator, dimana rangkaian ini mirip dengan rangkaian Low Pass Fillter yang mampu melewatkan frekuensi jika di bawah frekuensi cut off-nya. Prinsip kerja pada rangkaian integrator ini adalah jika frekuensi keluaranny  naik, maka akan mengakibatkan turunnya reaktansi kapasitif dari kapasitor dan dengan cara kerja seperti inilah rangkaian integrator mampu menghilangkan inputan dengan frekuensi tinggi yang masuk ke inputannya. Persamaan atau rumus untuk mencari Vo adalah sebagai berikut.
Dimana :
R1 = Tahanan (Ohm)
CF = Kapasitor feedback (Farad)
Vin = tegangan pada masukkan rangkaian (Volt)
t = waktu (s)

Sementara itu jika ingin mengetahui respon frekuensi yang dapat dilewatkan oleh rangkaian tersebut adalah dengan cara menggunakan rumus mencari frekuensi cut-off.

Sehingga ketika frekuensi dari inputan melebihi dari frekuensi cut-off, frekuensi tersebut akan dilemahkan. Akan tetapi ketika frekuensi inputan di bawah frekuensi cut-off, tegangan keluaran akan bertambah secara ekponensial. Setelah diadakan sebuah  percobaan dengan menggunakan rangkaian integrator didapatlah sebuah grafik seperti dibawah ini.


A.  Rangkaian Differensiator
Gambar 1.3 Rangkaian Differensiator
Dengan meletakkan kapasitor diawal inputan dari sebuah op amp, dapat menghasilkan sebuah rangkaian seperti rangkaian High Pass Fillter. Untuk mampu melewati kapasitor, tegangan masukan harus memiliki frekuensi yang tinggi diatas frekuensi cut-off, sehingga dengan frekuensi yang tinggi reaktansi dari kapasitor akan rendah dan arus pun dapat masuk ke inputan Op amp. Jika frekuensi yang masuk lebih rendah dari frekuensi cut-off, maka arus tidak dapat masuk. Persamaan rumus untuk mencari Vo pada rangkaian differensiator adalah sebagai berikut.
                                             Dimana :
R1 = Tahanan (Ohm)
CF = Kapasitor feedback (Farad)
Vin = tegangan pada masukkan rangkaian (V)
t  = waktu (s)

Sementara jika kita ingin mengetahui respon frekuensi yang dapat dlewatkan oleh rangkaian tersebut adalah dengan cara menggunakan rumus mencari frekuensi cut-off.
Sehingga ketika frekuensi dari inputan melebihi dari frekuensi cut-off, frekuensi tersebut akan dilemahkan. Akan tetapi ketika frekuensi inputan dibawah frekuensi cut-off, tegangan keluaran akan bertambah secara ekponensial. Setelah diadakan sebuah  percobaan dengan menggunakan rangkaian differensiator didapatlah sebuah grafik seperti dibawah ini.

Berikut merupakan gambar signal output Differensial.
Gambar 1.4 Signal Output Rangkaian  Differensiator
#NHS :) 
on Friday, 22 November 2013
Assalamualaikum ....
ohayou minnaaaaa !  :D
udah lama nggak nge-post disini. perkara UTS kemaren kali ya jadinya tak ada bahan buat di-post.
oke langsung saja, kali ini saya mau nge-post hasil praktikum mikrokontroller saya hari ini. karna masih fresh-fresh nya mending langsung aja dikerjain. :)

PRAKTIKUM 6

TIMER AND COUNTER
TUJUAN
1.      Mampu membuat program yng menggunakan fitur timer sebagai pewaktu.
2.      Mampu membuat program yng menggunakan fitur timer sebagai penghitung.
3.      Mampu menggunakan fitur timer pada mikrokontroller untuk membuat jam digital sedesrhana.
PERALATAN
1.      Komputer                    : 1 set
2.      Arduino UNO             : 1 pcs
3.      Project Board              : 1 pcs
4.      Kabel USB tipe B       : 1 pcs
5.      Kabel Jumper              : 1 pcs
6.      Switch pushbutton      : 2 pcs
7.      LED                            : 1 pcs
8.      LCD                            : 1 pcs
9.      Resistor 330ohm         : 1 pcs
1.  Potensiometer 10K     : 1  pcs

PERCOBAAN:
6.1  Penggunaan Timer Overflow Untuk LED Blinking
Pada percobaan  kali ini akan dibuat program untuk membuat LED berkedip per 500 ms. Pada dasarnya LED akan toogle  (berubah kondisinya) setiap terjadi interupsi timer overflow. Nilai regiter timer di-set sedemikian rupa sehingga waktu overflow per 500 ms.
Prosedur :
1. Rangkailah rangkaian pada gambar dibawah ini.
 
gambar 6.1
2. Tuliskan sintaks program berikut ini kemudian lakukan compile dan upload program kesystem minimum arduino.
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 34286;
TCCR1B |= (1 << CS12); //256 prescale
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);
}

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 regiter pada sintaks program percobaan 6.1, timer akan overflow setiap berapa ms ??
Jawab: