Puji dan syukur kami panjatkan kehadirat Tuhan Yang Maha Esa atas segala
rahmat dan karunianya sehingga kami dapat menyelesaikan laporan pembuatan
rangkaian mikrokontroler. Laporan dalam bentuk makalah ini disusun untuk
memenuhi salah satu persyaratan dalam mengikuti mata kuliah Mikrokontroler.
Selama penulisan makalah ini kami banyak menemui hambatan dan kesulitan, namun
berkat doa dan bantuan dari berbagai pihak kami dapat menyelesaikan makalah ini
tepat pada waktunya. Semoga makalah ini bermanfaat untuk pembaca dan penulis
pada umunya. Dan untuk perbaikan makalah ini selanjutnya diharapkan kritik dan
saran
yang
membangun.
DAFTAR ISI
KATA PENGANTAR ........................................................................................ 1
DAFTAR ISI
.........................................................................................................2
BAB I
PENDAHULUAN ....................................................................................3
BAB II
BAB III
BAB V
PENGUJIAN
BAB V
PENUTUP
DAFTAR PUSTAKA
BAB I
PENDAHULUAN
1.1
Latar Belakang
1.2
Ruang Lingkup
Ruang lingkup yang akan penulis bahas meliputi sistem minimum yang
menggunakan mikrokontroler ATMega16 dan komponen pendukungnya.
1.4
Metode Penelitian
Dalam penyusunan laporan ini digunakan metode penelitian, yaitu:
a. Teori mikrokontroler dan komponen pendukungnya
b. Tahapan pembuatan sistem minimum
c. Memprogram serta mengintegrasikan mikrokontroler dengan seperangkat I / O
1.5
Sistematika Penulisan
BAB II
TEORI DASAR
2.1
Sistem Minimum
2.2
Perangkat I / O
Resistor
Potensio
LCD
Sensor suhu LM35
Sensor cahaya LDR
Push button
Motor
Driver Motor
MAX 232
2.3
Resistor
Resistor adalah komponen elektronik dua kutub yang didesain untuk
menahan arus listrik dengan memproduksi tegangan listrik di antara
6
V
R
Push-Button
Push-Button adalah komponen penukar mekanisme kerja dalam hal ini
adalah arus listrik. Di rangkaian yang kami buat komponen ini berfungsi
sebagai tombol reset untuk mengembalikan IC ke keadaan netral dengan
kata lain untuk menghapus program yang sudah dimasukka ke dalam IC.
XTal (Crystal)
XTAL merupakan komponen yang berfungsi untuk membangkitkan
frekuensi osilasi dengan stabilitas yang sangat tinggi. Frekuensi osilasi
didapat dari efek piezoelektrik. Bahan yang biasa digunakan untuk
7
Kapasitor Keramik
Kapasitor ini tidak memiliki polaritas sehingga aman jika dipasang
dengan arah apapun. Komponen ini hanya bekerja pada tegangan rendah
hingga tegangan 100 volt. Pada umumnya kapasitor jenis ini
mempunyai warna yang bermacam-macam dan berbentuk pipih. Pada
badan komponen terdapat nilai yang dikandungnya.
Regulator 5V
Regulator berfunsi untuk memfilter tegangan yang masuk tetap 5V
walaupun tegangan masukan dari DC supply lebih dari 5V.
Pin Header 2 X 5
Digunakan untuk menyambung antara minimum system dengan
perangkat I/O
Potensio
Mengatur kecepatan dari motor dengan terlebih dahulu masuk ADC dari
mikrokontroler
Driver motor
Pengendali arah dan kecepatan dari motor dengan menggunakan
transistor yang dirangkai secara H-Bridge
10
Serial 232
Menghubungkan komunikasi secara serial antara mikrokontroler dengan
perangkat luar menggunakan ic MAX232
11
BAB III
PEMBUATAN SISTEM MINIMUM
DAN PERANGKAT I/O
3.1
Port Supply
Regulator 5v
Port I/O
Rangkaian clock
Tombol reset
Int 0,1,2
Port RTC
Port RS232
13
14
3.2
Program pada IC
3.3
PORTB.6= D3(LCD)
PORTB.7= D4(LCD)
c. PORTC
PORTC.0= PB1
PORTC.1= PB2
PORTC.2= PB3
PORTC.3= PB4
PORTC.4= PB5
PORTC.5= PB6
PORTC.6= PB7
PORTC.7= PB8
Integrasi hardware antara mikrokontroler dan I/O
(Setting pada code wizard)
(Program)
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
16
Project :
Version :
Date : 6/23/2015
Author : tyery08
Company : embeeminded.blogspot.com
Comments:
Chip type
: ATmega16
Program type
: Application
AVR Core Clock frequency: 12.000000 MHz
Memory model
: Small
External RAM size
:0
Data Stack size
: 256
*****************************************************/
#include <mega16.h>
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
#define push_ok PINC.0
#define push_up PINC.1
#define push_down PINC.2
#define push_back PINC.3
#define ditekan
0
#define tidak_ditekan 1
unsigned char loop_kondisi=0;
eeprom unsigned char tampilan=1;
char vtegangan[30]; char hex[30];
unsigned char a, reff=150;
17
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
unsigned char loop_tampilan=0;
unsigned int ldr1,lm35,motor,motor1;
float tegang;
float tegang1;
float suhu;
float tegangmotor;
float tegangmotor1;
// Declare your global variables here
void serial()
{
while(1)
{
ldr1=read_adc(2);
tegang = ((float)ldr1*(0.01961));
lm35=read_adc(0);
tegang1 = ((float)lm35*(0.01961));
motor1=read_adc(1);
OCR0=motor1;
tegangmotor1 = ((float)motor1*(0.01961));
lcd_gotoxy(0,0);
sprintf(vtegangan,"Pot=%0.1f LDR=%0.1f",tegangmotor1,tegang); lcd_puts(vtegangan);delay_ms(200);
lcd_gotoxy(0,1);
sprintf(vtegangan,"LM35 = %0.2f ",tegang1); lcd_puts(vtegangan);delay_ms(200);
printf("#_%0.2f_%0.2f_%0.2f\r\n",tegangmotor1,tegang,tegang1);delay_ms(500);
}
}
void ldr()
{
while(1)
{
ldr1=read_adc(2);
tegang = ((float)ldr1*(0.01961));
lcd_gotoxy(0,0);
lcd_putsf("Pembacaan Sensor");
lcd_gotoxy(0,1); sprintf(vtegangan,"Nilai= %0.2f Volt",tegang); lcd_puts(vtegangan); delay_ms(200);
printf("#_0.00_%0.2f_0.00\r\n",tegang);
delay_ms(500);
}
}
void lm()
{
while(1)
{
18
lm35=read_adc(0);
tegang1 = ((float)lm35*(0.01961));
suhu = ((float)tegang1/320);
lcd_gotoxy(0,0);
lcd_putsf("Pembacaan Sensor");
lcd_gotoxy(0,1); sprintf(vtegangan,"Nilai= %0.2f Volt",tegang1); lcd_puts(vtegangan); delay_ms(200);
printf("#_0.00_0.00_%0.2f\r\n",tegang1);
delay_ms(500);
}
}
void motorka()
{
while(1)
{
motor=read_adc(1);
OCR0=motor;
tegangmotor = ((float)motor*(0.01961));
lcd_gotoxy(0,0); lcd_putsf("Motor CW");
lcd_gotoxy(0,1); sprintf(vtegangan,"Nilai= %0.2f Volt",tegangmotor); lcd_puts(vtegangan); delay_ms(200);
printf("#_%0.2f_0.00_0.00\r\n",tegangmotor);
delay_ms(500);
}
}
void motorki()
{
while(1)
{
motor1=read_adc(1);
OCR2=motor1;
tegangmotor1 = ((float)motor1*(0.01961));
lcd_gotoxy(0,0); lcd_putsf("Motor CCW");
lcd_gotoxy(0,1); sprintf(vtegangan,"Nilai= %0.2f Volt",tegangmotor1); lcd_puts(vtegangan); delay_ms(200);
printf("#_%0.2f_0.00_0.00\r\n",tegangmotor1);
delay_ms(500);
}
}
void menu()
{
menu_tampilan:
while(1)
{
lcd_clear();
lcd_gotoxy(0,0); lcd_putsf("Main Menu:");
if (push_ok==ditekan) while(push_ok==ditekan);
tampilan=1;
while(2)
{
if (push_ok==ditekan) while(push_ok==ditekan);
if(push_down==ditekan)
19
{
delay_ms(70);
if (push_down==ditekan) while(push_down==ditekan){}
if(++loop_tampilan>4) loop_tampilan=0;
}
if(push_up==ditekan)
{
delay_ms(70);
if (push_up==ditekan) while(push_up==ditekan){}
if(--loop_tampilan==255) loop_tampilan=4;
}
switch(loop_tampilan)
{
case 0: lcd_gotoxy(0,1); lcd_putsf("1.Motor CW "); break;
case 1: lcd_gotoxy(0,1); lcd_putsf("2.Motor CCW "); break;
case 2: lcd_gotoxy(0,1); lcd_putsf("3.Sensor LDR "); break;
case 3: lcd_gotoxy(0,1); lcd_putsf("4.Sensor LM35 "); break;
case 4: lcd_gotoxy(0,1); lcd_putsf("5.Read All "); break;
}
if(push_ok==ditekan)
{
delay_ms(100);
if (push_ok==ditekan)while(push_ok==ditekan);
delay_ms(100);
lcd_clear();
if(loop_tampilan==0)
{
motorka();
delay_ms(100);
lcd_clear();
}
if(loop_tampilan==1)
{
motorki();
delay_ms(100);
lcd_clear();
}
if(loop_tampilan==2)
{
ldr();
delay_ms(100);
lcd_clear();
}
if(loop_tampilan==3)
{
lm();
delay_ms(100);
lcd_clear();
}
if(loop_tampilan==4)
20
{
serial();
delay_ms(100);
lcd_clear();
}
}
}
}
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A 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
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
PORTB=0x00;
DDRB=0x08;
// Port C 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
PORTC=0xff;
DDRC=0xf8;
// Port D initialization
// Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0xff;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 10.800 kHz
// Mode: Fast PWM top=FFh
// OC0 output: Non-Inverted PWM
TCCR0=0x6D;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
21
BAB IV
PENGUJIAN
Pengujian tombol menu up, down, ok
22
23
Motor CCW
24
Sensor LDR
Sensor LM35
25
26
27
BAB V
PENUTUP
Kesimpulan
IC mikrokontroler adalah IC yang serba guna.Namun dalam bekerja fungsinya
adalah spesifik. Dalam hal ini IC mengatur semua kerjanya dan dibantu dengan
perangkat I/O untuk menyesuaikan kerja yang di inginkan.
28
DAFTAR PUSTAKA
http://demonstrations.wolfram.com/SpringReturnButton/
http://www.creativecommons.org
http://www.thebuilderssupply.com/Push-buttons-and-much-more_b_14.html
http://www.wikipedia.com
29