Oleh :
Ir. Azam Muzakhim Imammuddin, MT
NIP. 196705041994031004
HALAMAN PENGESAHAN
MODUL AJAR
1.
2.
3.
4.
5.
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Menyetujui,
Ketua Jurusan Teknik Elektro
Penulis Utama,
Mengetahui,
Direktur
Politeknik Negeri Malang
SURAT PERNYATAAN
Yang bertanda tangan di bawah ini:
Nama Lengkap
NIP
Bidang Ilmu
Pangkat/Golongan
Jabatan Fungsional
Jurusan/Program Studi
Perguruan Tinggi
:
:
:
:
:
:
:
2.
Yang membuat,
Mengetahui:
Direktur
KATA PENGANTAR
Segala puji dan syukur bagi Allah SWT, atas segala berkat rahmat dan
nikmat Nya dengan terselesaikannya modul ajar bidang ilmu Mikroprosesor
dengan judul MIKROKONTROLER DAN INTERFACING di Jurusan
Teknik Elektro program Studi Telekomunikasi.
Dan pada kesempatan ini tak lupa kami sampaikan terima kasih kepada:
Penulis
DAFTAR ISI
halaman
KATA PENGANTAR
DAFTAR ISI
ii
DAFTAR TABEL
iii
DAFTAR GAMBAR
iv
BAB I
DASAR MIKROKONTROLER
1.1. PENDAHULUAN
1.3. BAHASA C
BAB II
1.3.2. INDENTIFIERS
1.3.3. KONSTANTA
10
1.3.5. OPERATOR
10
12
INPUT-OUTPUT
17
17
23
29
34
34
39
3.3. LM35
40
50
52
61
DAFTAR PUSTAKA
70
DAFTAR TABEL
Halaman
Tabel 1.1. Fungsi Alternatif Pin-Pin Port B
10
11
11
11
11
12
26
26
27
27
31
36
Tabel 3.2. Kanal Input ADC untuk jenis Single Ended Input
37
38
56
57
57
58
DAFTAR GAMBAR
Halaman
Gambar 1.1. Blok Diagram ATMega 16
12
13
14
14
15
18
19
20
21
22
23
23
24
25
28
30
30
32
34
36
36
37
37
41
41
Halaman
Gambar 3.8. Pengendalian Suhu Tangki dengan ATMega 16
42
43
45
47
51
52
52
54
55
57
62
62
62
64
65
67
BAB I
DASAR MIKROKONTROLER
Capaian Pembelajaran:
Setelah membaca dan mengkaji bab ini, pembaca akan mampu:
Menjelaskan tentang Mikrokontroler ATMega16 dan fasilitas-fasilitas yang
dimiliknya;
Menjelaskan stuktur dasar bahasa pemrograman C untuk pemrograman
ATMega16
1.1.
PENDAHULUAN
Mikrokontroler adalah merupakan suatu chip tunggal yang berisi
mikroprosesor dan memori program yang biasanya bersifat Read Only Memory
(ROM), memori serbaguna atau biasa disebut Random Access Memory (RAM),
Unit Input-Output, Unit Timer/Counter dan beberapa fasilitas yang lain seperti
Analog to Digital Converter (ADC), Electrical Eresable Programmable ROM
(EEPROM) dan lain-lain. Mikrokontroler dapat juga dianggap mikrokomputer,
hal ini karena hanya dengan satu chip/Integrated Circuit(IC) sudah memiliki unitunit yang setara dengan semua komputer.
Salah satu perusahaan yang mengembangkan mikrokontroler adalah Atmel
dengan jenis mikrokontroler AVR (Alf and Vegards Risc prosesor) yang
dibangun dengan arsitektur Reduced Intruction Set Computing (RISC) 8 bit yang
mengemas semua instruksi dalam kode 16-bit dengan sebagian besar instruksi
dikerjakan/dieksekusi dalam 1 (satu) siklus clock. Dan bila dibandingkan dengan
MCS51 untuk mengerjakan satu instruksi membutuhkan 12 siklus clock. Hal ini
terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang
berbeda. AVR berteknologi RISC (Reduced Instruction Set Computing),
sedangkan seri MCS 51 berteknologi CISC (Complex Instruction Set Computing).
Atmel mengelompokkan AVR menjadi 4 keluarga yaitu keluarga ATtiny,
keluarga AT90Sxx, keluarga ATMega dan AT86RFxx. Yang membedakan antara
kelompok adalah kapasitas memori, kemampuan peripheral, dan fungsinya.
Sedangkan dari segi arsitektur dan instruksi yang digunakan hampir sama. Dan
yang memiliki fasilitas yang lengkap adalah keluarga ATMega. Salah satu yang
termasuk dalam keluarga ATMega adalah ATMega 16.
1.2.
MIKROKONTROLER ATMEGA 16
ATMega 16 adalah sebuah mikrokontroler CMOS 8 bit yang berdaya
dihubungkan
dengan
Aritmatika
Logika
Unit
(ALU),
yang
memungkinkan dua buah register yang independen untuk diakses dalam satu
instruksi dieksekusi dalam satu siklus clock. Yang dihasilkan dari arsitektur AVR
adalah kode yang lebih efisien dengan capaian throughputs hingga sepuluh kali
lebih cepat dari konvensional CISC mikrokontroler.
ATmega16 ini menyediakan beberapa fitur sebagai berikut: 16 Kbyte InSystem Programmable Flash, Memori program dengan kemampuan Baca-TulisSementara, 512 byte EEPROM, 1 Kbyte SRAM, 32 jalur I/O, 32 register kerja,
antarmuka JTAG untuk Boundaryscan, dukungan dan pemrograman On-chip
Debugging, tiga Timer / Counter fleksibel dengan mode perbandingan, Interupsi
Internal dan Eksternal, sebuah programmable serial USART, Dua-kawat Serial
Interface
Asynchronous serial Receiver and Transmitter) yang dapat diprogram,8 kanal 10bit ADC, 4 saluran PWM (Pulse Width Modulation), Master Slave (SPI) Serial
Interface dan Watchdog Timer yang dapat diprogram dengan osilator internal,
port serial SPI, dan enam pilihan mode daya rendah.
Mikrokontroler ini diproduksi dengan menggunakan teknologi nonvolatile
memori Atmel yang canggih. Dilengkapi dengan OnChip ISP (In System
Programming) Flash memori program yang memungkinkan untuk sistem
diprogram ulang melalui interface SPI serial oleh seorang programmer atau
dengan program Boot On-chip yang berjalan pada inti AVR. Atau melalui
10
11
- GND
Ground
- Port A (PA7 -
PA0)
Converter.
Port A juga berfungsi sebagai 8-bit bidirectional port I / O,
jika A/D Converter tidak digunakan. pin port juga
menyediakan internal pull-up resistor yang dipilih untuk
setiap bitnya.
- Port B (PB7
PB0)
12
- RESET
- XTAL1
- XTAL2
- AVCC
- AREF
Fungsi Alternatif
SCK (SPI Bus Serial Clock)
MISO (SPI Bus Master Input/Slave Output)
MOSI (SPI Bus Master Output/Slave Input)
SS (SPI Slave Select Input)
AIN1 (Analog Comparator Negative Input)
OC0 (Timer/Counter0 Output Compare Match Output)
AIN0 (Analog Comparator Positive Input)
INT2 (Input Eksternal Interupsi 2)
T1 (Timer/Counter1 External Counter Input)
T0 (Timer/Counter0 External Counter Input)
XCK (USART External Clock Input/Output)
13
Fungsi Alternatif
TOSC2 (Timer Oscillator Pin 2)
TOSC1 (Timer Oscillator Pin 1)
TDI (JTAG Test Data In)
TDO (JTAG Test Data Out)
TMS (JTAG Test Mode Select)
TCK (JTAG Test Clock)
SDA (Two-wire Serial Bus Data Input/Output Line)
SCL (Two-wire Serial Bus Clock Line)
Fungsi Alternatif
PD7
PD6
PD5
PD4
PD3
PD2
PD1
PD0
14
Boot lock bits yang digunakan untuk melindungi software yang telah ada di dalam
ATMega 16. Gambar 1.3 menunjukkan peta memori program dalam ATMega 16.
15
1.3.
BAHASA C
Pada saat ini sudah dikembangkan bahwa untuk membuat pemrograman
16
// PB = dataout
delay_ms(100);
dataout=dataout+1;
// dataout ditambah 1;
}
}
1.3.2. INDENTIFIERS
Dalam pemrogramaman bahasa C sangat perlu sekali untuk diketahui
dalam pemberiah nama atau Identifier yang diberikan pada variabel, fungsi, label
atau objek lain. Dalam pemberian nama dapat mengandung huruf yaitu besar A
sampai Z dan huruf kecil a sampai z dan angka 0 sampai 9 dan karakter ( _ ).
Nama yang digunakan bersifat Case sensitive yaitu membedakan antara huruf
besar dan huruf kecil. Dan untuk nama dapat mencapai maksimal 32 karakter.
1.3.3. KONSTANTA
Dalam pemrogramam bahasa C ada beberapa cara dalam penulisan
konstanta yaitu sebagai berikut: Penulisan untuk Integer dan long integer ditulis
dalam bentuk decimal (123), bila ditulis dalam bentuk biner maka harus didahului
0b seperti 0b10101001, dan jika ditulis dalam bentuk hexadecimal maka harus
didahului 0x seperti 0xA9, sedangkan untuk konstanta karakter harus dilingkungi
oleh tanda kutip seperti a.
17
Ukuran (Bit)
Range
0,1 (Tipe data bit hanya dapat
Bit
Char
-128 to 127
Unsigned char
0 to 255
Signed char
-128 to 127
Int
16
-32768 to 32767
Short int
16
-32768 to 32767
Unsigned int
16
0 to 65535
Signed int
16
-32768 to 32767
Long int
32
-2147483648 to 214783647
32
0 to 4294967295
32
-2147483648 to 214783647
Float
32
1.175e-38 to 3.402e38
Double
32
1.175e-38 to 3.402e38
1.3.5. OPERATOR
Dalam pemrograman operator merupakan intruksi khusus yang digunakan
untuk variable. Adab beberapa yang sering digunakan yaitu operator kondisi atau
pembanding seperti yang ditunjukan dalam Tabel 1.5, operator atirmatika
ditunjukkan dalam Tabel 1.6, operator logika ditunjukkan dalam Tabel 1.7,
operator bitwise ditunjukkan dalam Tabel 1.8, operator Assignment ditunjukkan
dalam Tabel 1.9.
18
Keterangan
<
Lebih kecil
<=
>
Lebih besar
>=
==
Sama dengan
!=
Keterangan
Penjumlahan
Pengurangan
Perkalian
Pembagian
Keterangan
Boolean NOT
Boolean AND
Boolean OR
!
&&
||
Keterangan
Komplemen Bitwise
&
Bitwise NOT
Bitwise OR
Bitwise Exclusive OR
>>
Right Shift
<<
Left Shift
19
Keterangan
+=
-=
*=
/=
%=
<< =
>> =
&=
^=
\=
Y
A >30
P B =0xF F
20
A>30
T
P B = 0 x0 0
P B = 0 xF F
21
Y
P B =0xFF
A =P A
A >30
T
P B = 0 x ff
A = P A
Y
A
> 3 0
22
// PB = 0xff
// A= PORTA
I= 1
Y
P B = d a ta o u t
D a ta o u t+ +
i+ +
I< 1 0
// PB = dataout
// dataout=dataout+1
Contoh Soal:
23
24
BAB II
INPUT OUTPUT
Capaian Pembelajaran:
Setelah membaca dan mengkaji bab ini, pembaca akan mampu:
25
aktif dan untuk menonatifkan resistor pull-up, PORTxn harus ditulis logika nol
atau pin harus dikonfigurasi sebagai pin output. Pin port adalah tri stated ketika
kondisi reset dan bahkan jika tidak ada clock yang bekerja.
Gambar 2.1 menunjukkan register-register PORTA dan untuk registerregister PORT yang lain sama saja hanya dengan mengganti huruf A menjadi
huruf B, C dan D karena memiliki model konfigurasi yang sama dengan PORTA
tetapi memiliki alamat yang berbeda.
PINx, merupakan perintah yang digunakan untuk membaca data dari Port
x, untuk x A, B, C dan D.
Contoh:
26
Datain = PINA; // perintah untuk membaca data dari Port A dan hasilnya
disimpan di variable Datain.
-
Contoh Soal 1.
Buat Algoritma, flowcart dan program untuk membaca Port A dan hasilnya
ditampilkan di Port C seperti pada Gambar 2.2
27
Jawab:
Algoritma:
1.
2.
3.
Dan ulangi ke 2
Flowcart:
//PA = Input
DDRC = 0xff ;
//PC = Output
while (1)
//selalu benar
{
datain = PINA ;
PORTC = datain ;
}
}
28
Contoh Soal 2.
Dari Gambar 2.2, buat flowcart dan program bila nilai dari Port A kurang dari 80
maka Port C = 0x00 dan lebih maka Port C = 0xff.
Jawab:
Flowcart:
{ PORTC = 0X00;}
}}
29
Latihan 1.
Dari Gambar 2.2, buat flowcart dan program dengan ketentuan-ketentuan sebagai
berikut:
1.
Bila nilai 0 < Port A < 40 maka Port C = 0000 0000B = 0x00
2.
Bila nilai 40 <= Port A < 80 maka Port C = 0000 1111B = 0x0f
3.
Bila nilai 80 <= Port A < 100 maka Port C = 1111 0000B = 0xf0
4.
Bila nilai Port A >= 100 maka Port C = 1111 1111B = 0xff
Flowchart :
30
(a)
(b)
31
Sensor 1/S1
PA0
Sensor 2/S2
PA1
Sensor 3/S3
PA2
Sensor 4/S4
PC0
Motor
KIRI
PC1
Motor
KANAN
PA3
33
Dari Gambar 2.9 ada ketentuan seperti yang ditunjukkan dalam Tabel 2.1.
Tabel 2.1. Ketentuan Posisi Sensor-Sensor Robot Line Follower
S4
S3
S2
S1
ROBOT
Motor
Motor
KANAN
KIRI
OFF
ON
ON
OFF
MAJU
ON
ON
ON
ON
OFF
OFF
BELOK
OFF
ON
OFF
ON
KANAN
ON
OFF OFF
OFF
BELOK
KANAN
OFF OFF
ON
ON
BELOK KIRI
ON
OFF
ON
BELOK KIRI
ON
OFF
OFF
BERHENTI
OFF
OFF
Karena rangkaian yang digunakan sebagai sensor seperti Gambar 2.7 maka
hubungan antara sensor S1, S2, S3 dan S4 dan PA0, PA1, PA2 dan PA3
ditunjukkan dalam Tabel 2.2. Sedangkan untuk hubungan pengendalian motor dan
PC0 dan PC1 ditunjukkan dalam Tabel 2.3. Sehingga hubungan antara Port A dan
Port C ditunjukkan dalam Tabel 2.4.
S3
S2
S1
OFF
ON
ON
OFF
0x09
ON
ON
OFF OFF
0x03
ON
0x07
OFF OFF
Nilai Hex
ON
ON
0x0c
ON
0x0e
0x0f
34
ROBOT
Motor KANAN
Motor KIRI
PC1
PC0
MAJU
ON
ON
BELOK KANAN
OFF
ON
BELOK KANAN
OFF
ON
BELOK KIRI
ON
OFF
BELOK KIRI
ON
OFF
BERHENTI
OFF
OFF
Nilai Hex
Desimal
PC1
PC0
0x09
0x03
0x07
0x0c
12
0x0e
14
0x0f
15
35
// PA input
DDRC = 0xff;
// PC output
while (1)
{
Data_in = PINA;
if(Data_in = 9)
{
PORTC.0 = 1;
PORTC.1 = 1;
36
}
if(Data_in = 3)
{
PORTC.0 = 0;
PORTC.1 = 1;
}
if(Data_in = 12)
{
PORTC.0 = 1;
PORTC.1 = 0;
}
if(Data_in =15)
{
PORTC.0 = 0;
PORTC.1 = 0;
}
if(Data_in = 7)
{
PORTC.0 = 0;
PORTC.1 = 1;
}
if(Data_in = 14)
{
PORTC.0 = 1;
PORTC.1 = 0;
}
}}
2.3. TAMPILAN SEVEN SEGMEN
Tampilan seven segmen merupakan sebuah tampilan yang terdiri dari
tujuh segmen LED yang disusun untuk menampilkan angka 0 sampai 9 Seperti
yang ditunjukkan dalam Gambar 2.11. Dan untuk setiap segmen diberi kode
dengan huruf a, b, c, d, e, f, g dan d.p. Ada dua jenis seven segmen yaitu common
37
anoda (CA) dan common katoda (CC). Untuk common anoda (CA), karena yang
dijadikan satu adalah anoda maka CA dihubungkan dengan Vcc, sehingga untuk
menyalakan segmen maka pin dari segemen tersebut diberi logika 0 atau 0 Volt,
sedang untuk common katode (CC), karena yang dijadikan satu adalah Ground
maka untuk menyalakan segmen pin dari segmen tersebut diberi logika 1 atau 5
Volt.
Gambar 2.12. Blok Diagram Hubungan antara Port C dengan Seven Segmen
38
Jawab:
Tampilan seven segmen yang digunakan jenis Common Anoda maka untuk
membuat segmen menyala adalah dengan memberikan logika 0 dan untuk
mematikan segmen diberi logika 1, sehingga untuk menampilkan angka 0 sampai
9 dibutuhkan kombinasi logika 0 dan 1 dari setiap segmen yang dihubungkan
dengan Port C. Dan hasil dari kombinasi nilai Port C untuk menampilkan seven
segmen ditunjukkan dalam Tabel 2.5.
Tabel 2.5. Nilai Port C untuk menampilkan angka 0 sampai 9
PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
Tampilan
Nilai Hex
dot
PC
0xC0
0xF9
0xA4
0xB0
0x99
0x92
0x82
0xF8
0x80
0x90
39
# include <delay.h>
while (1)
{
PORTC = 0xC0 ;
// tampil angka 0
delay_ms (500) ;
// tunda 500 ms
PORTC = 0xF9 ;
// tampil angka 1
delay_ms (500) ;
PORTC = 0xA4 ;
// tampil angka 2
delay_ms (500) ;
PORTC = 0xB0 ;
// tampil angka 3
delay_ms (500) ;
PORTC = 0x99 ;
// tampil angka 4
40
delay_ms (500) ;
PORTC = 0x92 ;
// tampil angka 5
delay_ms (500) ;
PORTC = 0x82 ;
// tampil angka 6
delay_ms (500) ;
PORTC = 0xF8 ;
// tampil angka 7
delay_ms (500) ;
PORTC = 0z80 ;
// tampil angka 8
delay_ms (500) ;
PORTC = 0x90 ;
// tampil angka 9
delay_ms (500) ;
}
}
Latihan 2.
Dengan menggunakan Gambar 2.11 buat flowcart dan program untuk
menampilkan NIM di tampilan seven segmen.
41
BAB III
ANALOG TO DIGITAL CONVERTER (ADC)
Capaian Pembelajaran:
Setelah membaca dan mengkaji bab ini, pembaca akan mampu:
Menyusun algoritma, flowcart dan program dengan memanfaatkan unit Analog
to Digital Convert dan unit input-output ATMega16.
42
43
karena di dalam register tersebut ada bit-bit yang digunakan untuk memilih
saluran dari input ADC, untuk bit-bit dari ADMUX ditunjukkan dalam
Gambar 3.2.
REF0 dan REF1 (Reference) adalah bit-bit yang digunakan untuk memilih
tegangan referensi dari ADC dan table 3.1 menunjukkan beberapa
tegangan referensi yang dapat digunakan.
Tabel 3.1. Pilihan Tegangan Referensi ADC (ATMega16,2010;217)
REFS1
REFS0
Tidak digunakan
ADLAR (ADC Left Adjust Result) adalah bit yang digunakan untuk
menentukan format data hasil konversi ADC. Bila ADLAR = 0 maka hasil
konversi 10 bit disimpan dalam format: 2 bit disimpan di ADCH dan 8 bit
di ADCL seperti ditunjukkan dalam Gambar 3.3, sedangkan bila ADLAR
= 1 maka hasil konversi 10 bit disimpan dalam format: 8 bit disimpan di
ADCH dan 2 bit di ADCL seperti ditunjukkan dalam Gambar 3.4.
44
MUX4, MUX3, MUX2, MUX1 dan MUX0, adalah bit-bit yang digunakan
untuk memilih input analog yang akan dikonversi oleh ADC. Kombinasi
MUX4 sampai MUX0 untuk jenis input ADC dengan acuan Ground
(single Ended Input) ditunjukan dalam table 3.2.
Tabel 3.2. Kanal Input ADC untuk jenis Single Ended Input
MUX4 MUX3 MUX2 MUX1 MUX0
Nilai
Pilihan Input
ADC
ADC0
ADC1
ADC2
ADC3
ADC4
ADC5
ADC6
ADC7
45
ADEN atau ADC Enable, merupakan bit untuk mengaktifkan ADC, bila
ADEN = 1 maka ADC aktif dan Port A tidak aktif, bila ADEN = 0 maka
ADC tidak aktif dan Port A aktif.
ADSC atau ADC Start Convertion, merupakan bit yang digunakan untuk
memberikan perintah mulai konversi, bila ADSC = 1, maka ADC mulai
bekerja untuk mengkonversi input analog dan akan berlogika 0 bila selesai
konversi.
ADATE atau ADC Auto Trigger Enable, merupakan bit yang digunakan
untuk mengendalikan aktivasi picu otomatis. Jika ADATE = 1 maka
konversi ADC akan dimulai pada saat tepi positif pada sinyal trigger yang
digunakan.
ADIF atau ADC Interrupt Flag, merupakan bit penanda akhir konversi
ADC. Jika ADIF = 1 maka konversi ADC pada suatu saluran telah selesai
dan siap diakses.
ADPS2, ADPS1 dan ADPS0 atau ADC Prescaler Select, merupakan bitbit yang digunakan untuk mengatur frukeunsi clock ADC dan Tabel 3.3
merupakan pemilihan frekuensi clok ADC dengan frekuansi osilator (fosc)
dari mikrokontroler ATMega 16 digunakan sebagai sumber clock dan nilai
ADPSn digunakan untuk memilih pembagi frekuansi.
Tabel 3.3. Frekuensi clock ADC(ATMega16,2010;220)
ADPS2
0
0
0
0
1
1
1
1
ADPS1
0
0
1
1
0
0
1
1
ADPS0
0
1
0
1
0
1
0
1
46
Clock ADC
fosc /2
fosc /2
fosc /4
fosc /8
fosc /16
fosc /32
fosc /64
fosc 128
VREF
2n 1
VREF = ss x (2n-1)
Step size digunakan oleh ADC untuk mendapatkan nilai data digital hasil
konversi dengan rumus:
Data _ Digital
Vin
ss
Contoh .
-
Bila temperature ruangan 27oC berapa data digital hasil konversi ADC?
Jawab:
Besar tegangan input ADC atau Vin = 27 x 10mV = 270 mV
Maka Data Digital = 270mV/10mV = 27 atau 0x1B
47
b. Memilih saluran ADC yang akan digunakan sebagai input tegangan analog
c. Memilih jumlah bit data digital hasil konnversi
d. Mengaktifkan ADC dan Memilih frekuensi clock ADC
Langkah a, b, c dan d merupakan langkah-langkah untuk inisialisasi ADC.
Contoh:
Bila dipilih VREF = 2,56 Volt atau step size = 10 mV, saluran ADC yang
digunakan ADC0, hasil data digital 8 bit, ADC aktif dan frekuensi clock ADC =
fosc/8, berapa nilai register ADMUX dan ADCSRA?
Jawab:
Dengan table 3.1, 3.2 dan 3.3 digunakan sebagai acuan maka:
= 0xE0
Keterangan: untuk hasil data digital 8 bit maka DLAR = 1 dan disimpan di ADCH
= 0x83
Murah
Contoh Soal1.
Buat Algoritma, flowcart dan program untuk pengaturan suhu tangki pada
Gambar 3.8 pada suhu 45oC, dan besar suhu ditampilkan ke PB untuk nilai
puluhan dan PC untuk nilai satuan. IC LM35 digunakan sebagai sensor suhu.
49
= 0xE0
ADMUX = 0xE0
Sedangkan untuk frekuensi clock ADC dipilih fosc/16 maka:
ADCSRA = 0x84
50
= 0x84
// bila > 45
{
PORTC.0=0;
// off pemanas
}
else {
PORTC.0=1;
// on pemanas
}
Pul = (dataADC %100)/10;
PORTB = sevensegmen[Pul];
}
}
52
Contoh Soal 2.
Pada Gambar 3.10 sebuah sensor tekanan memiliki sensivitas 20 mV/N
dihubungkan dengan PA7. Dan PC0 sampai PC5 digunakan sebagai indicator
besarnya tekanan sebagai berikut:
-
53
= 0x67
ADMUX = 0x67
Sedangkan untuk frekuensi clock ADC dipilih fosc/16 maka:
= 0x84
ADCSRA = 0x84
2. PC yang dihubungkan dengan LED indicator besarnya tekanan maka PC
sebagai output, DDRC = 0xff.
3. Start Konversi ADC dengan memberikan logika 1 di bit ADSC register
ADCSRA
4. Tunggu apakah sudah selesai konversi dengan mengecek bit ADIF register
ADCSRA apakah sudah bernilai 1? Kalau belum tunggu sampai bernilai 1.
5. simpan data hasil konversi ADCH ke dataADC
6. Bandingkan dataADC dengan 40, bila lebih besar maka PC0 = 1, bila
tidak PC0 =0
7. Bandingkan dataADC dengan 80, bila lebih besar maka PC1 = 1, bila
tidak PC1 =0
8. Bandingkan dataADC dengan 120, bila lebih besar maka PC2 = 1, bila
tidak PC2 =0
9. Bandingkan dataADC dengan 160, bila lebih besar maka PC3 = 1, bila
tidak PC3 =0
10. Bandingkan dataADC dengan 200, bila lebih besar maka PC4 = 1, bila
tidak PC4 =0
11. Bandingkan dataADC dengan 240, bila lebih besar maka PC5 = 1, bila
tidak PC5 =0
12. Ulangi ke nomor 3
Dari algoritma 1 sampai 12 maka dibuat flowcart seperti yang ditunjukkan
dalam Gambar 3.10 sebagai berikut:
Flowchart:
Flowcart dari algoritma 1 sampai 12 ditunjukkan dalam Gambar 3.11
54
55
ADMUX=0X67;
ADCSRA=0X83;
DDRC=0XFF;
while(1)
{
ADCSRA= ADSC|0X40;
while(ADCSRA&0X10=0);
dataADC=ADCH;
if (dataADC<250)
{
PORTC.0=1;
}
else
{
PORTC.0=0;
}
if (dataADC<200)
{
PORTC.1=1;
}
Else
{
PORTC.1=0;
}
if (dataADC<150)
{
PORTC.2=1;
}
else
{
PORTC.2=0;
}
if (dataADC<100)
{
PORTC.3=1;
56
}
else
{
PORTC.3=0;
}
if (dataADC<20)
{
PORTC.4=1;
}
else
{
PORTC.4=0;
}
ADCSRA.4=1;
}
}
Latihan 1:
Buat Blok Diagram, algoritma, Flowcart dan Program untuk membandingkan dua
buah sensor suhu LM35, sensor 1 (S1) dihubungkan dengan ADC0 dan sensor 2
(S2) dihubungkan dengan ADC7, bila suhu S1> S2 maka Led di Port C akan
menyala semua, bila S1<S2 maka led di Port C akan mati semua, dan bila S1=S2
maka led akan menyala separuh saja.
57
BAB IV
UNIVERSAL SYNCHRONOUS AND ASYNCHRONOUS
SERIAL RECEIVER TRANSMITTER (USART)
Capaian Pembelajaran:
Setelah membaca dan mengkaji bab ini, pembaca akan mampu:
Menyusun algoritma, flowcart dan program dengan memanfaatkan unit
USART, unit ADC dan unit input-output ATMega16 untuk proses telemetri
dan telekontrol.
4.1. USART DALAM AT MEGA 16
Universal Synchronous dan Asynchronous dan Transmitter (USART)
adalah perangkat komunikasi serial yang sangat fleksibel. Fitur-fitur utama adalah
sebagai berikut:
Mendukung frame serial dengan 5, 6, 7, 8, atau 9 bit data dan 1 atau 2 bit
stop
Filter terhadap gangguan termasuk deteksi bit start palsu dan low pass
filter digital
Blok diagram sederhana dari USART ditunjukkan pada Gambar 4.1 dan untuk
Register I/O dan pin I/O yang dapat diakses ditampilkan dengan huruf tebal
seperti Register UCSRA, UCSRB, UCSRC, UDR dan UBRR, serta pin RxD,
TxD dan XCK.
58
pemeriksa paritas penerima (receiver), logika kontrol, Shift Register dan dua
tingkat receive buffer (UDR). Receiver mendukung format frame yang sama
seperti transmitter, dan dapat mendeteksi kesalahan frame, overrun data dan
kesalahan paritas.
Untuk dapat menggunakan USART, perlu diketahui dari fungsi-fungsi
masing-masing register yang ada di dalam Blok diagram pada Gambar 4.1.
Register-register tersebut sebagai berikut:
1. UDR atau USART Data Register
60
61
62
Bit ini digunakan untuk memilih mode operasi komunikasi serial, bila
diberi logika 0 maka mode Asikron dan bila diberi logika 1satu maka
mode Sinkron
63
64
Untuk perhitungan Baud Rate dan nilai register UBRR ditunjukkan dalam
tabel 4.4.
Tabel 4.4. Perhitungan Baud Rate dan nilai Register UBRR
(ATMega16,2010;147)
Catatan:
1. Baud rate didefinisikan sebagai kecepatan transfer dalam bit per detik (bps).
2. BAUD = Baud rate
3. fosc = Frekuensi Osilator Clock Sistem
66
kecepatan ganda, format frame data: 8 bit per karakter, tanpa patitas, 1 bit stop,
menggunakan mode Asinkron, dapat menerima dan mengirim secara serial.
Jawab:
-
Pada UCSRA ada dua bit yang diisi yaitu U2X dan MPCM, karena tidak
digandakan kecepatannya dan hanya mode single prosesor maka nilai
UCSRA adalah:
0
-
= 0x00
Pada UCSRB ada tiga bit yang diisi yaitu RXEN, TXEN dan UCSZ2, dari
persoalnya ATMega dapat menerima dan mengirim menggunakan serial
dan 8 bit per karakter maka RXEN = 1, TXEN = 1 dan dengan acuan
Tabel 4.2 maka UCSZ2 = 0 sehingga nilai UCSRB adalah:
0
-
= 0x18
Pada UCSRC semua bit yang diisi, URSEL = 1 karena mengisi UCSRA,
UMSEL = 0 karena menggunakan mode asikron, UPM1 =0 dan UPM0 = 0
karena tidak menggunakan paritas, USBS = 0 karena menggunakan 1 bit
stop, dengan acuan Tabel 4.2 maka UCZS1 = 1 dan UCZS0 = 1 karena
frame data 8 bit per karakter, UCPOL = 0 karena menggunakan mode
asinkron sehingga UCSRC adalah :
1
-
= 0x86
67
UCSRC = 0x86
UBRRH = 0x00
UBRRL = 0x47
Contoh Soal 1:
Buat algoritma, flowcart dan program untuk dua buah ATMega 16 yang
berkomunikasi secara Serial seperti Gambar 4.7.
ADC0
7Segmen
Puluhan
PB
TxD
RxD
TxD
RxD
7Segmen
Satuan
LM35
PC
Master
Slave
Jawab:
Algoritman MCU Master:
1. Inisialisasi USART: frekuensi osilator sebesar 11.0592 MHz dengan
kecepatan 9600 bps tanpa kecepatan ganda, format frame data: 8 bit per
karakter, tanpa patitas, 1 bit stop, menggunakan mode Asinkron, dapat
menerima. Sehingga:
UCSRA = 0x00
UCSRB = 0x10
UCSRC = 0x86
UBRRH = 0x00
UBRRL = 0x47
2. Inisialisasi PB output, PC output
DDRB= 0xff
DDRC=0xff
3.
68
69
70
UCSRB = 0x08;
PORTB = Tabel7segmen[Pul];
}
}
71
while(1)
{
ADCSRA= ADSCRA|0x40; // memberikan sinyal Start ADC ADSC =1
while (ADCSRA&0x10==0); // Cek ADIF = 0, tunggu selama =0
UDR=ADCH; // ambil data hasil konversi
ADCSRA=ADCSRA|0x10;
while(UCSRA&0x40==0);
}
}
Contoh Soal 2:
Buat algoritma, flowcart dan program di MCU ATMega16 untuk komunikasi
serial antara PC dan MCU ATMega16, PC sebagai Master, MCU ATMega 16
sebagai Slave dengan skema hubungan antara PC dan MCU ATMega 16
diperlukan converter TTL ke RS 232 seperti yang ditunjukkan dalam Gambar
4.10, sedangkan untuk blok diagram rangkaian ditunjukkan dalam Gambar 4.11.
- Dengan kecepatan 9600 bps, format frame data: 8 bit per karakter, tanpa
patitas, 1 bit stop, menggunakan mode Asinkron.
72
Bila PC mengirim huruf A maka MCU akan mengambil data suhu LM35
melalui ADC7 dan dikirim ke PC
TTL ke
RS 232
PC
MCU ATMega16
PC1
M2
PC0
ADC7
M2
LM35
73
UCSRA = 0x00
UCSRB = 0x18
UCSRC = 0x86
UBRRH = 0x00
UBRRL = 0x47
2. untuk ADC yang digunakan ADC7, VREF = 2,56 Volt atau step size
10mV karena sensivitas LM35 sebesar 10mV/oC, frekuensi ADC sebesar
fosc/16 sehingga :
ADMUX = 0xE7
ADCSRA = 0x84
3. untuk PC karena digunakan sebagai pengendali Motor 1 (M1) dan Motor 2
(M2) maka PC output sehingga:
DDRC = 0xff;
4. Tunggu selama RXC = 0
5. Ambil UDR simpan di dataRX
6. Bila dataRX =A maka
o Start ADC/ADSC =1
o Tunggu selama ADIF =0
o Ambil data ADCH kirim ke UDR
o Tunggu selama TXC =0
o ADIF = 1
7. Bila dataRX =B maka PC0 =1, Motor 1 (M1) berjalan
8. Bila dataRX =C maka PC1 =1, Motor 2 (M2) berjalan
9. Bila dataRX =D maka PC0 =0, Motor 1 (M1) berhenti
10. Bila dataRX =D maka PC1 =0, Motor 2 (M2) berhenti
11. Ulangi ke 4
74
DDRC=0xFF; // init PC
while(1)
{
while(UCSRA.7==0); // tunggu selama RXC =0
dataRX=UDR;
if(dataRX==A)
{
ADCSRA= ADSCRA|0x40; // memberikan sinyal Start ADC ADSC =1
while (ADCSRA&0x10==0); // Cek ADIF = 0, tunggu selama =0
UDR=ADCH; // ambil data hasil konversi
while(UCSRA.6==0); // tunggu selama TXC=0
ADCSRA.4=1; // ADIF=1
}
if(dataRX==B)
{
PORTC.0 =1; // M1 ON
}
if(dataRX==C)
{
PORTC.1 =1; // M2 ON
}
if(dataRX==D)
{
PORTC.0 =0; // M1 OFF
76
}
if(dataRX==E)
{
PORTC.1 =0; // M2 OFF
} }}
Latihan 1:
Buat blok diagram. algoritma, flowcart dan program untuk MCU Master bila PC
diganti dengan MCU Master tersebut dengan ketentuan sebagai berikut:
-
Latihan 2:
Buat Sistem telemetri atau telekontrol antara dua MCU Master dan Slave atau
antara PC dan MCU dari permasalahan yang ada di sekitar kita.
77
DAFTAR PUSTAKA
Andrianto,
LM35/LM35A/LM35C/LM35CA/LM35D,
Datasheet,
1994,
Precision
78
GLOSARIUM
ADC
ALU
AT
AVR
Baud rate
Bit
Boot
Byte
CA
common anoda
anoda yang disatukan
CC
common katoda
katoda yang disatukan
Chip
CISC
CMOS
Complementary metaloxidesemiconductor
Salah satu jenis bahan pembuatan IC
Counter
Penghitung
EEPROM
Flash
fosc
header
Kepala program
Interrupt
ISP
In System Programming
LED
Main
Program utama
79
Master-Slave
MCS
Microcontroller Sistem
MHz
MIPS
OnChip
Tersedia di dalam IC
Port
Jalur input-ouput
Prescaler
Pembagi frekuensi
PWM
RAM
RISC
ROM
Sensor
SPI
SRAM
Static RAM
Step size
Timer
Pewaktu
80