Makala h

21
1. Teori RS-232 dan RS-485 RS-232 Merupakan standard interface untuk komunikasi asinkron yang menghubungkan Data Terminal Equipment (DTE) dengan Data Communication Equipment (DCE) atau dapat juga menghubungkan antara DTE dengan DTE. Data Terminal Equipment (DTE) merupakan perangkat yang dilengkapi Universal Asynchronous Receiver and Transmitter (UART) atau Universal Asynchronous Synchronous Receiver and Transmitter (USART) yang dapat mengubah data paralel ke data serial atau sebaliknya. Perangkat DTE ini pada komputer PC disebut Asynchronous Communication Card (COM). Data Communication Equipment (DCE) adalah perangkat yang dapat mengubah data serial ke besaran analog yang dapat di transmisikan pada saluran transmisi seperti; telepon, listrik atau pemancar radio. Untuk komunikasi antar computer dapat menggunakan RS-232 dengan perantara kabel. Penggunaan RS-232 ini, jaraknya tidak lebih dari 50 feet pada kecepatan 20 Kbaud. Bila jarak yang dipergunakan lebih dari 50 feet pada kecepatan 20 Kbaud, signal yang ditransmisikan akan mengalami degradasi oleh noise dan attenuasi. Jarak komunikasi dapat diperpanjang beberapa ratus feet, tetapi kecepatan data harus diturunkan, misalnya dengan kecepatan 2400 baud dapat mencapai jarak maksimum 150 feet. 1

Transcript of Makala h

Page 1: Makala h

1. Teori RS-232 dan RS-485

RS-232

Merupakan standard interface untuk komunikasi asinkron yang menghubungkan Data

Terminal Equipment (DTE) dengan Data Communication Equipment (DCE) atau dapat juga

menghubungkan antara DTE dengan DTE.

Data Terminal Equipment (DTE) merupakan perangkat yang dilengkapi Universal

Asynchronous Receiver and Transmitter (UART) atau Universal Asynchronous Synchronous

Receiver and Transmitter (USART) yang dapat mengubah data paralel ke data serial atau

sebaliknya. Perangkat DTE ini pada komputer PC disebut Asynchronous Communication

Card (COM).

Data Communication Equipment (DCE) adalah perangkat yang dapat mengubah data

serial ke besaran analog yang dapat di transmisikan pada saluran transmisi seperti; telepon,

listrik atau pemancar radio.

Untuk komunikasi antar computer dapat menggunakan RS-232 dengan perantara kabel.

Penggunaan RS-232 ini, jaraknya tidak lebih dari 50 feet pada kecepatan 20 Kbaud. Bila

jarak yang dipergunakan lebih dari 50 feet pada kecepatan 20 Kbaud, signal yang

ditransmisikan akan mengalami degradasi oleh noise dan attenuasi. Jarak komunikasi dapat

diperpanjang beberapa ratus feet, tetapi kecepatan data harus diturunkan, misalnya dengan

kecepatan 2400 baud dapat mencapai jarak maksimum 150 feet.

Gambar 1. Susunan PIN serial rs232 (DB9)

1

Page 2: Makala h

PC SN75176BMAX232RS232

TTL

LM555

RS485

CONTROL

RS-485

Standard RS-485 mendukung komunikasi data half-duplex, ini berarti bahwa untuk

mengirimkan dan menerima data hanya menggunakan 2 jalur kabel. Spesifikasi dari standar

ini mampu mendukung komunikasi data dari sejumlah perangkat dan juga mampu

menyangga komunikasi data dalam jarak hingga 1200 meter.

Gambar 2. SN65176B

RS-232 to RS-485 Converter

Berikut adalah diagram blok system RS-232 to RS-485 Converter

2. Fungsi dan Spesifikasi Alat

Mengubah sinyal analog ke digital melalui ADC internal mikrokontroler AVR ATMega

8535 dan mentransmisikannya ke computer desktop melalui antarmuka RS-485 serta

menampilkan ekuivalen digitalnya (dalam bilangan decimal, heksa dan level tegangan) pada

monitor komputer.

Peralatan yang digunakan adalah:

Desktop PC

