rekayasa struktur beton prategang - 2_compressed (1).pdf
SIMPLE SYSTEM OPERATING WITH ECLPSE
1. LAPORAN PROJEK UJIAN TENGAH SEMESTER SISTEM
EMBEDDED
Agung Bandaso Karurukan (1110145003) D4 LJ ELKA
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
2015
2. Pendahuluan :
Dalam kehidupan sehari hari kegiatan manusia sudah sangat erat hunbungannya
dengan sistem otomasi, monitoring ataupun yang lainnya yang dikontrol dengan kontroler.
Salah satunya adalah sistem monitoring waktu dalam perlombaan balap mobil, maka
untuk memperdalam pengetahuan terhadap system embeded, pada project ujian tengah
semester ini, dilakukan perncangan sebuah system embeded untuk memonitoring lama waktu
setiap mobil dalam menyelesaikan 4 putaran.
Tujuan :
Setelah melaksanakan project ini diharapkan mahasiswa dapat lebih mememahami
cara pembuatan simple embeded system.
Alur proses
Alur proses dari system memiliki 3 input sensor untuk masing masing mobil yang
diwakili oleh 3 push button, 1 push button untuk tombol start dan stop dan 1 push button
untuk reset. Dengan output yang di tampilkan pada komputer menggunakan aplikasi visual
basic dengan komunikasi serial.
Program akan mendeteksi push button start/stop, reset dan sensor yang selanutnya
mengirimkan karakter melalui kabel serial menuju komputer dan diolah menggunakan
aplikasi visual basic. Tombol start/stop digunakan untuk memulai dan mengakhiri timer
pada mikrokontontroler. Tombol reset digunakan untuk mereset timer. Sensor 1 sampai
sensor 3 adalah sensor proximity yang mencatat setiap lap dari setiap mobil yang telah
ditempuh. Dimana ketiga sensor diwakili dengan push button. Setiap pushbutton
menggunakan mekanisme delay untuk menghilangkan efek bouncing dari setiap penekanan
sakelar. Sistem mengirimkan informasi waktu yang ditempuh pada komputer untuk keperluan
analisa. Apabila sensor mengalami kerusakan maka sistem akan mengirimkan peringatan
berupa kode error yang selanjutnya diolah menjadi kode warna untuk masing masing sensor
3. Gambar.1 flow chart program
Start
Tekan Start
Timer aktif
Kirim nilai timer pada port serial
Deteksi Penekanan tombol sensor (1,2,3)
Timeout?
YA
aktif
Kirim keterangan
error
TIDAK
aktif
Kirim data sesuai
sensor yang ditekan
Masing-masing
sensor mencapai 4
kali lap?
Kirim nilai analisa
melalui port serial
YA
aktif
Tekan Reset
End
4. PRINSIP KERJA
Prinsip dasar dari penggunaan metode pada tugas ini mengaktifkan 2 fitur yang
dimiliki oleh mkrokontroler yaitu serial dan timer. Dimana timer yang digunakan untuk
menghasilkan data waktu yang selanjutnya ditampilkan pada visual basic, melalui kabel
serial.
Saat dilakukan penekanan tombol start stop maka sinyal akan mengirimkan data ke
mikrokontroler yang selanjutnya digunakan untuk mengkatifkan/menonaktifkan timer. Timer
yang telah diaktifkan akan menghitung setiap detik dan menyimpan data untuk setiap variabel
detik, menit dan jam, dan data dikirimkan melalui serial ke vb untuk ditampilkan sebagai data
stopwatch.
Penekanan tombol reset akan menghentikan kerja timer dan mereset nilai dari masing
masing variable detik, menit dan jam, yang selanjutnya data dikirim ke VB dan menampilkan
nilai stopwatch.
Sensor proximity yang diwakili oleh push button akan akan mengirimkan data detik,
menit dan jam yang diambil dari variable yang telah dibuat sebelumnya, sehingga data yang
telah didapat tersebut selanjutnya dikrimkan ke VB dan akan ditampilakn untuk masing
masing putaran, penekanan tombol diberi metode anti bouncing dengan penambahan delay
sehingga jika terjadi bouncing yang diakibatkan oleh pengaruh luar maka data tidak akan
mengirim data. Pada penekanan tombol juga diberi metode time out dimana penekanan
tombol diberi batas waktu penekanan sehingga jika lama waktu penekanan tersebut terlewati
maka mikrokontroler akan mengirimkan data yang memberi tahu bahwa terjadi masalah pada
sensor/pushbutton.
5. Gambar2. flow chart program visual basic
Pada metode ini data yang dikirimkan dari mikrokontroler akan ditampung pada variable
“karakter” pada visual basic dan akan dipilih / parsing sesuai dengan data yang akan
ditampilkan. Dimana tiap detik data pada text1 akan diupdate sesuai dengan periode
pengiriman data oleh mikrokontroler.
DARI MIKROKONTROLER
Terima data jam digital (Per detik)
Bagi data sesuai karakter
Update tampilan jam pada Text1
Konversi data pada tiap sensor
Tampilkan data Error dan Lap
Terima data reset
Clear semua text pada form
Terima data Analisa
Tampilkan Analisa
6. Alat dan Bahan
- Minimum system + ATMEGA 16 -------------- 1x
- Kabel komunikasi USB – TTL ------------------ 1x
- Push Button ---------------------------------------- 4x
- Kabel downloader (USB ASP) ------------------ 1x
- Aplikasi Eclipse ----------------------------------- 1x
- Aplikasi Visual Basic 6 -------------------------- 1x
o Label
o Button
o Combo box
o Text Box
o Timer
o MsComm
Gambar3. minimum system , USB to TTL dan Pushbutton
Koneksi pemasangan pushbutton diletakkan pada PORTA.1 – PORTA.5
PORTA.1 = Start stop
PORTA.2 = Reset
PORTA.3 = sensor 1
PORTA.4 = sensor 2
PORTA.5 = sensor 3
7. Penjelasan program
1. Serial
Inisialisasi dan pengkatifan sebuah fitur serial dari mikrokontroler dimaksudkan untuk
mikrokontroler yang digunakan dapat berkomunikasi dengan dengan device yang
lainnya dimana pda tugas ini adalah komputer.
Potongan program
void uart_init(void)
{
UCSRA = (1<<U2X);
UCSRB = (1<<TXEN)|(1<<RXEN)|(0<<UCSZ2);
UCSRC = (1<<UCSZ1)|(1<<UCSZ0);
UBRRH = 0x0;
UBRRL = 51;
}
USART Control and Status Register A-UCSRA memiliki susunan seperti berikut
U2X merupakan bit yang mengatur operating mode, pada program ini mode yang
digunakan adalah Asyncronous Double Speed.
Sehingga untuk perhitungan UBRR guna menyamakan baudrate dapat dihitung dengan
8. Register yang diseting selanjutnya adalah UCSRB
RXEN dan TXEN diaktifkan dengan memberi nilai 1, nilai UCSZ0 berkaitan dengan UCSZ1
dan UCSZ2 dimana ketiga kombinasi bit akan memeilih lebar data yang akan digunakan.
Pada program digunakan lebar data 8 bit sehingga pengaturan
UCZ0 = 1
UCZ1 = 1
UCZ2 = 0
2. Timer
Fitur timer yang ada pada atmega 16 ada 3 yaitu timer 0, timer1 dan timer 2.
Pada program ini digunakan timer 1 sebagai pewaktu yang dkirim ke VB.
Potongan program
void TIMER1_init (void)
{
DDRC=0XFF;
TCCR1A |= (0<<WGM11)|(0<<WGM10);
TCCR1B |= (0<<WGM13)|(1<<WGM12)|(1<<CS12)|(0<<CS11)|(0<<CS10);
//MODE CTC
OCR1A=(7812*2); //1 DETIK
}
Pada potongan progra diatas, DDRC diseting output yang dikoneksikan dengan led
yang berfungsi untuk indicator jika terjadi pengiriman data.
9. Timer control Register TCCR1 A
Timer control Register TCCR1 B
Pada liss program yang diset adalah bit WGM 10, WGM 11, WGM 12 dan WGM 13 dengan
konfigurasi :
WGM10 : 0
WGM11 : 0
WGM12 : 1
WGM13 : 0
Dari tabel diatas dapat kita lihat bahwa timer yang digunaan adalah timer dengan
mode operasi CTC dan maximal/TOP perhitungan data bergantung dari nilai OCR yang kita
masukkan.
Mode CTC merupakan mode dimana timer akan mengconting dari 0 samapai dengan
batas atas TOP/OCR yang diisikan oleh yang memprogram. Contohnya dilakukan seting
OCR/TOP adalah 3 maka counter akan menhitung dari 0 sampai pada 3, jika setiap cycle
adalah 1 detik maka didapatkan waktu 3 detik, untuk mendapatkan nilai yang lebih lama
dapat kita tambahkan nilai OCRnya misalkan 5, maka nilai tundaannya menjadi 5 detik.
Nilai OCR dapat dihitung dengan rumus
10. Pada bit Chip select pada program memiliki konfigurasi seperti berikut
CS12 = 1
CS11 = 0
CS10 = 0
Dari tabel dibawah dapat dilihat bahwa prescaler yang digunakan adalah 256
Saat nilai OCR telah terpenuhi maka program akan menjalankan subrutin interupt ISR
dimana subrutin ini akan mengirimkan data variable jam, menit dan detik setiap 1 detik
ISR(TIMER1_COMPA_vect)
{
kondisi=kondisi+1;
detik++;
PORTC=kondisi;
if(kondisi==255){kondisi=0;}
if (detik == 60)
{
detik = 0;
menit= menit + 1;
}
if (menit == 60)
{
menit = 0;
jam=jam + 1;
}
if (jam == 24)
{
jam = 0;
}
printf("TIME : %d : %d : %dnr",jam, menit, detik);
}
11. Gambar pengiriman data subrutin timer pada hyperterminal
3. Reset
Penekanan tombol reset difungsikan untuk mereset nilai dari variable, pada
potongan program dibawah ini, saat terjadi penekanan tombol, maka variable jam,
menit dan detik diseting 0 dan mengirimkan karakter “REST” serta mendisablekan
timer.
unsigned char resetDetected(void)
{
Timeout_loop=0;
if (!isCheckPIN(btnReset))
{ //bila saklar counter di tekan
_delay_ms(40);
if(!isCheckPIN(btnReset))
{
while(!isCheckPIN(btnReset)&& Timeout_loop++<=Timeout_value);
if (Timeout_loop>=Timeout_value)
{
printf("sn");
}
else
{
jam=0;
menit=0;
detik=0;
printf("REST nr");
TIMSK=(0<<OCIE1A);
}
}
}
}
Gambar pengiriman data seset pada hypertherminal
12. 4. Start/Stop
Pada program ini bila saklar ditekan untuk menghilangkan efek bouncing
maka diberikan delay 40 ms, selanjutnya pengecheckkan apakah masih terjadi
penekanan tombol dan variable startstop =0 (penekanan pertama) jika ya timer akan
diaktifkan setelah timer diaktifkan variable startstop diubah menjadi 1. Dan jika
terjadi penekanan yang kedua, dimana nilai variable start stop sudah menjadi 1 maka
program akan mendeteksi bahwa penekanan telah dilakukan sebanyak dua kali,
sehingga yang dilakukan adalah mendisablekan timer.
unsigned char startstopDetected(void)
{
if (!isCheckPIN(btnCount))
{ //bila saklar diaktifkan
_delay_ms(40);
if(!isCheckPIN(btnCount)&&startstop==0)
{
while(!isCheckPIN(btnCount));
TIMSK=(1<<OCIE1A); //ENABLE INTERUPPT OCR1A;
startstop=1;
}
else if (!isCheckPIN(btnCount)&&startstop==1)
{
while(!isCheckPIN(btnCount));
TIMSK=(0<<OCIE1A); //ENABLE INTERUPPT OCR1A;
startstop=0;
}
}
}
5. Penekanan tombol/sensor
Pada program ini hampir sama dengan penekaan tombol reset, hanya jika terjadi
penekanan maka mikrokontroler akan mengirimkan sinyal berupa data jam, menit
dan detik pada VB dengan contoh data “S1L2 0:2:12” yang selanjutnya akan di proses
dan ditampilkan pada label yang dituju.
unsigned char sensorDetected(void)
{
Timeout_loop=0;
if (!isCheckPIN(pushButton3))
{ //bila saklar counter di tekan
_delay_ms(40);
if(!isCheckPIN(pushButton3))
{
while(!isCheckPIN(pushButton3)&&
Timeout_loop++<=Timeout_value);
if (Timeout_loop>=Timeout_value)
20. LIST PROGRAM VISUAL BASIC
Option Explicit
Dim karakter As Variant
Dim kata As String '=================>
Data serial yang ditampung
Dim serial As String
Dim mobil1lap1 As String
Private Sub cmdConnect_Click()
On Error Resume Next
If MSComm1.PortOpen = False Then
MSComm1.CommPort = 9
MSComm1.RThreshold = 40
'====================> Penting dok jangan
lupa lagi
MSComm1.InputLen = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
cmdConnect.Enabled = False
cmdDisconnect.Enabled = True
End If
Exit Sub
End Sub
Private Sub cmdDisconnect_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
cmdConnect.Enabled = True
cmdDisconnect.Enabled = False
End Sub
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive
Then
karakter = MSComm1.Input
If karakter <> Chr(13) Then 'kalau tidak
sama dengan
If karakter = Chr(10) Then '13 enter 10
geser kiri
'Text18.Text = kata
serial = Mid(kata, 1, 4) 'ambil dari huruf
1 sampai 4
If serial = "TIME" Then Text1.Text =
Mid(kata, 7, 11)
'==============>TIME:_0_:_0_:_11
If serial = "REST" Then
'Text1.Text = Mid(kata, 5, 10)
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
Text10.Text = ""
Text11.Text = ""
Text12.Text = ""
Text13.Text = ""
'Text14.Text = "-"
'Text15.Text = "-"
'Text16.Text = "-"
Text17.Text = ""
End If
'SENSOR 1====================
If serial = "S1L1" Then Text2.Text =
Mid(kata, 5, 12)
If serial = "S1L2" Then Text3.Text =
Mid(kata, 5, 12)
If serial = "S1L3" Then Text4.Text =
Mid(kata, 5, 12)
If serial = "S1L4" Then Text5.Text =
Mid(kata, 5, 12)
If serial = "S1RS" Then Shape1.FillColor =
&HFF& 'Text14.Text = Mid(kata, 5, 9)
'=================> ERROR 1
'SENSOR 2=======================
If serial = "S2L1" Then Text6.Text =
Mid(kata, 5, 12)
If serial = "S2L2" Then Text7.Text =
Mid(kata, 5, 12)
If serial = "S2L3" Then Text8.Text =
Mid(kata, 5, 12)
If serial = "S2L4" Then Text9.Text =
Mid(kata, 5, 12)
If serial = "S2RS" Then Shape2.FillColor =
&HFF& 'Text15.Text = Mid(kata, 5, 9)
'=================> ERROR 2
21. 'SENSOR3======================
If serial = "S3L1" Then Text10.Text =
Mid(kata, 5, 12)
If serial = "S3L2" Then Text11.Text =
Mid(kata, 5, 12)
If serial = "S3L3" Then Text12.Text =
Mid(kata, 5, 12)
If serial = "S3L4" Then Text13.Text =
Mid(kata, 5, 12)
If serial = "S3RS" Then Shape3.FillColor =
&HFF& 'Text16.Text = Mid(kata, 5, 9)
'===================> ERROR 3
'ANALISA============================
DETX:_13 ========================
If serial = "DET1" Then
With Text17
.SelStart = Len(.Text)
.SelText = vbNewLine & "Waktu Tempuh
Mobil 1 = " & Mid(kata, 6, 12)
End With
End If
If serial = "DET2" Then
With Text17
.SelStart = Len(.Text)
.SelText = vbNewLine & "Waktu Tempuh
Mobil 2 = " & Mid(kata, 6, 12)
End With
End If
If serial = "DET3" Then
With Text17
.SelStart = Len(.Text)
.SelText = vbNewLine & "Waktu Tempuh
Mobil 3 = " & Mid(kata, 6, 12)
End With
End If
kata = ""
Else
kata = kata & karakter
End If
End If
End If
End Sub