AN-0189 Aplikasi Micro Tank Dengan Remote Sony

Pada aplikasi kali ini akan membahas mengenai penggunaan protocol remote sony sebagai sarana untuk pengaturan robot micro tank. Micro tank ini sendiri dilengkapi dengan sensor infra merah yaitu TSSOP dan juga infraled diode untuk memancarkan sinyal infra merah sesuai dengan protocol remote sony. Adapun protocol remote sony adalah seperti dibawah ini:

Gambar 1 Protokol Remote Sony

Dari gambar 1 diatas dapat dilihat bentuk gelombang yang dipancarkan remote sony. Data remote itu sendiri terdiri dari :

  • Start bit
  • Space
  • 7 bit perintah
  • 5 bit alamat

Untuk pengiriman data, remote sony ini menggunakan data lsb duluan kemudian data msb. Sedangkan yang dibaca oleh mikrokontroler adalah output TSSOP, gambar bawah pada gambar 1. Dimana output dari TSSOP ini adalah kebalikan dari ouput remote sony, sehingga kita nanti pada program untuk pembacaan lebar pulsa ini kita baca pada level low. Untuk membedakan antara ‘0’ dan ‘1’ pada protocol remote sony ini menggunakan lebar pulsa, untuk ‘0’ lebar pulsanya 0,6 ms sedangkan untuk ‘1’ selebar 1,2 ms. Sedangkan untuk start bit lebar pulsanya sebesar 2,4 ms. Jadi nantinya pada program kita harus mengukur lebar pulsa tersebut untuk dapat membedakan start bit dan data.

Untuk memancarkan kembali kita juga harus menuruti aturan seperti diatas tersebut, dimana kita harus menghasilkan pulsa dengan lebar pulsa yang sesuai dengan remote sony. Hal ini diperlukan untuk kompatibilitas dengan remote sony, dan juga ini digunakan untuk proses tembakan yang digunakan oleh mini tank. Setelah kita memahami semua bentuk protocol dari remote sony baru kita bisa membuat program yang akan mendecode protocol dari remote sony tersebut.

TSSOP ini adalah komponen yang akan menerima sinyal infra merah, pada prinsipnya sinyal infra merah ini dimodulasikan pada frekuensi 40Khz. Sehingga sinyal infra merah yang dipancarkan bisa mencapai jarak yang jauh. Nantinya pada program untuk memancarkan sinyal infra merah ini akan memodulasikan sinyal infra merah pada frekuensi 40Khz. Pada TSSOP sudah terintegrasi rangkaian yang akan memodulasikan sinyal infra merah yang diterima, kemudian akan mengeluarkan pulsa ‘0’ jika menerima sinyal infra merah yang dimodulasikan pada frek 40Khz. Sehingga memudahkan kita dalam program, karena kita tidak perlu membuat program untuk mendemodulasikan sinyal infra merah yang diterima.

Setelah selesai membahas protocol remote sony yang kita gunakan untuk komunikasi data dari satu mini tank ke micro tank yang lain. Sekarang kita memahami bagian penggerak dari micro tank itu sendiri. Micro tank ini menggunakan 2 motor yang mini, sesuai dengan namanya, sehingga memudahkan kita dalam penggunaannya. Motor ini tidak membutuhkan arus yang besar sehingga tidak diperlukan driver untuk menggerakkan motor ini. Gambar berikut ini menggambarkan sambungan dari mikrokontroler ke motor. Dari gambar dapat dilihat rangkaian yang sangat sederhana. Mikrokontroler mampu memberikan arus sebesar 20 mA setiap output. Jadi untuk membuat motor bergerak maju dan mundur dengan cara mengatur level output mikrokontroler yang tersambung ke motor.

Hubungan Motor dengan Mikrokontroler

Setelah membahas sambungan maupun rangkaian kita mulai membahas program. Pertama kita akan membahas mengenai pembacaan remote sony, potongan program dibawah ini merupakan program yang digunakan untuk mendefinisikan port mikro sebagai input, mengaktifkan timer untuk mengukur lebar pulsa dari sinyal infra merah yang diterima.

DDRD=0xFB

PORTD=0×04

void baca data infra(void)