Hasil ADC ditampilkan pada program VB yang dibuat pada Desktop PC

2 buah Mikrokontroler ATMega 8535

Mikrokontroler 1 pada PB0=0 maka mikrokontroler mengirimkan data analog ke PC,

PB0=1 maka mikrokontroler 1 menunggu mikrokontroler 2 mengirimkan data analog

ke PC.

2

Page 3: Makala h

Mikrokontroler 2 pada PB1=0 maka mikrokontroler mengirimkan data analog ke PC,

PB1=1 maka mikrokontroler 2 menunggu mikrokontroler 1 mengirimkan data analog

ke PC.

2 buah Potensiometer

1 buah RS-232

3 buah RS-485

3. Prinsip Kerja Alat

Mengubah sinyal analog dari potensiometer yang masuk ke ADC pada mikrokontroler

secara free running atau mode konversi secara continue sebanyak 8 bit. Mikrokontroler pertama

akan mengirimkan data analog ke PC ketika PIN B1 itu bernilai 0 dan ketika PIN B1 itu bernilai

1, maka PIN B0 pada mikrokontroler kedua bernilai 0, begitupun ketika PIN B0 bernilai 1.

Metode kerja dua mikrokontroler itu secara bergantian (switching) tergantung bagaimana

mikrokontroler membaca Port B0 dan Port B1.

4. Gambar diagram blok dan rangkaian lengkap system

3

Page 4: Makala h

5. Algoritma dan Flowchart Program

Flowchart VB:

Tabel Algoritma dan Flowchart

Flowchart Algoritma Penjelasan

Start Aksi menjalankan program

Private Sub Form_Load()

KomunikasiSerial.RThreshold = 1

KomunikasiSerial.Settings = "9600,n,8,1"

KomunikasiSerial.DTREnable = False

KomunikasiSerial.CommPort = 14

KomunikasiSerial.PortOpen = True

End Sub

Inisialisasi port serial dan

mengaktifkan interupsi serial

Program berjalan di tempat

karena tidak ada sub program

yang di jalankan (idle) untuk

menunggu sampai interupsi

Akhir Program

4

Page 5: Makala h

Tabel Algoritma dan Flowchart

Flowchart Algoritma Penjelasan

Start Aksi Menjalan Program

datamasuk =

KomunikasiSerial.Input

Membaca data masuk

dari serial

idm = Left(datamasuk, 1)

adc = Right(datamasuk, 1)

simpan data dari bufer

serial ke variabel str1

datamasuk =

datamasuk &

KomunikasiSerial.Input

If idm = "A" Then

TextDesimal(0).Text =

