0 penilaian0% menganggap dokumen ini bermanfaat (0 suara)
523 tayangan16 halaman
Aplikasi USART untuk pengendalian Gerbang DAM yang berbasis Mikrokontroller ATMEGA128 dan Memonitoringnya di PC komputer lewat USART untuk ditampilkan di Visual Basic 6.
Judul Asli
Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Monitoring Lewat VB6
Aplikasi USART untuk pengendalian Gerbang DAM yang berbasis Mikrokontroller ATMEGA128 dan Memonitoringnya di PC komputer lewat USART untuk ditampilkan di Visual Basic 6.
Aplikasi USART untuk pengendalian Gerbang DAM yang berbasis Mikrokontroller ATMEGA128 dan Memonitoringnya di PC komputer lewat USART untuk ditampilkan di Visual Basic 6.
Kendali Gerbang DAM dengan Mikrokontroller dan monitoring
Status DAM pada Visual Basic 6
By Indra Wahyudi / 1303121014 D3 A Teknik Elektro Industri PENS
Selain timer, fitur dan fasilitas yang terdapat dalam mikrokontroler AVR yang sering digunakan adalah USART. USART (Universal Synchronous Asynchronous serial Receiver and Transmitter) merupakan protokol komunikasi serial yang terdapat pada mikrokontroler AVR. Dengan memanfaatkan fitur ini kita dapat berhubungan dengan dunia luar. Dengan USART kita bisa menghubungkan mikrokontroler dengan PC, hape, GPS atau bahkan modem, dan banyak lagi peralatan yang dapat dihubungkan dengan mikrokontroler dengan menggunakan fasilitas USART. Komunikasi dengan menggunakan USART dapat dilakukan dengan dua cara yaitu dengan mode sinkron dimana pengirim data mengeluarkan pulsa/clock untuk sinkronisasi data, dan yang kedua dengan mode asinkron, dimana pengirim data tidak mengeluarkan pulsa/clock, tetapi untuk proses sinkronisasi memerlukan inisialisasi, agar data yang diterima sama dengan data yang dikirimkan. Pada proses inisialisasi ini setiap perangkat yang terhubung harus memiliki baud rate (laju data) yang sama. Pada mikrokontroler AVR untuk mengaktifkan dan mengeset komunikasi USART dilakukan dengan cara mengaktifkan register2 yang digunakan untuk komunikasi USART. Register2 yang dipakai antara lain yaitu : 1. Register Data (UDR), menyimpan data yg dikirim dan diterima. 2. Register Control (UCSRA,UCSRB danUCSRC). Penggunaan USART untuk komunikasi antar mikrokontroler adalah dengan menghubungkan pin RX pada TX lawan dan pin TX pada RX lawan. Begitu pula jika mikrokontroler berkomunikasi dengan PC. Akan tetapi, karena level teganan pada PC berbeda dengan mikrokontroler maka dibutuhkan suatu rangkaian untuk menyesuaikannya. Biasanya digunakan rangkaian standar RS232 atau dikenal konektor RS232.
Gambar diatas merupakan salah satu contoh penggunaan USART pada Atmega 128 sebagai Kendali Gerbang DAM dan monitoring Status DAM pada Visual Basic 6. Jadi USART berfungsi menghubungkan antara Mikrokontroller Unit dengan software VB6 yang ada di PC atau laptop kita. LCD pada MCU(Mikrokontroller Unit) berfungsi menampilkan nilai ketinggian air pada sensor sungai dan sensor waduk. LED merah, hijau dan biru digunakan sebagai kode keamanan saja dan juga Buzzer sebagai tanda keamaan saat sungai dan waduk telah full air dan banjir terjadi . Untuk meng ON/OFF kan motor digunakan lah relay. Terdapat dua motor dalam program. Motor input yang berfungsi untuk mengendalikan gerbang air DAM terbuka atau tertutup yang mengalir dari sungai ke waduk. Dan motor output yang berfungsi mengendalikan gerbang air DAM terbuka atau tertutup yang mengalir dari waduk ke sungai. Jadi tujuan dari MCU ini adalah untuk penanggulangan otomatis ketinggian air sungai agar tidak meluap saat terjadi hujan dan menyebabkan banjir yang kemudian akan mengalir ke pemukiman warga. Selain mengotrol ketinggian air sungai, ketinggian waduk pun juga dijaga agar tetap dapat menampung air luapan saat banjir.
Wiring diagram untuk simulasi proteus dari program diatas adalah sebagai berikut :
Gambar Wiring diagram pada proteus Selain itu pada Chip Atmega 128 juga harus di klik dua kali dan di set sebagai berikut :
Setting tersebut bertujuan agar USART berfungsi sempurna dan dapat mentransmit data data ke VB6. Membuat Program CodeVision AVR Untuk membuat program seperti diatas maka Chip, LCD, ADC, dan USART harus disetting terlebih dahulu Code Wizzard AVR nya seperti dibawah ini : 1. Setting agar LCD dapat menampilkan fitur float, klik toolbar Project- configure- C Compiler
2. Setting Chip
3. Setting LCD pada PORTA
4. Setting ADC AVCC pin, clock 1000kHz, tanpa interrupts
5. Setting USART
Pada program ini USART disetting baud rate 9600, dengan mode asynchronous dan communicarion parameters nya 8 Data, 1 Stop, No parity. Setelah CodeWizzard AVR sudah disetting maka program C nya adalah :
/***************************************************** 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
Project : Anti Banjir Version : Date : 22/04/2014 Author : Indra Wahyudi Company : EEPIS Comments:
Chip type : ATmega128 Program type : Application AVR Core Clock frequency: 8,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 1024 *****************************************************/
// Standard Input/Output functions #include <stdio.h>
#define ADC_VREF_TYPE 0x40 //inisialisasi ADC #define lred PORTC.3 #define lblue PORTC.4 #define lgreen PORTC.5 #define motor PORTC.6 #define alarm PORTC.7 #define out PORTC.2 // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; }
// Declare your global variables here
void main(void) { // Declare your local variables here float sungai,waduk; unsigned char aman[20]; unsigned char buff[20];
// 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; // PORTC digunakan sebagai output LED, Buzzer dan Motor sehingga harus diset 0xFF
//INISIALISASI LCD // Alphanumeric LCD initialization // Connections are specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTA Bit 0 // RD - PORTA Bit 1 // EN - PORTA Bit 2 // D4 - PORTA Bit 4 // D5 - PORTA Bit 5 // D6 - PORTA Bit 6 // D7 - PORTA Bit 7 // Characters/line: 20 lcd_init(20);
while (1) {
sungai=(float)read_adc(0)*5/1023; //membaca sensor dari ADC 0. Angka 5 merupakan maximum ketinggian sungai dan 1023 merupakan max dari variable resistor
waduk=(float)read_adc(1)*15/1023; //membaca sensor dari ADC 1. Angka 15 merupakan maximum ketinggian waduk dan 1023 merupakan max dari variable resistor lcd_gotoxy(0,0); lcd_putsf("Ket sungai:"); lcd_gotoxy(0,1); lcd_putsf("Ket Waduk : "); lcd_gotoxy(13,0); sprintf(buff,"%3.2f",sungai); // menampilkan nilai pembacaan ADC 0 pada LCD lcd_puts(buff); lcd_gotoxy(13,1); sprintf(buff,"%3.2f",waduk); // menampilkan nilai pembacaan ADC 1 pada LCD lcd_puts(buff); printf("%3.2f%3.2f\r",sungai,waduk); // printf berfungsi mengirim data ke USART dan agar VB6 dapat menerima data
Membuat program Visual Basic 6 1. Desain terlebih dahulu form nya seperti berikut
2. Tambahkan juga component MSComm dan Timer
3. Code program VB6 nya
Dim data, kata As String deklarasi variabel yang digunakan Dim sungai, waduk As Variant deklarasi variabel yang digunakan Dim nilai As Integer deklarasi variabel yang digunakan
Private Sub Command1_Click() saat command 1 di klik/ tombol connect If MSComm1.PortOpen = False Then MSComm1.PortOpen = True Command1.Enabled = False Command2.Enabled = True
End Sub
Private Sub Command2_Click() saat command2 di klik/tombol disconnect If MSComm1.PortOpen = True Then MSComm1.PortOpen = False Command1.Enabled = True Command2.Enabled = False End Sub
Private Sub Command3_Click() saat command3 d klik/tombol exit If MSComm1.PortOpen = True Then MSComm1.PortOpen = False Unload Me End Sub
Private Sub Form_Load() saat form pertama kali d load maka akan melakukan perintah sesuai program dibawah Command2.Enabled = False With MSComm1 .InputLen = 1 .RThreshold = 1 .Settings = "9600,n,8,1" .CommPort = Text3.Text End With End Sub
Private Sub MSComm1_OnComm() mscomm menerima data dari USART Mikrokontroller data = data + MSComm1.Input If InStr(data, vbCr) Then Label6.Caption = Mid$(data, 1, 4) Label10.Caption = Mid$(data, 5, 5) Label11.Caption = Mid$(data, 10, 8) Label9.Caption = Mid$(data, 18, 25) sungai = Val(Label6.Caption) waduk = Val(Label10.Caption) data = "" End If End Sub
Private Sub Timer1_Timer() Perubahan warna shape sesuai nilai variable sungai If sungai <= 3.5 And waduk < 12 Then Shape1.FillColor = vbGreen ElseIf sungai <= 3.5 And waduk >= 12 Then Shape1.FillColor = vbGreen ElseIf sungai > 3.5 And waduk < 12 Then Shape1.FillColor = vbGreen ElseIf sungai > 3.5 And waduk >= 12 And waduk <= 14 Then Shape1.FillColor = vbBlue ElseIf sungai > 3.5 And waduk > 14 Then Shape1.FillColor = vbRed End If End Sub
Ketika desain proteus, program C pada codevision, dan program VB6 siap maka untuk mensimulasikan masih butuh software tambahan sebagai virutal port. Disini digunakan Virtual Serial Port Driver Eltima Software sebagai pembuat virtual PORT nya.
Tanda merah menunjukkan virtual port yang terhubung. Setelah semua siap maka program aplikasi USART siap untuk di simulasikan. Berikut adalah hasil simulasinya : 1. Kondisi belum di nyalakan dan belum terkoneksi
2. Sudah terkoneksi dan buzzer berbunyi karena level ketinggian air sungai dan waduk telah melewati batas maksimal.