{

uint8_t i;

perintah infra=0;

alamat infra=0;

TCCR1B=0×02;

TCNT1=0;

while( !(PIND & 0×04) );

if( TCNT1>2400 )

{

while( PIND & 0×04);

for( i=0; i<7; i++ )

{

TCNT1=0;

while( !(PIND & 0×04) );

if( TCNT1>1200 ) perintah infra|=0×80;

while( PIND & 0×04 );

perintah infra>>=1;

}

for( i=0; i<5; i++)

{

TCNT1=0;

while( !(PIND & 0×04) );

if( TCNT1>1200 ) alamat infra|=0×80;

while( PIND & 0×04 );

alamat infra>>=1;

}

}

perintah infra&=0×7F;

alamat infra>>=2;

alamat infra&=0×1F;

TCCR1B=0×00;

}

Pada potongan program diatas, baris 1 untuk mendefinisikan port d.2 sebagai input, kemudian baris 2 untuk mengaktifkan pull up pada port tersebut. Pada prosedur baca data infra kita harus mengisikan data perintah dan alamat infra dengan nilai 0. Kemudian mengaktifkan timer 1 dengan frek 1 Mhz, dan kita harus mengisikan nilai timer dengan 0 . Kemudian menunggu selama pin infra merah dalam level low, itu dilakukan dengan perintah “while (!(PIND&0×04))” kemudian kita ukur lebar pulsa yang diterima. Hal ini dilakukan dengan membaca nilai timer, karena timer tadi kita aktifkan dengan frek 1Mhz maka didapat periode = 1us. Setelah didapat lebar pulsa, kemudian dicek apakah lebar pulsanya mencapai 2,4ms, jika ya berarti ada start bit yang diterima, lihat gambar 1,kita lanjutkan untuk pengecekan  data perintah dan data alamat yang dikirimkan. Pada gambar 1 terlihat setelah start bit maka berikutnya adalah data perintah sebanyak 7 bit, maka diperlukan pembacaan lebar pulsa sebanyak 7 kali. Pada potongan program diatas terlihat “for(i=0;i<7;i++)” perintah ini merupakan perintah untuk melakukan pengulangan. Kemudian dilakukan pengukuran lebar pulsa, jika lebar pulsa=1,2 ms maka data bitnya adalah 1 sedangkan jika 0,6ms data bitnya ‘0’ , setelah dilakukan pengukuran lebar pulsa, data bit digeser 1 bit kekiri ini dilakukan karena pada pengiriman data remote sony adalah lsb duluan. Setelah dilakukan pengecekan perintah infra berikutnya kita harus melakukan pengecekan alamat infra, alamat infra ini sebanyak 5 bit, lihat gambar 1. Prosedur pengukuran lebar pulsa pada pengecekan alamat infra ini sama dengan pengecekan perintah infra, yang beda hanya banyak pengulangan yang dilakukan.

Data dari setiap tombol yang ada pada remote sony berbeda-beda perintahnya, kita tinggal menentukan tombol mana saja yang digunakan untuk menggerakkan robot. Hal ini dapat dilakukan dengan menampilkan data remote yang diterima melalui serial port. Pada saat tombol di remote  ditekan secara terus menerus maka dilakukan pengiriman data secara terus menerus juga dengan jeda waktu 30ms. Berikutnya setelah data diterima tinggal kita menerjemahkan data tersebut menjadi pergerakan robot.

Berikut ini diberikan potongan program untuk menggerakkan robot mini tank, sebenarnya untuk pergerakan robot ini progamnya sangat mudah, hanya diperlukan untuk mengatur port-port mikro. Karena motor langsung terhubung ke port mikro dan tidak menggunakan driver motor.

void belok kanan(void)

{

ML_P_OUT;

ML_M_OUT;

MR_P_OUT;

MR_M_OUT;

ML_P_HIGH;

ML_M_LOW;

MR_P_HIGH;

MR_M_LOW;

}

void belok kiri(void)

{

ML_P_OUT;

ML_M_OUT;

MR_P_OUT;

MR_M_OUT;

ML_M_HIGH;

ML_P_LOW;

MR_M_HIGH;

MR_P_LOW;

}

void mundur(void)

{

ML_P_OUT;

ML_M_OUT;

MR_P_OUT;

MR_M_OUT;

ML_P_HIGH;

ML_M_LOW;

MR_M_HIGH;

MR_P_LOW;

}

void maju(void)

{

ML_P_OUT;

ML_M_OUT;

MR_P_OUT;

MR_M_OUT;

ML_M_HIGH;

ML_P_LOW;

MR_P_HIGH;

MR_M_LOW;

}

void berhenti(void)

{

ML_P_IN;

ML_M_IN;

MR_P_IN;

MR_M_IN;

}

Dengan potongan program diatas sudah dapat menjalankan robot micro tank untuk bergerak maju, mundur, belok kiri dan belok kanan.

Selamat berkreasi

Tags: , , ,

Leave a Reply