• Tidak ada hasil yang ditemukan

BAB III PROSES PERANCANGAN. Pada bab ini akan dibahas mengenai Perancangan komunikasi program

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB III PROSES PERANCANGAN. Pada bab ini akan dibahas mengenai Perancangan komunikasi program"

Copied!
20
0
0

Teks penuh

(1)

BAB III

PROSES PERANCANGAN

Pada bab ini akan dibahas mengenai Perancangan komunikasi program Lab View dan Mikrokontroler melalui kanal serial pada sebuah PC dengan menggunakan USB to Serial Converter.

3.1 Pendahuluan.

Pada perancangan ini akan dijelaskan mengenai terjadinya proses mulai dari input sampai output. Untuk bagian Input, komputer akan difungsikan untuk menjembatani proses kendali dan pemantauan status tone control. Didalam bagian Input,USB akan dirubah menjadi serial karena port serial yang dulu masih sering dijumpai pada komputer portabel/laptop sekarang sulit untuk diperoleh, hal ini dikarenakan perkembangan kecepatan/Transfer rate komunikasi data serial melalui port USB. Namun demikian, dengan menggunakan converter USB to Serial . Jadi dengan begitu data yang dikeluarkan komputer akan lewat serial port sehingga dapat berkomunikasi dengan mikrokontrollernya.

Pada bagian Proses, mikrokontroller dirancang dan diprogram untuk dapat berkomunikasi dengan komputer dan juga dapat berkomunikasi dengan peralatan tone kontrolnya. Mikrokontrollernya dirancang dengan menggunakan bahasa

(2)

pemograman assembly dan komputernya menggunakan program labview. Sehingga dengan begitu Output, tone control(power,volume,bass,treble) dapat dikendalikan dengan komputer. Untuk gambar blok diagram dari sistem perancangan dapat dilihat pada gambar dibawah ini.

Gambar 3.1 Blok diagram sistem perancangan

Sedangkan Untuk perancangan proses aplikasi dari perancangan sistem ini dapat dilihat pada gambar flowchart dibawah ini.

Mulai Aplikasi Inisialisasi Hardware AKTC 1.0 Ditemukan? Disable menu Exit

Baca Penekanan Tombol

Ada penekanan Tombol Soft/Hardware

Eksekusi secara soft/hardware

Baca Status Display

Update Status Pada Display Tombol Exit ditekan? ya Tidak ya Tidak ya Tidak

(3)

3.2 Penerapan Komunikasi Serial Berbasis Labview

Labview merupakan perangkat lunak yang telah dikembangkan oleh National Instrument sejak tahun 1973, LabVIEW didedikasikan sebagai media antarmuka pengguna untuk melakukan proses pengendalian dan pemantauan perangkat/instrument yang terhubung dengan komputer melalui serangkaian alur diagram data yang disusun seperti flowchart. Selain memproduksi perangkat lunak, National Instrument juga memiliki produk-produk perangkat keras yang telah kompatibel dengan perangkat lunak LabVIEW yang berstandarkan internasional.

VISA merupakan standar I/O API(application programming interface ) pemrograman perangkat/instrument yang dapat diintegrasikan pada perangkat lunak LabVIEW. VISA dapat digunakan untuk mengendalikan GPIB(General Purpose Interface Base), serial, USB, Ethernet, PXI, ataupun perangkat VXI, agar sesuai dengan driver yang akan digunakan sehingga untuk menggunakannya tidak harus menguasai protokol perangkat keras secara spesifik. Visa adalah platform independen, bus independen, dan environment independen. Dengan kata lain, API yang sama digunakan tanpa memandang jenis perangkat, platform, atau bahasa pemrograman.

(4)

Pada gambar 3.2 ditunjukkan function pallete yang akan digunakan untuk melakukan komunikasi melalui kanal serial, berikut ini merupakan nama dan diskripsi fungsi kerjanya.

Nama Fungsi

Visa Configure Seriall Port Digunakan untuk melakukan koneksi kanal serial dan konfigurasi kanal serial diantaranya baudrate, Lebar data, parity dan flow control.

Visa write Digunakan untuk mengrim data melalui buffer kanal serial yang telah dipilih Visa read Digunakan untuk membaca data yang