Val(Asc(adcTextTegangan(0).

Text = CStr(Val(Asc(adc)) *

0.019)

heksa = Hex$

(Val(Me.TextDesimal(0).Text

))

TextHeksa(0).Text = heksa

Jika variable idm itu A

maka nilai ADC akan di

tampilkan pada Frame

DATA MIKRO 1

ElseIf idm = "B" Then

TextDesimal(1).Text =

Val(Asc(adc))

TextTegangan(1).Text =

CStr(Val(Asc(adc)) * 0.019)

heksa = Hex$

(Val(Me.TextDesimal(1).Text

))

TextHeksa(1).Text = heksa

End If

Jika variable idm itu B

maka nilai ADC akan di

tampilkan pada Frame

DATA MIKRO 2

Berhenti Akhir Program

5

Page 6: Makala h

Flowchart Asembler

Flowchart Algoritma Penjelasan.org 0x0000 mulai

rjmp HardInitHardInit:ldi RegTemp,LOW(RAMEND)out SPL,RegTempldi RegTemp,HIGH(RAMEND)out SPH,RegTempldi RegTemp,(1<<PB0)out DDRB,RegTempldi RegTemp,0xffout PORTB,RegTemp

Konfigurasi port sebagai input atau output

InitSerial:ldi RegTemp,LOW(ubrr_val)out UBRRL,RegTempldi

RegTemp,HIGH(ubrr_val)out UBRRH,RegTempldi RegTemp,(1<<TXEN)out UCSRB,RegTempldi RegTemp,(1<<URSEL)|(3<<UCSZ0)out UCSRC,RegTempretADC_init:ldi RegTemp,0x00out ADMUX,RegTempldi RegTemp,0b11101101out ADCSRA,RegTempret

Inisialisasi komunikasi serial UBRRL (67H), UBRRH(00H) dan ADC.

ADC_read:sbis ADCSRA,ADIFrjmp ADC_readsbi ADCSRA,ADIFin ADC_ValL,ADCLin ADC_ValH,ADCHlsr ADC_ValHror ADC_ValLlsr ADC_ValHror ADC_ValLret

Membaca data ADC

mov RegTx,ADC_ValLrcall UsartTx

Data ADC dikirimin ke PC melalui komunikasi serial . PB0 sebagai switch ke mikro 2

wait:sbic PINB,PB1rjmp waitrjmp main

Baca port B1 apakah sama dengan 0 atau 1, jika 0 maka baca ADC

ret selesai

FLowchart Algortima Penjelasan6

Page 7: Makala h

.org 0x0000 mulai

rjmp HardInitHardInit:ldi RegTemp,LOW(RAMEND)out SPL,RegTempldi RegTemp,HIGH(RAMEND)out SPH,RegTempldi RegTemp,(1<<PB1)out DDRB,RegTempldi RegTemp,0xffout PORTB,RegTemp

Konfigurasi port sebagai input atau output

InitSerial:ldi RegTemp,LOW(ubrr_val)out UBRRL,RegTempldi

RegTemp,HIGH(ubrr_val)out UBRRH,RegTempldi RegTemp,(1<<TXEN)out UCSRB,RegTempldi RegTemp,(1<<URSEL)|(3<<UCSZ0)out UCSRC,RegTempret

Inisialisasi komunikasi serial UBRRL (67H), UBRRH(00H)

dan ADC.

loop:sbic PINB,PB0rjmp loop

Baca port B0 apakah sama dengan 0 atau 1, jika 0 maka

baca ADC

ADC_read:sbis ADCSRA,ADIFrjmp ADC_readsbi ADCSRA,ADIFin ADC_ValL,ADCLin ADC_ValH,ADCHlsr ADC_ValHror ADC_ValLlsr ADC_ValHror ADC_ValL

Membaca data ADC

mov RegTx,ADC_ValLrcall UsartTx

Baca port B1 apakah sama dengan 0 atau 1, jika 0 maka

baca ADC

selesai

6. Kesimpulan dan Analisis

7

Page 8: Makala h

Gambar 3. User interface pada VB

Alat yang dibuat bisa membaca ADC dengan secara Half Duplex, Di sini desktop menggunakan

bahasa pemograman tingkat tinggi yaitu Visual Basic 6. Mikrokontroler ATmega8535 memiliki

fasilitas analog yang sudah build in di dalam chip. Atmega memiliki resolusi ADC 10bit (dapat

juga menggunakan ADC 8 bit) dengan 8 channel (PA0-PA7) sebagai input. ADC ini bekerja

dengan teknik succecive approximation. Rangkaian internal ADC memiliki catu daya tersendiri

yaitu pin Avcc. Data hasil konversi ADC 10 bit (1024) dan ADC 8 bit (255) adalah:

ADC=(Vin*1024)/Vref Mode operasi ADC 8535 terdiri dari dua macam yaitu konversi

berkelanjutan dan konversi tunggal. Berikut ini adalah table hasil perhitungan tegangan pada

potensiometer dan program VB

Pin 32 Vref=4.98

8

Page 9: Makala h

Pin 30 Vin=4.98

Mikrokontroler 1No Nilai V Potensio Nilai V Program Desimal Persentase1 0.04 0.10 1 75.00 2 0.20 0.17 9 15.00 3 0.31 0.28 15 9.68 4 0.42 0.39 21 7.14 5 0.55 0.51 27 7.27 6 0.71 0.68 36 4.23 7 1.46 1.42 75 2.74 8 2.01 1.95 103 2.99 9 2.21 2.14 113 3.17 10 2.66 2.58 136 3.01 11 3.59 3.49 184 2.79 12 4.11 4.10 211 0.24 13 4.41 4.31 227 2.27 14 4.77 4.65 245 2.52 15 4.98 4.84 255 2.81

Rata-rata persentase 9.390667Rata-rata kesalahan 0.178423

Vref=4.98

Vin=4.98

Mikrokontroler 2No Nilai V Potensio Nilai V Program Desimal Persentase1 0.03 0.00 0 100.00 2 0.06 0.03 2 50.00 3 0.90 0.05 3 94.44 4 0.34 0.30 16 11.76 5 0.89 0.85 45 4.49 6 1.11 1.06 56 4.50 7 1.39 1.35 71 2.88 8 1.78 1.72 91 3.37 9 2.15 2.09 110 2.79 10 2.44 2.37 125 2.87 11 2.68 2.62 138 2.2412 4.08 3.99 210 2.21 13 4.80 4.69 247 2.29 14 4.93 4.82 254 2.23 15 4.98 4.84 255 2.81

Rata-rata persentase 19.25867Rata-rata kesalahan 0.365915

7. Program Listing9

Page 10: Makala h

Program VB:

Private Sub Form_Load()

KomunikasiSerial.RThreshold = 1

KomunikasiSerial.Settings = "9600,n,8,1"

KomunikasiSerial.DTREnable = False

KomunikasiSerial.CommPort = 14

KomunikasiSerial.PortOpen = True

End Sub

Private Sub KomunikasiSerial_OnComm()

Dim datamasuk As Variant

Dim idm As String

Dim adc As String

Dim heksa As String

Select Case KomunikasiSerial.CommEvent

Case comEvReceive ' jika terjadi penerimaan data serial

If KomunikasiSerial.InBufferCount > 1 Then ' jika buffer serial kosong , maka

'TextDesimal(0).Text = "" ' kosongkan tanda data tidak ada yang diterima

'Else ' jika ada data yang diterima, maka

datamasuk = KomunikasiSerial.Input ' simpan data dari bufer serial ke variabel str1

'datamasuk = datamasuk & KomunikasiSerial.Input

idm = Left(datamasuk, 1)

adc = Right(datamasuk, 1)

If idm = "A" Then

TextDesimal(0).Text = Val(Asc(adc)) 'simpan hasil pemilihan str1 ke variabel dataawal

TextTegangan(0).Text = CStr(Val(Asc(adc)) * 0.019)

heksa = Hex$(Val(Me.TextDesimal(0).Text))

TextHeksa(0).Text = heksa

ElseIf idm = "B" Then

TextDesimal(1).Text = Val(Asc(adc))

TextTegangan(1).Text = CStr(Val(Asc(adc)) * 0.019)

heksa = Hex$(Val(Me.TextDesimal(1).Text))

TextHeksa(1).Text = heksa

End If

End If

End Select

End Sub

10

Page 11: Makala h

Private Sub TombolQuit_Click()

Unload Me

End Sub

Private Sub Form_Unload(Cancel As Integer)

KomunikasiSerial.PortOpen = False

End Sub

Program Assembler mikrokontroler 1:

.include "m8535def.inc"

.equ kristal=16000000

.equ baudrate=9600

.equ ubrr_val=(kristal/(16*baudrate))-1

.def RegTx=r17

.def ADC_ValL=r18

.def ADC_ValH=r19

.def RegTemp=r20

.org 0x0000

rjmp HardInit

HardInit:

ldi RegTemp,LOW(RAMEND)

out SPL,RegTemp

ldi RegTemp,HIGH(RAMEND)

out SPH,RegTemp

ldi RegTemp,(1<<PB0)

out DDRB,RegTemp

ldi RegTemp,0xff

out PORTB,RegTemp

rcall InitSerial

rcall ADC_init

rcall Delay

rcall Delay

main:

rcall ADC_read

ldi RegTx,'A'

rcall UsartTx

11

Page 12: Makala h

mov RegTx,ADC_ValL

rcall UsartTx

WaitTransmit:

sbis UCSRA,TXC

rjmp WaitTransmit

push RegTemp

ldi RegTemp,0x08

lagi:

rcall Delay

dec RegTemp

cpi RegTemp,0x00

brne Lagi

pop RegTemp

cbi PORTB,PB0

rcall Delay

sbi PORTB,PB0

wait:

sbic PINB,PB1

rjmp wait

rjmp main

InitSerial:

ldi RegTemp,LOW(ubrr_val)

out UBRRL,RegTemp

ldi RegTemp,HIGH(ubrr_val)

out UBRRH,RegTemp

ldi RegTemp,(1<<TXEN)

out UCSRB,RegTemp

ldi RegTemp,(1<<URSEL)|(3<<UCSZ0)

out UCSRC,RegTemp

ret

UsartTx:

sbis UCSRA,UDRE

rjmp UsartTx

out UDR,RegTx

ret

12

Page 13: Makala h

ADC_init:

ldi RegTemp,0x00

out ADMUX,RegTemp

ldi RegTemp,0b11101101

out ADCSRA,RegTemp

ret

ADC_read:

sbis ADCSRA,ADIF

rjmp ADC_read

sbi ADCSRA,ADIF

in ADC_ValL,ADCL

in ADC_ValH,ADCH

lsr ADC_ValH

ror ADC_ValL

lsr ADC_ValH

ror ADC_ValL

ret

Delay:

push RegTemp

push r21

ldi RegTemp,0xff

DelayL:

ldi r21,0xff

DelayS:

dec r21

cpi r21,0x00

brne DelayS

dec RegTemp

cpi RegTemp,0x00

brne DelayL

pop r21

pop RegTemp

ret

13

Page 14: Makala h

Program Assembler mikrokontroler 2:

.include "m8535def.inc"

.equ kristal=16000000

.equ baudrate=9600

.equ ubrr_val=(kristal/(16*baudrate))-1

.def RegTx=r17

.def ADC_ValL=r18

.def ADC_ValH=r19

.def RegTemp=r20

.org 0x0000

rjmp HardInit

HardInit:

ldi RegTemp,LOW(RAMEND)

out SPL,RegTemp

ldi RegTemp,HIGH(RAMEND)

out SPH,RegTemp

ldi RegTemp,(1<<PB1)

out DDRB,RegTemp

ldi RegTemp,0xff

out PORTB,RegTemp

rcall InitSerial

rcall ADC_init

main:

sbi PORTB,PB1

loop:

sbic PINB,PB0

rjmp loop

ldi RegTemp,0x08

tunggu:

rcall Delay

dec RegTemp

cpi RegTemp,0x00

brne tunggu

pop RegTemp

rcall ADC_read

ldi RegTx,'B'

14

Page 15: Makala h

rcall UsartTx

mov RegTx,ADC_ValL

rcall UsartTx

WaitTransmit:

sbis UCSRA,TXC

rjmp WaitTransmit

push RegTemp

ldi RegTemp,0x08

tunggu1:

rcall Delay

dec RegTemp

cpi RegTemp,0x00

brne tunggu1

pop RegTemp

cbi PORTB,PB1

rcall Delay

rjmp main

InitSerial:

ldi RegTemp,LOW(ubrr_val)

out UBRRL,RegTemp

ldi RegTemp,HIGH(ubrr_val)

out UBRRH,RegTemp

ldi RegTemp,(1<<TXEN)

out UCSRB,RegTemp

ldi RegTemp,(1<<URSEL)|(3<<UCSZ0)

out UCSRC,RegTemp

ret

UsartTx:

sbis UCSRA,UDRE

rjmp UsartTx

out UDR,RegTx

ret

ADC_init:

15

Page 16: Makala h

ldi RegTemp,0x00

out ADMUX,RegTemp

ldi RegTemp,0b11101101

out ADCSRA,RegTemp

ret

ADC_read:

sbis ADCSRA,ADIF

rjmp ADC_read

sbi ADCSRA,ADIF

in ADC_ValL,ADCL

in ADC_ValH,ADCH

lsr ADC_ValH

ror ADC_ValL

lsr ADC_ValH

ror ADC_ValL

ret

Delay:

push RegTemp

push r21

ldi RegTemp,0xff

DelayL:

ldi r21,0xff

DelayS:

dec r21

cpi r21,0x00

brne DelayS

dec RegTemp

cpi RegTemp,0x00

brne DelayL

pop r21

pop RegTemp

ret

16