• Tidak ada hasil yang ditemukan

Mekanisme Penarikan Kartu Melewati Sensor Pembaca Barcode

BAB IV ANALISA DAN PEMBAHASAN

4.1.2. Mekanisme Penarikan Kartu Melewati Sensor Pembaca Barcode

Mekanik penarikan kartu digunakan untuk melewatkan kartu ke sensor pembaca

barcode. Mekanik penarik kartu terdiri dari penjepit dan sensor limit switch yang digunakan untuk mendeteksi adanya kartu dan batasan untuk motor stepper harus berhenti. Mekanik penarikan kartu terdiri dari penjepit kartu dan tiga sensor limit switch. Penjepit kartu berfungsi untuk menjepit kartu supaya pada saat mengerakkan kartu melewati sensor kartu tidak bergerak – gerak. Sensor limit switch ada tiga fungsi yang berbeda – beda. Sensor limit switch depan berfungsi untuk indikator batas depan motor stepper bergerak maju. Saat limit switch depan aktif maka motor stepper akan berhenti menandakan untuk mengeluarkan kartu serta kondisi siap untuk menarik kartu. Limit switch tengah berfungsi untuk mendeteksi adanya kartu. Sedangkan limit switch belakang berfungsi untuk batas belakang motor stepper bergerak atau untuk indikasi pembacaan kode barcode untuk semua karakter sudah selesai.

Mekanisme penarikan kartu juga merupakan hal terpenting pada mesin pembaca

barcode kode 3 of 9. Penggerak kartu melewati sensor pembaca barcode menggunakan

motor stepper. Pergerakan satu langkah motor stepper dirancang hanya melewati satu bar

atau space sempit saja sehingga setiap langkah motor stepper sensor pembaca barcode

akan membaca garis hitam atau putih pada kondisi itu juga. Akan tetapi pergerakan motor stepper ternyata tidak dapat stabil sehingga menyebabkan dalam satu langkah pergerakan

motor stepper bisa melewati lebih dari satu bar atau space sempit sehingga menyebabkan kesalahan dalam pembacaan data identitas dari kartu tersebut.

Mengacu rumus 2.6 dengan menggunakan diameter roda motor stepper 1 cm dan resolusi sudut setiap step adalah 1.80 maka jarak yang ditempuh motor stepper dalam satu

step adalah ;

X =

X = 1,57 mm

Maka dalam satu stepmotor stepper kartu bergeser 1,57 mm, sendangkan lebar bar dan

space sempit yang harus dilewati hanya 0,578 mm. maka dengan demikian dalam satu langkah motor stepper saja sudah melewati dua bar atau space sempit saja. Roda motor stepper mengunakan roda pada bekas printer. Karena ketika mencoba membuat roda sendiri putaran motor tidak setabil karena gerigi dari roda tersebut tidak stabil sehingga menyebabkan putarannya tidak stabil begitu juga dengan pergeseran kartunya. Sehingga dengan jarak pergeseran kartu yang dalam satu kali lagkah saja sudah melewati dua bar

atau space sempit maka untuk membedakan garis hitam dan putih saja akan mengalami kesalahan. Karena dalam satu langkah maka sensor akan membaca hitam dan putihnya pada saat itu juga, maka dengan begitu untuk membedakan bar atau space lebar tidak dapat dilakukan. Bentuk fisik mekanik kartu dapat dilihat pada gambar 4.7.

Gambar 4.8. Mekanik Penarikan Kartu

Motor stepper akan bergerak ketika sensor pendeteksi kartu aktif, sensor pendeteksi kartu mengunakan limit switch yang dihubungkan ke ground. Motor stepper akan bergerak untuk menarik sensor pembaca barcode sampai sensor limit switch belakang aktif. Setelah sensor limit switch aktif motor stepper akan bergerak untuk mengeluarkan kartu identitas

sampai sensor limit switch depan aktif. Penempatan sensor yang digunakan dapat dilihat pada gambar 4.7.

Proses pembacaan barcode dilakukan ketika dilakukan ketika sensor pendeteksi kartu aktif maka motor stepper akan bergerak untuk melakukan proses pembacaannya. Pada proses pembacaan kartu identitas bergerak melewati sensor pembaca barcode. Motor stepper akan bergerak untuk mengerakkan kartu melawati sensor untuk proses pembacaan dan mengeluarkan kartu. Motor stepper akan bergerak mengeluarkan kartu sampai sensor

limit switch depan aktif. Saat kartu belum diambil maka buzzer akan berbunyi sampai kartu diambil. Buzzer berbunyi ketika proses pembacaan selesai dan sensor pendeteksi katu aktif dan sensor limit switch depan aktif. Setelah kartu diambil maka mesin pembaca dapat untuk melakukan pembacaan kartu identitas berikutnya. Proses pergerakan kartu dapat dilihat pada potongan program berikut:

void mechanics(void){ unsigned int i, j;

if (deteksi_kartu == 0){ //jika kartu terdeteksi jalankan perintah delay_ms(200); //delay 200ms

if (deteksi_kartu == 0){ //apakah kartu masih terdeteksi? for (j = 0; j <=2; j++){ buzzer = 1; delay_ms(500); buzzer = 0; delay_ms(200); #asm("wdr") }

goto lanjutkan; //bila kartu masih terdeteksi, lanjutkan proses }

else return; //jika kartu tidak terdeteksi, loop lanjutkan:

lcd_clear(); //bersihkan layar LCD

lcd_gotoxy(0,0); //posisikan kursor pada baris 0 kolom 0

lcd_putsf("-CARD DETECTED!-"); //tulis pada LCD baris 0 mulai dari kolom 0 lcd_gotoxy(0,1); //posisikan kursor pada baris 1 kolom 0 lcd_putsf("PROCESSING.. "); //tulis pada LCD baris 1 mulai dari kolom 0 while (limit_switch_belakang != 0){ //jika limit switch belakang aktif

lcd_gotoxy(0,1); //posisikan kursor pada baris 1 kolom 0 lcd_putsf("PROCESSING.. "); //tulis pada LCD baris 1 mulai dari kolom 0 for (i = 0; i <=1; i++){ //loop bwt LCD blink

rv_step(); //motor stepper (memasukkan kartu) #asm("wdr")

if (limit_switch_belakang == 0){ //jika limit switch belakang aktif, break; //break

} }

lcd_gotoxy(0,1); //letakkan kursor lcd_putsf("PROCESSING... ");

for (i = 0; i <=1; i++){ rv_step();

if (limit_switch_belakang == 0){ break; } } } if (limit_switch_belakang == 0){ PORTC = 0x00; delay_ms(100); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("READING BARCODE "); lcd_gotoxy(0,1); lcd_putsf("PLEASE WAIT.. "); delay_ms(500); //delay 500ms if (flag != 1){ for (j = 0; j <=3; j++){ buzzer = 1; delay_ms(300); buzzer = 0; delay_ms(100); #asm("wdr") }

lcd_clear(); lcd_gotoxy(0,0);

lcd_putsf("READING FAILURE "); lcd_gotoxy(0,1);

lcd_putsf("PLS REPEAT STEP!"); } else{ flag=0; #asm("wdr") buzzer = 1; delay_ms(500); buzzer = 0; delay_ms(200); buzzer = 1; delay_ms(1500); buzzer = 0; delay_ms(200); } delay_ms(100); while (limit_switch_depan != 0){ fw_step(); #asm("wdr")

}

buzzer = 1; lcd_clear(); lcd_gotoxy(0,0);

lcd_putsf("TAKE YOUR CARD!!"); lcd_gotoxy(0,1); lcd_putsf("PLEASE... "); while (deteksi_kartu == 0){ buzzer = 1; #asm("wdr") } if (deteksi_kartu != 0){ buzzer = 0; delay_ms(200); lcd_clear(); lcd_gotoxy(0,0);

lcd_putsf("-BARCODE READER-"); lcd_gotoxy(0,1);

lcd_putsf("- INSERT CARD! -"); return;

} }

else #asm("wdr") }

else #asm("wdr") }

Fungsi mechanics merupakan proses dimana kapan serta mengatur pergerakkan maju atau mundur motor stepper harus bergerak serta menentukan kapan harus mengaktifkan serta membaca barcode. Pertama sensor pendeteksi kartu akan melihat apakah ada kartu atau tidak. Jika tidak ada kartu maka akan menampilkan pesan pada LCD pada baris atas “ -BARCODE READER-“ dan pada bari kedua akan menampilkan “ -INSERT CART-“. Ketika sensor mendeteksi kartu maka mikrokontroler akan mengerakkan motor stepper

untuk menarik kartu sampai sensor belakan aktif. Pada saat motor stepper bergerak menarik kartu LCD akan menampilkan “-CARD DETECTED!-“ pada baris pertama dan “PROCESSING.. “ pada baris kedua. Pada saat sensor pendeteksi aktif mikrokontroler juga akan menhidupkan buzzer selama 500 ms dan kemudian kan mengerakkan kartu untuk melewati sensor pembaca. Pada saat mikrokontroler membaca barcode akan menampilkan pesan pada LCD “READING BARCODE” pada baris pertama dan “PLEASE WAIT.. “. Kemudian mikrokontroler akan menggerakkan motor stepper untuk mengeluarkan kartu setelah pembacaan sudah selesai. Untuk indikasi pembacaan sensor sudah selesai mnggunkana sensor limit switch belakang. Ketika limit swich belakang aktif

motor stepper akan bergerak mundur untuk mengeluarkan kartu. Motor stepper akan berhenti ketika sensor limit swich depan sudah aktif. Jika sensor limit swich depan sudah aktif dan sensor pendeteksi kartu masih aktif maka mikrokontroler akan menghidupkan

buzzer sampai kartu diambil. Setelahkartu diambil mikrokontroler sidah siap untuk melakukan pembacaan kartu identitas lainnya. Sedangkan program untuk step maju dan

step mundur pergerakan motor stepper dapat dilihat pada potongan program dibah ini : void fw_step(void){

PB_0 = 1; delay_ms(40); PB_0 = 0;

PB_1 = 1; delay_ms(40); PB_1 = 0; PB_2 = 1; delay_ms(40); PB_2 = 0; PB_3 = 1; delay_ms(40); PB_3 = 0; } void rv_step(void){ PB_3 = 1; delay_ms(40); PB_3 = 0; PB_2 = 1; delay_ms(40); PB_2 = 0; PB_1 = 1; delay_ms(40); PB_1 = 0; PB_0 = 1; delay_ms(40);

PB_0 = 0; }

Pergerakan motor stepper untuk setiap stepnya menggunakan delay 40 ms. Pulsa input

motor stepper melalui port PB0-3 yang akan aktif bergaintian agar motor stepper dapat bergerak. Inputan motor stepper mengunakan logika tinggi. Pergerakan motor stepper

dengan gerakan full step.

Dokumen terkait