diterima pada buffer kanal serial.

Visa close Digunakan untuk memutuskan hubungan kanal serial.

Visa byte at serial Digunakan untuk membaca jumlah data masuk/diterima pada kanal serial

Visa write Digunakan untuk mengrim data melalui buffer kanal serial yang telah dipilih Visa read Digunakan untuk membaca data yang

diterima pada buffer kanal serial.

Visa close Digunakan untuk memutuskan hubungan kanal serial.

(5)

Gambar 3.3 Source Pengiriman perintah ke kanal serial

Gambar 3.4 Source pembacaan kanal serial

Penjelasan gambar 3.3 & 3.4 dapat dijabarkan sebagai berikut, program dimulai dengan pengkonfigurasian kanal serial meliputi :

1. Visa resource name : Pemilihan kanal serial, pada kasus ini adalah com1; 2. Baudrate : Kecepatan transfer rate/detik, pada kasus ini adalah 9600kbps 3. Data bits : Jumlah pengiriman data perdetik, pada kasus ini adalah 8bits 4. Parity : Menetapkan paritas yang digunakan pada setiap frame untuk

(6)

0 no parity (default) 1 Odd parity

2 Even parity 3 Mark parity 4 Space parity

5. Parity : Menentukan jumlah stop bit yang digunakan untuk menunjukkan akhir sebuah frame. Masukan ini menerima nilai-nilai berikut

10 1 stop bit 15 1.5 stop bit 20 2 stop bit

6. Flow control : Menetapkan jenis kontrol yang digunakan untuk mekanisme transfer. Masukan ini menerima nilai-nilai berikut:

0 None (default)-Pada mekanisme ini transfer tidak menggunakan kontrol. Penyangga di kedua sisi sambungan diasumsikan cukup besar untuk menampung semua data yang ditransfer.

1 Odd parity XON / XOFF-mekanisme transfer menggunakan karakter XON dan XOFF untuk melakukan kontrol aliran. Mekanisme transfer mengontrol aliran dengan mengirimkan masukan XOFF ketika buffer menerima data hampir penuh, dan mengendalikan aliran output dengan menunda transmisi ketika XOFF diterima

(7)

2 RTS / CTS-mekanisme transfer menggunakan sinyal RTS dan sinyal masukan CTS untuk melakukan kontrol aliran. Mekanisme transfer masukan kontrol dilakukan oleh RTS ketika buffer menerima sinyal hampir penuh, dan mengendalikan aliran keluaran dengan menunda transmisi melalui sinyal CTS

3 XON / XOFF dan RTS / CTS-mekanisme transfer menggunakan XON dan XOFF karakter dan RTS dan CTS

4 DTR / DSR-mekanisme transfer menggunakan sinyal keluaran DTR dan sinyal masukan DSR untuk melakukan kontrol aliran

5 XON / XOFF dan DTR / DSR-mekanisme transfer menggunakan karakter XON dan XOFF disertai sinyal keluaran DTR dan sinyal masukan DSR untuk melakukan kontrol aliran.

7. Enable termination char : mempersiapkan perangkat serial untuk mengenali penghentian karakter. Jika TRUE (default), maka atribut VI_ATTR_ASRL_END_IN diatur untuk mengenali karakter penghentian. Jika FALSE, maka atribut VI_ATTR_ASRL_END_IN diatur ke 0 (Tidak ada) dan perangkat serial tidak mengenali penghentian char ;

8. Termination char : Operasi baca berakhir ketika terminasi karakter dibaca dari perangkat serial. Hexadecimal 0xA mewakili karakter linefeed. Ubah penghentian karakter dengan hexadecimal 0xD untuk mengakhiri pembacaan ketika menjumpai karakter carriage return atau enter.

Timeouts : digunakan untuk mengatur lamanya waktu proses baca dan tulis.

(8)

Setelah konfigurasi diterima, selanjutnya dapat dilakukan operasi penulisan dan pembacaan data pada kanal serial untuk kemudian diakhiri dengan melakukan pemutusan koneksi(visa close connection).

3.3 Penerapan Komunikasi Serial Mikrokontroller

