Pengendalian Motor Servo Program Lengan Robot

dilakukanlah penentuan basis data yang akan digunakan dengan bantuan fungsi switch- case . Nilai data pada variabel dijadikan sebagai acuan dalam switch. Program perekaman pengenalan ucapan dibuat sesuai perancangan diagram blok pada gambar 3.6. Penulisan program untuk melakukan perekaman sebagai berikut. sample_length=1; sample_freq=6000; sample_time=sample_lengthsample_freq; x=wavrecordsample_time, sample_freq; wavwritex, sample_freq,

s.wav ;

axeshandles.axes1 plotx; xlabel Times ; ylabel Amplitude , ... title INPUT UCAPAN ; x=wavread s.wav ; Durasi waktu yang digunakan pada proses rekam suara adalah 1 detik dengan frekuensi sampling 6000 Hz L1. Proses perekaman menggunakan bantuan fungsi yaitu “wavrecord”. Struktur penulisan ini yaitu “wavrecordn,fs”. Nilai “n” merupakan jumlah data yang ingin dicuplik sedangkan “fs” merupakan frekuensi sampling. Nilai frekuensi sampling yang digunakan yaitu 6000 Hz, maka agar pencuplikan terjadi selama 1 detik nilai data tercuplik sebesar 6000. Data hasil rekaman tersebut kemudian ditampilkan dalam bentuk g rafik dengan menggunakan fungsi “plot”. Fungsi “axeshandles.axes1” digunakan untuk memilih axis mana pada kolom plot ucapan sebagai tempat penampil grafik, maka dituliskan sebelum fungsi “plotx”. Fungsi “xlabel”, “ylabel”, dan “title” digunakan untuk memberikan keterangan pada grafik sumbu x dan y, serta memberi judul grafik. Program preprocessing dilakukan agar masuukan data sinyal ucapan dapat diolah terlebih dahulu sebelum dilakukan proses ekstraksi. Program preprocessing terdiri dari 4 bagian yaitu pre emphasis, normalisasi, pemotongan sinyal dan zero padding. Program preprocessing dituliskan sebagai berikut: Preemphasis b0=0.3; x0=x; usig=2048; alpha=0.95; for k=2:lengthx0 x0k=x0k-alphax0k-1; end Normalisasi x1=x0maxabsx0; PEMOTONGAN SINYAL: Potong kiri b1=findx1b0 | x1-b0; x11:b11=[]; Potong kanan x2=fliplrx1; b2=findx2b0 | x2-b0; x21:b21=[]; x2=fliplrx2; ZERO PADDING x2usig=0; x3=x21:usig; Proses pre emphasis merupakan proses awal dimana sinyal masukan akan di update nilainya dari sebelumnya. Nilai pre emphasis menggunakan fungsi for dan dimulai dari 2 dimana jika dimulai dari 1 tidak terdapat nilai sebelumnya. Proses perhitungan pre emphasis sesuai pada perancangan dengan nilai alpha 0.95. Proses pre emphasis mengacu pada flowchart yang telah dibuat pada gambar 3.7 Proses normalisasi melakukan perubahaan skala pada data dengan memasukan rumus sesuai pada perancangan. Terdapat fungsi Matlab untuk memudahkan program yakni “max” untuk mencari nilai tertinggi dan “abs” untuk mengubah semua data menjadi mutlak atau bernilai positif. Proses normalisasi mengacu pada perancangan flowchart yang telah dibuat pada gambar 3.8 Proses pemotongan sinyal dimulai dengan mencari data yang akan dihilangkan dengan bantuan fungsi pada Matlab yakni “find”. Nilai data yang dicari berada pada kondisi lebih besar dari batas potong atau lebih kecil dari negatif batas potong. Hasil dari fungsi “find” tidak menampilkan nilai datanya melainkan menampilkan nomor urutan datanya. Data urutan pertama dari fungsi “find” menjadi batas akhir pemotongan data, sehingga data hasil normalisasi akan dihilangkan dari awal hinggi data tersebut. Pemotongan tersebut terjadi pada sisi awal, agar data sisi akhir dapat dihilangkan maka urutan data harus dibalik terlebih dahulu menggunakan fungsi “fliplr”. Langkah pemotongan sinyal tersebut sama seperti pemotongan sisi awal, setelah dihilangkan maka urutan dikembalikan seperti semula dengan fungsi “fliplr”. Fungsi “fliplr” merupakan membalikan sinyal dari sisi kiri menjadi kanan dan sebaliknya. Proses pemotongan sinyal mengacu pada flowchart yang telah dibuat pada gambar 3.9 Proses zero padding dilakukan dengan menambahkan dengan deretan nilai data “0” stelah data hasil pemotongan sinyal. Terdapat pendeklarasian variabel “usig” yang merupakan ukuran deretan data dengan nilainya sebanyak 2048 sesuai perancangan. Program penambahan deretan “0” hingga data ke 2048 dituliskan “x2usig=0”. Variabel “x2” merupakan data hasil pemotongan sinyal yang sebelumnya telah dideklarasikan, maka “x2usig=0” yaitu data ke 2048 pada deretan nilai variabel „x2” diberi nilai 0. Proses zero padding mengacu pada flowchart yang telah dibuat pada gambar 3.10. Setelah proses preprocessing dilanjutkan dengan proses framing dan windowing sebelum masuk pada tahap proses ektraksi ciri. Program framing dan windowing dituliskan sebagai berikut: Segmentasi dan windowing hamming pjseg=512; ovlseg=128; h=hammingpjseg; n=1;k=1; while n==1 pjx0=lengthx3; if pjx0=pjseg xseg=x31:pjseg; xseg=xseg.h; segmtx:,k=xseg; x31:pjseg-ovlseg=[]; k=k+1; elseif pjx0==0 n=0; else x3pjseg=0; xseg=x3.h; segmtx:,k=xseg; n=0; end end Pada tahap proses framing dan windowing dibutuhkan pendeklarasian nilai panjang frame[9]dan nilai overlap[26]. Proses framing menggunakan program while dimana mencari kesamaan data dengan panjang frame. Didalam proses framing terdapat proses windowing dmana berfungsi untuk membuat pola pada sinyal. Hasil dari zero padding akan di bandingan panjang sinyal data dengan panjang frame . Jika data lebih besar dari panjang frame lalu di windowing hamming lalu akan di kurangi dengan nilai overlap pada pendeklarasian sebesar 128. Jika data lebih kecil dari panjang frame akan ditambahkan 0 sesuai panjang frame . Pada proses windowing yang terdapat pada framing menggunakan jendela hamming. Proses Matlab terdapat fungsi untuk menggunakan jendela hamming dengan formula”hammingL”. Variabel “L” merupakan banyaknya deretan data yang akan diproses. Penulisan program yang dipakai untuk menentukan pola hamming ditulis “hammingpjseg”. Hasil windowing hamming ini akan digunakan didalam proses framing. Proses framing dan windowing mengacu pada flowchart yang ditulis pada gambar 3.11. Program ektraksi ciri terdapat 2 proses yaitu transformasi menggunakan DFT dan segment averaging. Program ektraksi ciri dituliskan sebagai berikut: Ektraksi ciri menggunakan DFT [baris,kolom]=size segmtx; for k=1:kolom hdft=absdftxsegmtx:,k; x4:,k=hdft:; end x4=x4:; x4=x41:lengthx42,:; Segment averaging x5=reshapex4,varsegment,[]; x5=meanx5; x=x5:; axeshandles.axes2 barx; xlabel Times ; ylabel Amplitude , ... Pada ektraksi ciri pemanggilan fungsi dft digunakan fungsi eksternal dmana program dibuat terpisah dari program inti . Fungsi ekternal dibuat mengacu pada rumus 2.5. Program fungsi ekternal untuk ektraksi ciri dft dituliskan sebagai berikut : Perhitungan DFT function y=dftx N=lengthx; y=zeros1,N; for k=1:N for n=1:N w=exp-1i2pik-1n-1N; a=xnw; yk=yk+a; end end Proses transformasi dilakukan dengan memanggil fungsi yang sudah dibuat pada M-file dengan nama fungsi DFT , kemudian nilai datanya diabsolutkan dengan bantuan fungsi Matlab “abs”. Pada fungsi ekternal dft mengacu pada persamaan 2.5 dengan indeks n pada persamaan dimulai dari 1 dikarenakan pada matlab tidak mengenal indeks 0[28]. Proses transformasi tersebut dilanjutkan dengan mengambil setengan bagian kiri sinyal data dengan program yang ditulis “x4=x41:lengthx42,:”. Fungsi “length”merupakan fungsi untuk mencari banyaknnya deretan data, sehingga fungsi “lengthx4 akan mencari banyaknnya deretan data pada variabel x4. Variabel “x4” merupakan hasil dari transformasi DFT. Program mengacu pada flowchart perancangan gambar 3.12.