Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Monitoring Lewat VB6

download Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Monitoring Lewat VB6

of 16

description

Aplikasi USART untuk pengendalian Gerbang DAM yang berbasis Mikrokontroller ATMEGA128 dan Memonitoringnya di PC komputer lewat USART untuk ditampilkan di Visual Basic 6.

Transcript of Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Monitoring Lewat VB6

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-

    Aplikasi USART

    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.

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-

    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 sebagaiKendali 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.

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-

    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 datadata ke

    VB6.

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-

    Membuat Program CodeVision AVRUntuk 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

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-

    3. Setting LCD pada PORTA

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-

    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.

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-

    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*****************************************************/

    #include

    #include

    // Alphanumeric LCD functions // inisialisasi LCD

    #include

    // Standard Input/Output functions#include

    #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;

    }

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-

    // Declare your global variables here

    void main(void)

    {

    // Declare your local variables here

    float sungai,waduk;

    unsigned char aman[20];

    unsigned char buff[20];

    // 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=0x00;

    // 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

    // Port D 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

    PORTD=0x00;

    DDRD=0x00;

    // Port E 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

    PORTE=0x00;

    DDRE=0x00;

    // Port F 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

    PORTF=0x00;

    DDRF=0x00;

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-

    // Port G initialization

    // Func4=In Func3=In Func2=In Func1=In Func0=In

    // State4=T State3=T State2=T State1=T State0=T

    PORTG=0x00;

    DDRG=0x00;

    // konfigurasi register register dari USART

    // USART0 initialization

    // Communication Parameters: 8 Data, 1 Stop, No Parity

    // USART0 Receiver: On

    // USART0 Transmitter: On

    // USART0 Mode: Asynchronous

    // USART0 Baud Rate: 9600

    UCSR0A=0x00;

    UCSR0B=0x18;UCSR0C=0x06;

    UBRR0H=0x00;

    UBRR0L=0x33;

    // USART1 initialization

    // USART1 disabled

    UCSR1B=0x00;

    // Analog Comparator initialization

    // Analog Comparator: Off// Analog Comparator Input Capture by Timer/Counter 1: Off

    ACSR=0x80;

    SFIOR=0x00;

    // ADC initialization

    // ADC Clock frequency: 1000,000 kHz

    // ADC Voltage Reference: AVCC pin

    ADMUX=ADC_VREF_TYPE & 0xff;

    ADCSRA=0x83;

    // SPI initialization

    // SPI disabled

    SPCR=0x00;

    // TWI initialization

    // TWI disabled

    TWCR=0x00;

    //INISIALISASI LCD

    // Alphanumeric LCD initialization

    // Connections are specified in the

    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-d

    // 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

    lcd_gotoxy(18,0);

    lcd_putsf("M");

    lcd_gotoxy(18,1);

    lcd_putsf("M");

    delay_ms(100);

    if (sungai

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-d

    lcd_putsf("Gb DAM: Tertutup ");

    // aman = 'Aman';

    printf("%3.2f%3.2fTertutupAman\r",sungai,waduk);

    delay_ms(100);

    //printf("Aman\r\n");

    }

    if (sungai=12)

    {

    motor=0;

    out=1;

    lgreen=1;

    lred=0;

    lblue=0;

    alarm=0;

    lcd_gotoxy(0,2);lcd_putsf("Status: Aman ");

    lcd_gotoxy(0,3);

    lcd_putsf("Gb DAM: OUT ");

    printf("%3.2f%3.2fOUT Aman\r",sungai,waduk); // mengirim ke USART, data update

    setelah if (sungai=12) terpenuhi

    delay_ms(100);

    }

    if (sungai>3.5 && waduk3.5 && waduk>=12&& waduk

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-d

    lcd_gotoxy(0,2);

    lcd_putsf("Status: Waspada ");

    lcd_gotoxy(0,3);

    lcd_putsf("Gb DAM: Terbuka ");

    printf("%3.2f%3.2fTerbuka Waspada\r",sungai,waduk);

    delay_ms(100);

    }

    if (sungai>3.5 && waduk>14)

    {

    motor=1;

    out=0;

    lgreen=0;

    lred=1;

    lblue=0;

    alarm=1;lcd_gotoxy(0,2);

    lcd_putsf("Status: Banjir, LARI");

    lcd_gotoxy(0,3);

    lcd_putsf("Gb DAM: Terbuka ");

    printf("%3.2f%3.2fTerbuka Banjir, Lari !!\r",sungai,waduk);

    delay_ms(100);

    }

    }

    }

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-d

    Membuat program Visual Basic 61. Desain terlebih dahulu form nya seperti berikut

    2. Tambahkan juga component MSComm dan Timer

    3. Code program VB6 nyaDim 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

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-d

    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

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-d

    Shape1.FillColor = vbGreen

    ElseIf sungai = 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 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 untukmensimulasikan 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

  • 5/25/2018 Aplikasi USART-Kendali Gerbang DAM berbasis Mikrokontroller ATMEGA128 dan Mo...

    http:///reader/full/aplikasi-usart-kendali-gerbang-dam-berbasis-mikrokontroller-atmega128-d

    2. Sudah terkoneksi dan buzzer berbunyi karena level ketinggian air sungai dan waduk telahmelewati batas maksimal.