Seperti halnya komputer, pada kanal serial mikrokontrollerpun perlu dilakukan inisialisasi agar dapat digunakan untuk berkomunikasi dengan komputer, berikut adalah kode sumber menggunakan bahasa C yang akan digunakan pada perancangan ini.

initSerial()

{ /* init serial to 1200 baud by using 11.0592MHz crystal */ SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */ TMOD = 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 0xFD; /* TH1: reload value for 9600 baud */ TR1 = 1; /* TR1: timer 1 run */

TI = 1; /* TI: set TI to send first char of UART */ }

Interupsi dan pewaktu mikrokontroller dikonfigurasikan untuk pendayagunaan operasi kerja kanal serial agar dapat berkomunikasi dengan baudrate 9600 bps. Protokol untuk melakukan pengendalian kendali/pembacaan kanal mikrokontroller yang akan digunakan adalah sebagai berikut;

1. Pin Rx mikrokontroller menunggu karakter Px=nnn[CR] -> dimana x adalah nilai 0 sampai dengan 3, dan nnn adalah 0 sampai dengan 255; 2. Karakter kedua adalah nomer kanal yang akan dikirimkan nilai nnn;

(9)

3. Karakter akan diperiksa dan dikonversi ke nilai byte dan dikirimkan ke kanal;

4. Kirim karakter 'OK' jika selesai, dan kirim karakter ERROR jika dijumpai kesalahan format maupun kegagalan pengiriman data.

Protokol untuk melakukan pembacaan nilai kanal mikrokontroller yang akan digunakan adalah sebagai berikut;

1. Pin Rx mikrokontroller menunggu karakter Rx[CR] -> dimana x adalah nilai 0 sampai dengan 3;

2. Karakter kedua adalah nomer kanal yang akan dibaca nilainya;

3. Kirim hasil pembacaan kanal jika selesai, dan kirim karakter ERROR jika dijumpai kesalahan format maupun kegagalan eksekusi.

Sehingga dapat dipahami bahwa dalam perancangan ini, mikrokontroller akan terus menunggu perintah yang diberikan oleh komputer yang terhubung dengan mikrokontroller melalui kanal serial. Jika terdapat data pada buffer serial mikrokontroller maka mikrokontroller akan melakukan komparasi dan memprosesnya sesuai dengan command/perintah yang telah diset didalamnya. Penjabaran umum perintah/command yang akan dieksekusi adalah sebagai berikut:

1. “Px=y” adalah perintah yang dikirim oleh komputer untuk mengeluarkan data 8 bit pada kanal pararel mikrokontroller dimana 'x' adalah nomer kanal yang akan digunakan dan 'y' adalah data 8bit yang akan diproses; contoh “P0=0” matikan semua bit data kanal 0, “P1=255” hidupkan semua bit data kanal 1.

(10)

2. “Rx” adalah perintah yang dikirim komputer untuk membaca data 8bit pada kanal pararel mikrokontroller dimana 'x' adalah nomer kanal yang akan dibaca datanya untuk dikirim mikrokontroller ke komputer.

Contoh: “P0” mikrokontroller akan membaca dan mengirimkan kondisi yang dibaca pada kanal 0, dan jika “P1” mikrokontroller akan membaca dan mengirimkan 8bit data yang dibaca pada kanal 1.

3. “I” adalah perintah yang dikirim komputer untuk memantau apakah perangkat yang terhubung adalah mikrokontroller yang dirancang untuk aplikasi ini atau bukan.

3.4 Hasil dan Penjelasan Perancangan Aplikasi Labview

Gambar 3.5 Front panel aplikasi

Pada gambar 3.5 ditunjukkan frontpanel aplikasi yang akan digunakan sebagai antarmuka pengguna untuk membaca dan mengendalikan kondisi dari tone control secara langsung melalui mikrokontroller yang terhubung melalui kanal serial. Berikut urutan dan cara penggunaan aplikasi:

(11)

1. Saat aplikasi telah muncul, lakukan pemilihan alamat perangkat yang akan digunakan.

2. Jika koneksi berhasil dilakukan maka indikator akan berubah berwarna merah, dan aplikasi siap untuk digunakan.

