i
ALAT BANTU PARKIR MOBIL BERBASIS MIKROKONTROLER ATMEGA16
Disusun Oleh :
Nama : Venda Luntungan Nrp : 0522108
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha,
Jl. Prof.Drg.Suria Sumantri, MPH no.65, Bandung, Indonesia.
Email : ven_dha22@yahoo.com
ABSTRAK
Perkembangan teknologi dalam dunia elektronika sekarang ini maju dengan pesatnya, dimana teknologi tersebut dikembangkan dan terus dikembangkan guna memunculkan teknologi yang lebih handal. Mikrokontroler merupakan salah satu produk teknologi yang dapat diumpamakan sebagai bentuk minimum dari sebuah mikrokomputer yang berukuran kecil, akan tetapi dapat melakukan berbagai macam perintah dengan kecepatan tinggi.
Pada tugas akhir ini, dirancang suatu alat bantu parkir mobil. Pada dasarnya sistem ini terdiri dari satu bagian utama. Sistem pada pengukuran jarak yang dirancang terdiri dari 1 sensor adalah sensor PING yang mempunyai kemampuan sebagai alat pengukur jarak dengan memancarkan gelombang ulrasonik. Sensor PING akan memancarkan gelombang ultrasonik pada objek yang telah ditentukan, data jarak yang telah didapat oleh sensor PING akan di proses oleh mikrokontroler Atmega16, kemudian hasil data proses yang di olah oleh mikrokontroler akan di tampilkan di LCD dan IC ISD1420 berfungsi sebagai tempat penyimpan data suara yang direkam. Data yang direkam IC ISD1420akan mengeluarkan hasil suara jarak yang telah ditentukan, kemudian motor DC akan bergerak menarik pedal rem pada saat jarak yang telah ditentukan. Hasil pengukuran jarak tersebut ditampilkan pada LCD secara real time.
Berdasarkan percobaan yang dilakukan, perangkat sistem yang dirancang berhasil direalisasikan dengan persentase keberhasilan 90% selama sistem masih berada di dalam batas jangkauan.
ii
CAR PARKING ASSIST DEVICE
BASED ON MICROCONTROLLER ATMEGA16
Composed by :
Name : Venda Luntungan Nrp : 0522108
Electrical Engineering, Faculty of Engineering, Kristen Maranatha University,
Prof. drg. Suria Sumantri, MPH Street, No. 65th, Bandung, Indonesia.
Email : ven_dha22@yahoo.com
ABSTRACT
Technological developments in the world of today's advanced electronics
with the rapid, where the technology was developed and continues to be
developed in order to bring a more reliable technology. Microcontroller is a
technology product that can be likened to a minimum form of a small
microcomputer, but can perform a variety of commands with high speed.
In this final project, a tool designed car park. Basically the system consists
of a main section. Distance measurement system designed to consist of 1 PING
sensor is a sensor that has the ability as a distance measuring device with
ultrasonic emit. PING sensor will emit ultrasonic waves at a predetermined object,
the distance the data has been obtained by PING sensor will be processed by the
microcontroller ATmega16, then process the data results in if the microcontroller
will be displayed on the LCD and IC ISD1420 serves as a voice data storage were
recorded. IC ISD1420 recorded data will release the results sound a predetermined
distance, then draw DC motor will move the brake pedal at a predetermined
distance. Distance measurement results are displayed on the LCD in real time.
Based on experiments conducted, the system is designed successfully
realized with a 90% success rate for the system is still within the limits of the
iii DAFTAR ISI
Halaman
ABSTRAK ... i
KATA PENGANTAR ... iii
DAFTAR ISI ... v
DAFTAR TABEL ... vii
DAFTAR GAMBAR ... viii
BAB I PENDAHULUAN 1.1. Latar Belakang Masalah ... 1
1.2. Identifikasi Masalah ... 2
1.3. Perumusan Masalah ... 2
1.4. Tujuan ... 2
1.5. Pembatasan Masalah ... 2
1.6. Spesifikasi Alat Yang Digunakan ... 3
1.7. Sistematika Penulisan ... 4
BAB II LANDASAN TEORI 2.1. Sensor PING ... 5
2.1.1 Cara kerja modul PING)))™ Ultrasonic Range Finder ... 5
2.2. Mikrokontroler AVR ATMEGA16 ... 8
2.2.1 Fitur ATmega16 ... 9
2.2.2. Konfigurasi Pin ATmega16 ... 9
2.2.3. Diagram Blok ATmega16... 12
2.2.4. General Purpose Register ATmega16 ... 13
2.2.5. Peta Memori ATmega16 ... 13
2.2.6. Pemrograman pada AVR ATmega 16 ... 15
2.3. Pengenalan ISD 1420 ... 16
iv
2.3.2 Blok Diagram ISD 1420... 16
2.3.3. Konfigurasi Pin ISD 1420 ... .... 17
2.3.4. Pengalamatan Pada ISD 1420 ... 20
2.3.6. Timing Diagram ISD 1420... 20
2.4. LCD... 22
BAB III PERANCANGAN DAN REALISASI 3.1. Diagram Blok ... 24
3.2. Rangkaian Mikrokontroler ATMEGA16 ... 26
3.3. Perancangan Driver Motor DC ... 27
3.4. Modul ISD1420 ……… 29
3.4.1. Proses Merekam Suara ………. 29
3.5. Diagram Alir pada system ……….. 31
BAB IV DATA PENGAMATAN DAN ANALISIS 4.1. Pengujian Sensor PINGTM... 35
4.2. Pengujian pada LCD ... ... 36
4.3. Pengujian pada ISD 1420 ... 37
4.4. Pengujian keseluruhan alat ... 40
BAB V KESIMPULAN DAN SARAN 5.1. Kesimpulan ... 41
5.2. Saran ... 41
DAFTAR PUSTAKA
v
DAFTAR TABEL
Halaman
Tabel 2.1 Fungsi Khusus Port B... 10
Tabel 2.2 Fungsi Khusus Port C... 11
Tabel 2.3 Fungsi Khusus Port D ... 11
Tabel 2.4 Fungsi Pin ISD 1420 ... 18
Tabel 2.5 Per Segmen pada ISD 1416 dan 1420 ... 20
Tabel 2.4 Konfigurasi kaki LCD ... 22
Tabel 3.1 Penggunaan Port Pada Mikrokontroler ATMEGA16... 26
Tabel 3.2 Arah Putar Motor DC... ... 28
Tabel 3.3 Kata yang direkam pada ISD1420 ... 30
sesuai dengan alamat yang ditentukan Tabel 4.1 Hasil Perbandingan Jarak Sebenarnya ... ... 35
Dengan Pembacaan Sensor PINGTM Tabel 4.2 Pengujian pada ISD1420 ... ... 39
vi
DAFTAR GAMBAR
Halaman
Gambar 2.1 Sensor PING ... 5
Gambar 2.2 Diagram waktu modul PING... 5
Gambar 2.3 Ilustrasi cara kerja modul PING ... 6
Gambar 2.4 Flowchart Program untuk Aplikasi ini... 7
Gambar 2.5 Flowchart Program untuk Aplikasi ini ( sambungan ) ... 8
Gambar 2.6 Konfigurasi Pin ATMEGA16 ... 10
Gambar 2.7 Diagram Blok ATMEGA16 ... 12
Gambar 2.8 General Purpose Register ATmega16 ... 13
Gambar 2.9 Peta Memori Program ATmega16 ... 14
Gambar 2.10 Peta Memori Data ATmega16... 15
Gambar 2.11 Blok diagram ISD 1420... 17
Gambar 2.12 Konfigurasi Pin ISD 1420 ... 17
Gambar 2.13 Record Timing Diagram ISD 1420 ... 21
Gambar 2.14 Playback Timing Diagram ISD 1420 ... 21
Gambar 2.15 Konfigurasi kaki LCD ... 23
Gambar 3.1 Diagram Blok Sistem ... 24
Gambar 3.2 Rangkaian Plant Secara Keseluruhan ... 25
Gambar 3.3 Alokasi Port Pada Sistem Minimum ... 27
Mikrokontroler ATMEGA16 Gambar 3.4 IC Driver Motor DC L293D ... 28
Gambar 3.5 Gambar Skematik Perancangan Sistem Voice Recording ... 29
vii
Gambar 3.7 Diagram alir system (sambungan)... 32
Gambar 3.8 Diagram alir system (sambungan)... 33
Gambar 3.9 Diagram alir system (sambungan)... 34
Gambar 4.1 Syntax pengujian pada LCD ... 36
Gambar 4.2 Hasil yang ditampilkan di LCD ... 37
Gambar 4.3 Syntax pengujian pada ISD ... 38
List Program pada AVR ATMEGA16:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.6 Evaluation
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 13/02/2013
Author : Freeware, for evaluation and non-commercial use only
Company :
Comments:
Chip type : ATmega16L
Program type : Application
AVR Core Clock frequency: 11,059000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
/*
PORTB->LCD
PORTC->ke alamat IC suara
PORTD.0-> untuk play atau stop suara
PORTD.5->mengatur kecepatan motor
PORTD.1-> mengatur arah putaran motor
PORTD.2-> mengatur arah putaran motor
#include <mega16.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>
#define sigout PORTA.0
#define sigin PINA.0
#define dirsig DDRA.0
void ambil_data();
unsigned int data_timer,dataping,dataping_awal,dataping_simpan;
unsigned char jarak[4],text[32];
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
// Timer1 overflow interrupt service routine
{
// Place your code here
data_timer=0;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 11059,000 kHz
// Mode: Fast PWM top=FFh
// OC0 output: Non-Inverted PWM
TCCR0=0x69;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Rising Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x43;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
//PORTD.0=0; // play
//PORTD.4=0;// motor stop
// Global enable interrupts
#asm("sei")
lcd_gotoxy(0,0);
lcd_putsf("ALAT BANTU");
lcd_gotoxy(0,1);
lcd_putsf("PARKIR");
delay_ms(2000);
lcd_clear();
while (1)
{
// Place your code here
ambil_data();
lcd_clear();
lcd_gotoxy(0,0);
sprintf(text,"jarak=%d",dataping) ;
lcd_puts(text);
//
// if(dataping < 100 )
// {
// PORTD.1=0;
// }
//
// if(PINA.1==0)
// {
// PORTD.1=0;
// PORTD.2=0;// motor stop
// }
//
//cek sensor jarak
if(dataping ==300 ) //jarak 300cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x28; //set alamat suara "tiga"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //sto p
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if(dataping ==290 ) //jarak 290cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //sto p
PORTC=0x58; //set alamat suara "sembilan"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if(dataping ==280 ) //jarak 280cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //sto p
PORTC=0x50; //set alamat suara "delapan"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if(dataping ==270 ) //jarak 270cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //sto p
PORTC=0x48; //set alamat suara "tujuh"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if(dataping ==260 ) //jarak 260cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //sto p
PORTC=0x40; //set alamat suara "enam"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if(dataping ==250 ) //jarak 250cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //sto p
PORTC=0x38; //set alamat suara "lima"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if(dataping ==240 ) //jarak 240cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //sto p
PORTC=0x30; //set alamat suara "empat"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if(dataping ==230 ) //jarak 230cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //sto p
PORTC=0x28; //set alamat suara "tiga"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if(dataping ==220 ) //jarak 220cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //sto p
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if(dataping ==210 ) //jarak 210cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //sto p
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==200 ) //jarak 200cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
\
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==190 ) //jarak 190cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x58; //set alamat suara "sembilan"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==180 ) //jarak 180cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x50; //set alamat suara "delapan"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==170 ) //jarak 170cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x48; //set alamat suara "tujuh"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==160 ) //jarak 160cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x40; //set alamat suara "enam"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==150 ) //jarak 150cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x38; //set alamat suara "lima"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==140 ) //jarak 140cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x30; //set alamat suara "empat"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==130 ) //jarak 130cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x28; //set alamat suara "tiga"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==120 ) //jarak 120cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x20; //set alamat suara "dua"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==110 ) //jarak 110cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==100 ) //jarak 100cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x18; //set alamat suara "satu"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==90 ) //jarak 90cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x58 ; //set alamat suara "sembilan"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==80 ) //jarak 80cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x50 ; //set alamat suara "delapan"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
else if( dataping ==70 ) //jarak 70cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x48; //set alamat suara "tujuh"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==60 ) //jarak 60cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
PORTD.0=1; //stop
PORTC=0x40 ; //set alamat suara "enam"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping ==50 ) //jarak 50cm
{
PORTC=0x00; //set alamat suara "jarak"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x30 ; //set alamat suara "lima"
PORTD.0=0; //play
PORTD.0=1; //stop
PORTC=0x10; //set alamat suara "nol"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
PORTC=0x08; //set alamat suara "cm"
PORTD.0=0; //play
delay_ms(1000); //delay 1s
PORTD.0=1; //stop
}
else if( dataping < 100)
{
//motor mulai bergerak untuk rem
delay_us(100);//tunggu perubahan jarak
ambil_data();
dataping_awal = dataping;
if(dataping - dataping_awal >= 2) // menjauh dari halangan
{
//rem dilepas
PORTD.4=1;
PORTD.0=1;
PORTD.1=0;
}
else if ( dataping - dataping_awal < 2 ) // mendekati halangan
//rem ditarik
OCR0= (100-dataping) *5; // kecepatan mengikuti jarak objek
PORTD.0= 0;//motor menarik rem
PORTD.1= 1;//
}
//lepas rem bila kondisi jarak < 50 selama 3 detik.
if(dataping <=50)
{
ambil_data();
dataping_simpan= dataping;
delay_ms(3000);// tunggu
ambil_data();
if( dataping == dataping_simpan)
{
//lepas rem
//rem dilepas
PORTD.4=1; //motor on
PORTD.0=1;
PORTD.1=0;
delay_ms(200);
}
}
}
//delay_ms(500);
}
}
void ambil_data()
{
dirsig=1;
sigout=1;
delay_us(10);
sigout=0;
dirsig=0;
sigout=1;
while(sigin==0);
TCNT1=0;
data_timer=0;
while(sigin==1);
data_timer=TCNT1;
dataping=data_timer/10;
delay_ms(300);
Bab I Pendahuluan
1
BAB I
PENDAHULUAN
1.1 Latar Belakang
Perkembangan teknologi dalam dunia elektronika sekarang ini
maju dengan pesatnya, dimana teknologi tersebut dikembangkan dan terus
dikembangkan guna memunculkan teknologi yang lebih handal.
Mikrokontroler merupakan salah satu produk teknologi yang dapat
diumpamakan sebagai bentuk minimum dari sebuah mikrokomputer yang
berukuran kecil, akan tetapi dapat melakukan berbagai macam perintah dengan kecepatan tinggi. Aplikasi mikrokontroler telah banyak digunakan
pada peralatan elektronika yang telah ada sekarang ini, tidak hanya
dibidang industri, rumah tangga bahkan instasi seperti rumah sakit
misalnya.
Sistem otomatisasi adalah salah satu bagian dari perkembangan
teknologi yang sangat pesat saat ini, dimana manusia selalu berusaha
untuk meringankan dan mempercepat pekerjaannya dengan menciptakan
suatu peralatan elektronik yang dapat mengendalikan secara otomatis dan
memonitor output dari alat tersebut sehingga dapat menggantikan peran
manusia dalam menyelesaikan setiap pekerjaannya dengan ringan dan
cepat. Salah satu contoh yang dapat kita terapkan dari teknologi tersebut
dimana dapat menggantikan peran manusia antara lain Alat Bantu Parkir
Mobil Bebasis Mikrokontroler Atmega16.
Selama ini pemilik kendaraan bermotor khususnya roda empat
selalu kesulitan untuk memarkirkan kendaraannya pada suatu keadaan
yang padat dimana pada posisi kiri dan kanan mobil terdapat kendaraan
lain. Perlu sebuah alat yang membantu pemilik kendaraan untuk
memberikan peringatan jarak antara kendaraan yang diparkir dengan kendaraan yang sudah ada ditempat parkir agar tidak terjadi tabrakan
maupun gesekan yang disebabkan terbatasnya penglihatan kebelakang
Bab I Pendahuluan 2
Oleh karena itu dirancanglah sebuah sistem alat otomatis yaitu
“Alat Bantu Parkir Mobil Berbasis Mikrokontroler Atmega16”. Alat ini bekerja berdasarkan input dari sensor jarak PING yang akan memberikan
data jarak, kemudian diteruskan ke mikrokontroler untuk kemudian diolah
dan dikeluarkan dalam bentuk suara agar supir atau pemilik kendaraan
mengetahui jarak di belakang mobil tersebut. Alat ini juga secara otomatis
akan menarik pedal rem secara otomatis jika jarak sensor dengan benda
sangat dekat. Sedangkan kamera digunakan untuk melihat bagian
belakang mobil secara langsung dan ditampilkan di layar monitor.
1.2 Identifikasi Masalah
Identifikasi masalah pada tugas akhir ini adalah diperlukan sistem peringatan parkir dengan memberikan peringatan kepada pengedara mobil secara langsung dan suara.
1.3 Perumusan Masalah
Permasalahan yang akan dibahas dalam Tugas Akhir ini meliputi:
1. Bagaimana merancang dan merealisasikan sebuah alat yang dapat
memberikan peringatan dalam bentuk suara dan display jarak kepada
pengendara mobil?
1.4 Tujuan
Tujuan yang hendak dicapai dalam pengerjaan Tugas Akhir ini
adalah:
1. Membuat suatu alat yang digunakan untuk memberikan data jarak
sekaligus peringatan dalam bentuk suara dan display jarak kepada
pengendara mobil.
1.5 Pembatasan Masalah
Pembatasan masalah pada Tugas Akhir ini meliputi:
1. Peringatan dalam bentuk suara
Bab I Pendahuluan 3
3. Bahasa yang digunakan pada program ini adalah Bahasa C Codevision
AVR.
4. Sensor PING™ digunakan untuk mengukur jarak.
1.6 Spesifikasi Alat Yang Digunakan
Alat yang digunakan memiliki spesifikasi sebagai berikut :
a. Sensor jarak PING yang digunakan untuk mengukur jarak benda dari
posisi sensor berada.
b. IC ISD2560 ini merupakan IC play/rec voice yang akan digunakan untuk
mengeluarkan suara
c. Motor DC yang dapat menarik atau mengulur pedal rem mobil.
d. LCD 2x16 sebagai display jarak.
1.7 Sistematika Penulisan
BAB I : PENDAHULUAN
Bab ini membahas mengenai latar belakang permasalahan,
perumusan masalah, tujuan penulisan, metode penyelesaian
masalah serta sistematika penulisan pada Tugas Akhir ini.
BAB II : DASAR TEORI
Bab ini membahas mengenai teori-teori penunjang yang
diperlukan dalam merealisasikan tugas akhir yaitu berupa
teori tentang cara kerja sensor PING, pengontrol mikro,
serial port yang digunakan untuk komunikasi dari komputer
ke pengontrol mikro,IC suara.
BAB III : PERANCANGAN DAN REALISASI
Pada bab ini diuraikan tentang perancangan sistem keamanan
parkir mundur dengan jarak aman yang sudah ditentukan.
Diagram blok, cara kerja alat, perangkat keras (ATmega16
dan sensor jarak) serta perangkat lunak yang dilengkapi
Bab I Pendahuluan 4
BAB IV : DATA PENGAMATAN DAN ANALISA
Bab ini menguraikan hasil dan analisa dari realisasi alat yang
telah dibuat.
BAB V : KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan dari analisa yang telah dilakukan
42
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Dalam pembuatan tugas akhir ini, penulis mendapatkan beberapa
kesimpulan, antara lain:
1. Alat bantu parkir mobil menggunakan mikrokontroler ATMEGA16,telah
berhasil direalisasikan.
2. Motor DC bergerak menarik pedal rem pada saat jarak kurang dari 100 cm
dan berhenti menarik pedal rem pada saat jarak 50 cm.
3. Pengukuran jarak menggunakan sensor PING sesuai dengan pengukuran
jarak sebenarnya,dengan persentase kesalahan rata-rata 1,72%.
5.2 Saran
Berikut adalah saran-saran penulis untuk siapa saja yang ingin merevisi
dan mengembangkan sistem ini.
1. Sensor jarak dapat digunakan lebih dari satu,untuk dapat mengukur jarak dari
berbagai sudut.
2. Untuk mendapatkan pengereman yang lebih baik,sebaiknya menggunakan
DAFTAR PUSTAKA
1. Andrianto, Heri. 2008.”Pemograman Mikrokontroler AVR ATMEGA16
Menggunakan Bahasa C(CodeVisionAVR)”. Bandung: Informatika
2. Atmel AVR. “Datasheet ATMega 16”.(http://www.atmel.com), USE
3. Wardana, Lingga. 2006. “Belajar Sendiri Mikrokontroler AVR Seri ATMega16, Simulasi Hardware dan Aplikasi”. Yogyakarta: Andi
4. www.wikipedia.org