Anda di halaman 1dari 10

LAPORAN

PRAKTEK TEKNIK ANTAR MUKA MIKROKONTROLLER


RANGKAIAN RTC DS1307 BERBASIS ARDUINO UNO DAN ATMEGA8535

Dosen Pengampu :
Amperawan, S.T., M.T

Disusun Oleh :
Nama : Septi Adila Marlianda
NIM : 061940341940
Kelas : 5 ELA
No. Absen : 21

PROGRAM STUDI SARJANA TERAPAN TEKNIK ELEKTRO


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SRIWIJAYA
2022
I. Judul : Rangkaian RTC DS1307 Berbasis Arduino Uno dan ATMEGA8535

II. Tujuan
a. Dapat mengkoneksikan mikrokontroler dengan IC DS1307.
b. Dapat mengomunikasi I2C dalam mikrokontroler dengan IC DS1307.
c. Dapat mengkoneksikan ATMEGA8535 dengan IC DS1307
d. Dapat mengetahui dan memahami fungsi ATMEGA8535.

III. Alat dan bahan


a. Seperangkat computer
b. Arduino Uno
c. USBasp
d. RTC DS1307
e. LCD 16 X 2

III. Dasar Teori


Bentuk komunikasi data dari IC RTC adalah I2C, Komunikasi jenis ini hanya
menggunakan 2 jalur komunikasi yaitu SCL dan SDA. I2C (Inter Integrated Circuit)
I2C yaitu menyediakan jalur komunikasi antara rangkaian terintegrasi. Bus I2C
bekerja berdasar prinsip master dan slave pada pin SDA (serial data) dan SCL (serial
clock). Komponen yang mengirim sinyal ke bus I2C disebut transmitter. Komponen
yang menerima sinyal ke bus I2C disebut receiver. Komponen yang mengontrol
transfer sinyal pada bus I2C dengan frekwensi tertentu disebut master. Komponen
yang dikontrol oleh master disebut slave.

Gambar 1. Prinsip Kerja Komunikasi I2C


Berikut ialah tampilan dari RTC DS1307 :

Gambar 2. RTC DS1307


Fungsi pin dari komponen RTC DS1307 adalah sebagai berikut :
1. Pin Vcc (Nomor 8) berfungsi sebagai sumber energy listrik Utama. Tegangan kerja
dari komponen ini adalah 5 volt.
2. Pin GND (Nomor 4) Anda harus menghubungkan ground yang dimiliki oleh
komponen RTC dengan ground dari battery back-up.
3. SCL berfungsi sebagai saluran clock untuk komunikasi data antara Microcontroller
dengan RTC.
4. SDA berfungsi sebagai saluran Data untuk komunikasi data antara Microcontroller
dengan RTC.
5. X1 dan X2 berfungsi untuk saluran clock yang bersumber dari crustal external.
6. Vbat Berfungsi sebagai saluran energy listrik dari Battery external.

IV. Percobaan
V.1 Simulasi Rangkaian

Gambar 3. Rangkaian RTC berbasis Arduino UNO


Gambar 3. Rangkaian RTC berbasis ATMEGA8535

V.2 Program Rangkaian


 RTC berbasis Arduino Uno
#include <RTClib.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

RTC_DS1307 rtc;
char namaHari[7][12] = {"Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"};

void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Dila dan Fiza");
lcd.setCursor(0, 1);
lcd.print("PrakTAM");
lcd.clear();

if (!rtc.begin()) {
Serial.println("RTC TIDAK TERBACA");
while (1);
}