3. Setiap periode 500ms aplikasi akan melakukan pemantauan status tonecontrol dan meng-update tampilan aplikasi.

4. Setiap perubahan yang dilakukan secara manual pada perangkat tonecontrol akan dideteksi aplikasi AKTC.

5. Jika pengguna melakukan perubahan dengan meng-klik tombol-tombol yang disediakan maka aplikasi akan merespon dengan mengirimkan perintah-perintah yang telah dikonfigurasi dan didefinisikan oleh pelabelan tombol yang diberikan melalui kanal serial mikrokontroller dan merubah kondisi tonecontrol.

(12)

Gambar 3.7 Blok diagram penanganan perubahan tombol power

(13)

Gambar 3.9 Blok diagram status false power tonecontrol & seven segment

Gambar 3.10 Blok diagram status true power tonecontrol & seven segment

Gambar 3.11 Blok diagram penekanan tombol volume, bas dan treable

(14)

3.5 Kode Sumber Aplikasi Mikrokontroller

Kode sumber untuk mikrokontroller ditulis menggunakan aplikasi C51 keil uVision, pembahasan dilakukan melalui potongan-potongan sebagai berikut.

Gambar 3.13 Potongan 1 kode sumber

Pada gambar 3.13 ditunjukkan potongan kode sumber yang berisi definisi serangkaian karakter/konstanta statis yang akan digunakan untuk menjelaskan keberhasilan atau kegagalan mikrokontroller dalam mengeksekusi perintah yang dikirimkan oleh komputer melalui kanal serial.

Gambar 3.14 Potongan 2 kode sumber

Pada gambar 3.14 ditunjukkan potongan kode sumber yang berisi konstanta lineinput dengan tipe data array yang digunakan sebagai konstanta untuk menampung 1 baris perintah yang diterima mikrokontroller melalui kanal serial dan karakter port digunakan sebagai konstanta yang berisi penomeran kanal. static char code ok_msg[] = "OK";

static char code error_msg[] = "ERROR COMMAND";

static char code error_port[] = "ERROR: PORT NUMBER"; static char code error_assign[] = "ERROR: ASSIGN";

static char code error_value_enter[] = "ERROR: VALUE NOT EXIST";

static char code error_value_number[] = "ERROR: VALUE NOT IN RANGE";

static char code cmd_msg[]= "Enter Command:"; static char code aktc[]= "AKTC V1.0";

char lineinput[20]; char port;

#include <reg51.h> #include "stdlib.h"

(15)

Gambar 3.16 Potongan 4 kode sumber

Pada gambar 3.16 ditunjukkan potongan kode sumber yang digunakan sebagai fungsi dengan nama initSerial(). Fungsi tersebut berfungsi untuk mendefinisikan baudrate yang akan digunakan oleh kanal serial mikrokontroller. SCON diberikan nilai 0X50 mengindikasikan bekerja pada mode 1 dengan 8 bit UART dan mengaktifkan fungsi penerimaan. TMOD diberikan nilai 0X20 mengindikasikan bekerja pada timer 1 dengan mode 2 dan 8bit autoreload. TH1 diberikan nilai 0XFD mengindikasikan bekerja pada baudrate 9600bps. TR1 diset 1 untuk menjalankan timer1 dan TI diset 1 untuk mengirimkan karakter pertama pada UART.

Gambar 3.17 Potongan 5 kode sumber

Pada gambar 3.17 ditunjukkan potongan program yang digunakan sebagai fungsi untuk menunggu karakter pada pin Rx mikrokontroller dan memberikan karakter yang diterima buffer kanal serial jika terdapat karakter yang diterima. Jika indikasi karakter telah diterima, maka nilai RI=0 digunakan untuk mengaktifkan RX untuk dapat menerima data selanjutnya.

initSerial() { SCON = 0x50; TMOD = 0x20; TH1 = 0xFD; TR1 = 1; TI = 1; } char getchar() { while(!RI); RI = 0; return SBUF; }

(16)

Gambar 3.18 Potongan 6 kode sumber

