Mengenal IC RTC DS 1307
RTC – Real time clock sering digunakan sebagai acuan untuk menunjukkan waktu nyata pada rangkaian dan perangkat elektronik. Penunjuk waktu pada jam tangan digital, komputer, router, handphone, tablet dan smartphone merupakan contoh penggunaan real time clock pada kehidupan sehari-hari.
Real time clock dapat mengupdate waktu meskipun perangkat elektronik tersebut dalam kondisi mati. Mantap dong? ya enggak segitunya sih, alasannya mereka gak pernah kudet (kurang update) karena emang di perangkat2 tersebut telah dipasangi baterai CMOS, atau setidaknya dalam penggunaan ponsel, baterai lithiumnya gak dilepas terlalu lama, klo kelamaen gimana? ya ngreset lah sesuai bawaan pabriknya 😀
Nah selain real time clock dalam sistem yang udah jadi, kita juga bisa menggunakan IC realtime clock untuk membuat sistem elektronik sendiri, misalnya membuat jam digital, alarm, maupun lampu otomatis yang menyala tiap malem tanpa harus repot mencari saklar.
Membuat Jam Digital Menggunakan IC RTC DS 1307 dengan Codevision AVR (Tutorial I)
IC yang banyak digunakan adalah IC DS 1307, DS 1337 dan DS 1338. Kali ini kita akan membahas IC real time clock 1307 yang digunakan sebagai input jam digital pada mikrokontroler avr atmega 32.
Program ini hanya akan menampilkan tampilan jam berdasarkan fungsi rtc_get_time() milik library ds1307.h ke dalam layar LCD. Yang harus diperhatikan adalah settingan clock mikrokontroler, resistor pull up dan konfigurasi pada PIN SCL dan SDA.
Kode Program Jam Digital Menggunakan Atmel AVR ATMega 32
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Advanced
Project : membuat jam digital menggunakan atmel atmega dan codevision
Version :
Date : 5/29/2013
Author : priyo harjiyono
Company : https://anotherorion.com
Comments: jam digital menggunakan RTC DS1307
Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega32.h>
#include <alcd.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <delay.h>
#include <ds1307.h>
#include <stdio.h>
void main(void)
{
char buff[33];
char h,m,s;
ACSR=0x80;
SFIOR=0x00;
// I2C Bus initialization
i2c_init();
// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("==Jam Digital==");
delay_ms(10);
lcd_clear();
//untuk mengeset jam sendiri silahkan isi
//parameter berikut
//rtc_set_time(12,30,00);
while (1)
{
// Place your code here
rtc_get_time(&h,&m,&s);
lcd_gotoxy(0,0);
sprintf(buff,"jam %u:%u:%u",h,m,s);
lcd_puts(buff);
delay_ms(10);
}
}
Rangkaian jam digital menggunakan RTC DS1307 dalam simulator ISIS proteus sebagai berikut
Masalah yang sering muncul pada konfigurasi membuat jam digital dengan DS1307 menggunakan Codevision AVR ini adalah seringkali outputnya hanya bernilai 165:165:165 padahal secara rangkaian sudah benar sesuai panduan, dan setting codewizardnya sudah mengikuti tutorial yang ada.
Kemungkinan kesalahan tersebut bisa terjadi pertama karena, kesalahan setting clock mikrokontroller, dan yang kedua setting SDA dan SCL terbalik, perhatikan lagi bagian setting bus I2C function di atas, setting program ini .equ __sda_bit=0 dan equ __scl_bit=1 jika terbalik atau beda ya kemungkinan hasil pembacaan DS 1307 pada LCD hanya muncul angka 165.
tanggal sama hariya ada tidak?
alhamdulillah blognya sangat membantu….
errr… *booting tapi gak nyampe-nyampe pemahamanku 🙁 🙁 *
itu bahasa tumbuh2an ran, mandan angel emang :)))