if (!rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}
void loop() {
DateTime now = rtc.now();

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(namaHari[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

lcd.setCursor(0, 0);
lcd.print(now.hour(), DEC);
lcd.print(" : ");
lcd.print(now.minute(), DEC);
lcd.print(" : ");
lcd.print(now.second(), DEC);
lcd.print(" ");

lcd.setCursor(0, 1);
lcd.print(namaHari[now.dayOfTheWeek()]);
lcd.print(",");
lcd.print(now.day(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.year(), DEC);

delay(1000);
}

 RTC berbasis ATMEGA8535


$regfile = "m8535.dat"
$crystal = 8000000
$baud = 9600

Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 =
Portb.0
Config Lcd = 16 * 2
Cursor Off

Config Portd = Input


Config Porta = Input

$lib "ds1307clock.lib"

Config Sda = Portc.1


Config Scl = Portc.0
Const Ds1307w = &HD0
Const Ds1307r = &HD1

Config Clock = User

Dim Weekday As Byte


Dim Char As String * 10 , Tanda As String * 1
Dim Jam As String * 10 , Menit As String * 10 , Detik As String * 10
Dim Hari As String * 10 , Bulan As String * 10 , Tahun As String * 10
Dim A As Byte , B As Byte , C As Byte
Dim X As Byte , Y As Byte , Z As Byte
Dim Waktu As String * 10
Dim Tanggal As String * 10

Print "DS1307"
Waitms 100

Time$ = "13:48:00"
Date$ = "12-13-21"

Print "Tanggal: " ; Date$


Print "Waktu:" ; Time$

Cls
Cursor Off
Locate 1 , 1
Lcd "Tanggal: " ; _day ; ":" ; _month ; ":" ; _year
Locate 2 , 1
Lcd "Waktu : " ; _hour ; "-" ; _min ; "-" ; _sec
Wait 1

Mulai:
Do
Tanda = Inkey()
If Tanda = "A" Then
'untuk ganti settingan waktu RTC tekan huruf A pada keyboard
Input "Masukkan waktu (hh:mm:ss):" , Waktu
Jam = Mid(waktu , 1 , 2)
Menit = Mid(waktu , 4 , 2)
Detik = Mid(waktu , 7 , 2)
Time$ = Jam + ":" + Menit + ":" + Detik
A = Val(jam)
B = Val(menit)
C = Val(detik)

_hour = A
_min = B
_sec = C
Gosub Settime
End If

If Tanda = "B" Then


'untuk ganti settingan tanggal RTC tekan huruf A pada keyboard
Input "Masukkan Tanggal (mm-dd-yy):" , Tanggal
Bulan = Mid(tanggal , 1 , 2)
Hari = Mid(tanggal , 4 , 2)
Tahun = Mid(tanggal , 7 , 2)
Date$ = Bulan + "-" + Hari + "-" + Tahun
X = Val(bulan)
Y = Val(hari)
Z = Val(tahun)

_day = Y
_month = X
_year = Z
Gosub Setdate
End If

Print "Tanggal: " ; Date$


Print "Waktu:" ; Time$
Cls
Cursor Off
Locate 1 , 1
Lcd "Tanggal: " ; _day ; ":" ; _month ; ":" ; _year
Locate 2 , 1
Lcd "Waktu : " ; _hour ; "-" ; _min ; "-" ; _sec
Wait 1
Loop
End

Getdatetime:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0

I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Ack
I2crbyte Weekday , Ack
I2crbyte _day , Ack
I2crbyte _month , Ack
I2crbyte _year , Nack
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return

Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 4
I2cwbyte _day
I2cwbyte _month
I2cwbyte _year
I2cstop
Return

Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte _sec
I2cwbyte _min
I2cwbyte _hour
I2cstop
Return
V. Hasil Percobaan

Gambar 4. Rangkaian RTC berbasis Arduino Uno

Gambar 5. Rangkaian RTC berbasis ATMEGA8535

VI. Analisa
 RTC berbasis Arduino Uno
Untuk melakukan percobaan kali ini terebih dahulu harus ada Arduino Uno, RTC
DS1307 dan LCD 16 x 2 untuk menampilkan waktu dan tanggalnya, semua dijadikan
rangkaian seperti yang ada pada V.1. Arduino Uno adalah board mikrokontroler berbasis
ATmega328. Arduino Uno memiliki sejumlah fasilitas untuk berkomunikasi dengan
komputer, Arduino lain, atau mikrokontroler lainnya. ATmega328 menyediakan UART TTL
(5V) untuk komunikasi serial, yang tersedia di pin digital 0 (RX) dan 1 (TX). ATmega328
juga mendukung I2C (TWI) dan komunikasi SPI. Dalam antarmuka Arduino Uno dengan
RTC DS1307, Arduino Uno bertindak sebagai Master dan DS1307 bertindak sebagai Slave.
Master dalam Komunikasi I2C yaitu Arduino dalam hal ini, bertanggung jawab atas sinyal
clock, akses bus, sinyal start dan stop.
Kemudian juga harus mempunyai aplikasi Arduino IDE untuk dapat memprogram
Aruino IDE, Lalu mengetikan program seperti yang ada pada V.2. Untuk mengupload
programnya ke board Arduino IDE terlebih dahulu memilih board yang ada pada tab “Tools”
yaitu Arduino/Genuino Uno, Kemudian memilih Port yang terhubung yaitu COM3. Setelah
semuanya selesai, Selanjutnya klik upload atau Ctrl +U kemudian tampilannya dapat dilihat
seperti gambar yang ada dibawah ini.

 RTC berbasis ATMEGA8535


Untuk dapat melakukan percobaan kali ini, terebih dahulu harus mempersiapkan Sismin
ATMega32 dan Mikrokontroler ATmega8535. Lalu USBasp, LCD 16x2, RTC DS1307.
Semua dirangkai seperti yang ada pada Gambar 3. Berikut komfigurasi pin yang digunakan
di ATmega8535.

Kemudian juga harus mempersiapkan aplikasi Arduino IDE untuk memprogram


Sismin ATMega8535, mengetikan program seperti yang ada pada V.2. Selanjutnya untuk
mengupload programnya ke Sismin ATMega8535, terlebih dahulu kita harus mengisikan
Bootloader pada mikrokontroler ATmega8535. Bootloader adalah program yang di upload
atau dimasukan kedalam sebuah IC mikrokontroler agar bisa dikenali oleh software IDE
Arduino. Cara mengisi bootloader ke dalam IC mikrokontrolernya ialah dengan cara Burn
Bootloader. Pertama – tama colokkan USBasp ke port laptop. Hubungkan port ICSP di
USBasp ke port ICSP Sismin ATMega8535. Kemudian atur board pada menu Tools sebagai
berikut :

1. Board pilih sesuai dengan atmega pada sismin yang akan digunakan.
2. Clock setting sesuai dengan kristal yang akan digunakan pada sismin.
3. BOD atur pada BOD 4.0V hal ini sismin beroprasi pada tegangan 5V (kurang lebih).
4. Pinout patikan atur pada "Standard pinout".
5. Bootlader "Yes (UART0)".
6. Programmer "USBasp".
Selanjutnya klik Tools pilih Burn Bootloader tunggu proses hingga selesai.
Selanjutnya proses peng-uploadan, pertama – tama atur board pada menu Tools seperti diatas.
Lalu klik Upload Using Programmer atau Ctrl +Shift+U, tunggu sampai done uploading.
Kemudian tampilannya dapat dilihat seperti gambar yang ada dibawah ini.
VII. Kesimpulan
 RTC berbasis Arduino Uno
1. Arduino Uno adalah board mikrokontroler berbasis ATmega328, ATmega328
mendukung komunikasi I2C.
2. Bus I2C bekerja berdasar prinsip master dan slave pada pin SDA (serial data) dan
SCL (serial clock).
3. Arduino Uno bertindak sebagai Master dan DS1307 bertindak sebagai Slave.

 RTC berbasis ATMEGA8535


1. Bentuk komunikasi data dari IC RTC adalah I2C.
2. Untuk mengupload programnya ke Sismin ATMega8535, terlebih dahulu kita harus
mengisikan Bootloader pada mikrokontroler ATmega8535
3. Bootloader adalah program yang di upload atau dimasukan kedalam sebuah IC
mikrokontroler agar bisa dikenali oleh software IDE Arduino.

Anda mungkin juga menyukai