Pada gambar 3.18 ditunjukkan potongan program putchar() yang digunakan sebagai fungsi untuk mengirimkan karakter melalui kanal serial pin Tx mikrokontroller. Dan fungsi put_newline() yang digunakan untuk mengirimkan linefeed dan karakter enter melalui kanal serial pin Tx mikrokontroller. Sedangkan fungsi print_string() digunakan untuk mengirimkan beberapa karakter melalui kanal serial pin Tx mikrokontroller.

void putchar(char ch) { while(!TI); TI = 0; SBUF = ch; } void put_newline() { putchar(0x0D); putchar(0x0A); } void print_string(char *ptr) { char ch; while((ch = *ptr++) != 0) { putchar(ch); } put_newline(); } void getlineinput() { unsigned char cnt; char ch; cnt = ch = 0; while(cnt < 19 && ch != 0x0D { ch = getchar(); if (ch != 0x0D) { lineinput[cnt++] = ch; //putchar(ch); } } lineinput[cnt] = 0; put_newline();}

(17)

Pada gambar 3.19 ditunjukkan potongan program getlineinput() yang digunakan sebagai fungsi untuk mendeteksi karakter akhir baris dan enter.

Gambar 3.20 Potongan 8 kode sumber

Pada gambar 3.20 ditunjukkan potongan program action_port() yang digunakan sebagai fungsi untuk melakukan aksi pengendalian kanal pararel mikrokontroller sesuai dengan perintah yang diterima melalui kanal serial mikrokontroller. Pada perancangan ini kanal pararel yang digunakan adalah pada void action_port()

{ unsigned char value; int value_int;

char *ptr = &lineinput;

/* Cek karakter dan kirim error jika dijumpai masalah*/ /* cek karakter “P”*/ if (*ptr++ != 'P') {print_string(&error_msg); return; } /* check port */ if ((port = *ptr++) < '0' || port > '3') { print_string(&error_port); return; } /* check assign */ if (*ptr++ != '=') { print_string(&error_assign); return; } /* check value exist */

if (*ptr == 0)

{ print_string(&error_value_enter); return; } // convert to byte from string input

value_int = atoi(ptr);

if (value_int < 0 || value_int > 255)

{ print_string(&error_value_number); return; } /* convert to byte */

value = value_int;

// assign value to port number if (port == '0') P0 = value; if (port == '1') P1 = value; if (port == '2') P2 = value; if (port == '3') P3 = value; // print ok print_string (&ok_msg); }

(18)

kanal 0. Perintah yang diterima terlebih dahulu akan diverifikasi formatnya, jika ditemui kesalah format perintah selanjutnya mikrokontroller akan mengirimkan kode kesalahannya. Dan jika format perintah yang diterima sudah benar/sesuai dengan pengaturan yang telah ditentukan maka mikrokontroller akan mengeksekusi perintah tersebut pada kanal pararel mikrokontroller dengan mengeluarkan data 8 bit yang diterima melalui kanal serial.

Gambar 3.20 Potongan 8 kode sumber

Pada gambar 3.20 ditunjukkan potongan program read_port() yang digunakan sebagai fungsi untuk membaca data 8bit kanal pararel mikrokontroller pada kanal 2. Pada perancangan ini kanal pararel yang digunakan adalah pada kanal 2. Perintah yang diterima terlebih dahulu akan diverifikasi formatnya, jika ditemui kesalah format perintah selanjutnya mikrokontroller akan mengirimkan kode kesalahannya.

Dan jika format perintah yang diterima sudah benar/sesuai dengan pengaturan yang telah ditentukan maka mikrokontroller akan mengeksekusi void read_port()

{

char *ptr = &lineinput;

/* evaluate string and send error if any exist */ /* check the 'P' character */

if (*ptr++ != 'R')

{print_string(&error_msg); return; } /* check port */

if ((port = *ptr++) < '0' || port > '3') { print_string(&error_port); return; } // assign value to port number

if (port == '0') putchar(P0); if (port == '1') putchar(P1); if (port == '2') putchar(P2); if (port == '3') putchar(P3); }

(19)

perintah tersebut pada kanal pararel mikrokontroller dengan mengirimkan data 8 bit melalui kanal serial.

Gambar 3.21 Potongan 10 kode sumber

Pada gambar 3.21 ditunjukkan potongan program inisialisasi_port() yang digunakan sebagai fungsi untuk penginisialisasian perangkat mikrokontroller. Perintah yang diterima terlebih dahulu akan diverifikasi formatnya, jika ditemui kesalah format perintah selanjutnya mikrokontroller akan mengirimkan kode kesalahannya.

Dan jika format perintah yang diterima sudah benar/sesuai dengan pengaturan yang telah ditentukan maka mikrokontroller akan mengeksekusi perintah tersebut pada kanal pararel mikrokontroller dengan mengirimkan identitas mikrokontroller melalui kanal serial. Pada kasus ini identitasnya adalah “AKTC v1.0”.

inisial_port(){

char *ptr = &lineinput;

/* evaluate string and send error if any exist */ /* check the 'I' character */

if (*ptr++ != 'I')

{print_string(&error_msg); return; } /* check port */

if ((port = *ptr++) < '0' || port > '3') { print_string(&error_port); return; } // assign value to port number

if (port == '0') {print_string(&aktc);return;} //print_string (&ok_msg);

(20)

Gambar 3.22 Potongan 11 kode sumber

Akhirnya kita jumpai program utama yang ditunjukkan pada gambar3.22. Dan berikut adalah penjelasannya, mikrokontroller akan memulai aplikasinya dengan melakukan inisialisasi kanal serial dan mengeluarkan data 0 pada kanal pararel 0. Kemudian melakukan pengulangan pemanggilan fungsi getlineinput() dan komparasi terhadap karakter yang diterima melalui kanal serial, jika karakter pertama adalah 'P' kerjakan fungsi action_port() jika karakter pertama adalah 'R' kerjakan fungsi read_port() dan jika karakter pertama adalah I maka kerjakan fungsi inisialisasi_port() dan jika bukan salah satu dari 3 karakter tersebut kirim pesan error melalui kanal serial.

void main() { initSerial(); P0=0X00; while(1) { put_newline();

/* send command string */

/* if use with visual basic (remote program), please removed */

/*print_string(&cmd_msg);

/* read line string from serial */ getlineinput();

/* action for port */

if(lineinput[0] == 'P') {action_port();} else

if(lineinput[0] == 'R') {read_port();} else

if(lineinput[0] == 'I')

{inisial_port();} else {print_string(&error_msg);} }

Gambar

Gambar 3.1 Blok diagram sistem perancangan
Gambar 3.2 Fungsi untuk pengelolaan kanal serial
Gambar 3.3 Source Pengiriman perintah ke kanal serial
Gambar 3.5 Front panel aplikasi
+7

Referensi

Dokumen terkait

Berdasarkan dari hasil Analisis Statistik dengan uji Mann Whitney bahwa diperoleh hasil signifikan karena nilai P= 0,0001 (0,0001&lt;0,05) artinya didapatkan bahwa ada

Pada penelitian ini terlihat bahwa PUFA n-3 pada ikan tuna loin segar dan tuna loin pemberian FS selama penyimpanan 4 minggu didominasi oleh DHA dan EPA yang berada pada

dijelaskan oleh Middlemas dkk., (2013) pada penelitiannya dengan HCl sebagai agen pelindi memberikan hasil bahwa waktu pelindian dan konsentrasi pelarut memiliki pengaruh

Pada kegiatan KKN-PPM Universitas Muhammadiyah Semarang pada tanggal 9 Februari 2018 hingga 27 Februari 2018 di Desa Jambu, dapat disimpulkan bahwa KKN ini

Jumlah partisipan sebanyak 4 pasien dan 4 keluarga untuk pre action research dengan accidental sampling, 6 perawat untuk action research dengan purposive sampling, 4 pakar

Berdasarkan hasil uji coba dari operasi date implementasi SQL dari database Nilai Mahasiswa dapat disimpulkan sebagai berikut: 1). Operasi date yang digunakan

Tujuan dari laporan tugas akhir ini adalah : (1) untuk mengetahui keuntungan produk Horenso dengan pendekatan harga pokok, dan (2) untuk mengetahui faktor-faktor non biaya

Sedangkan perbedaan penelitiaan yang dilakukan Paina dengan penelitian ini adalah pada objek kajian yang mana pada penelitian Paina meneliti tindak tutur komisif khusus