50 Terlihat setelah diberikan sebuah tambahan resistor, keluaran dari sensor ini
menjadi sebesar 9,08 VDC saat kondisi
high
dan 0,766 VDC saat kondisi
low
. Tegangan keluaran ini nantinya akan masuk kedalam pegendali utama, dan akan di olah
menjadi sebuah besaran sudut. Oleh karena tegangan yang boleh masuk kedalam pin pengendali utama hanya sebesar 5 VDC untuk kondisi
high
, maka sistem kontrol keluaran sensor
rotary encoder
perlu tambahan sebuah pembagi tegangan.
Gambar 4.8. Pengujian akhir pengendali keluaran
rotary encoder
. Setelah diberikan sebuah pembagi tegangan, keluaran yang dihasilkan oleh sensor
menjadi sebesar 4,778 VDC untuk kondisi
high
dan 0.029VDC untuk kondisi
low
. Dengan hasil tersebut, maka keluaran dari sensor
absolute rotary encoder
sudah aman dan dapat dimasukkan kedalam pin arduino.
4.3.1.2. Pengujian Kode Biner Keluaran
Absolute Rotary Encoder
Pengujian kode biner dilakukan untuk mengetahui nilai variasi kode biner yang di hasilkan oleh sensor
rotary encoder
. Pengujian dilakukan dengan menggunakan 10 buah LED yang menandakan 10 bit keluaran dari sensor
rotary encoder
yang digunakan. Hasil pengukuran dapat dilihat pada tabel 4.1.
51 Tabel 4.1. Hasil pengujian kode biner keluaran
rotary encoder
. Output Biner Bit Ke-
Desimal Desimal
BCD 9 8 7 6 5 4 3 2 1 0
0 0 1 0 1 0 0 1 1 0
166 106
0 0 1 0 1 1 0 1 1 0
182 116
0 0 1 1 0 0 0 1 1 0
198 126
0 0 1 1 0 1 0 1 1 0
214 136
0 0 1 1 1 0 0 1 1 0
230 146
0 0 1 1 1 1 0 1 1 0
246 156
0 1 0 1 1 0 0 1 1 0
358 166
0 1 0 1 1 1 0 1 1 0
374 176
0 1 1 0 0 0 0 1 1 0
390 186
0 1 1 0 0 1 0 1 1 0
406 196
0 1 1 0 1 0 0 1 1 0
422 206
0 1 1 0 1 1 0 1 1 0
438 216
0 1 1 1 0 0 0 1 1 0
454 226
0 1 1 1 0 1 0 1 1 0
470 236
0 1 1 1 1 0 0 1 1 0
486 246
0 1 1 1 1 1 0 1 1 0
502 256
1 0 0 1 1 0 0 1 1 0
614 266
1 0 0 1 1 1 0 1 1 0
630 276
1 0 1 0 0 0 0 1 1 0
646 286
1 0 1 0 0 1 0 1 1 0
662 296
1 0 1 0 1 0 0 1 1 0
678 306
1 0 1 0 1 1 0 1 1 0
694 316
1 0 1 1 0 0 0 1 1 0
710 326
1 0 1 1 0 1 0 1 1 0
726 336
1 0 1 1 1 0 0 1 1 0
742 346
1 0 1 1 1 1 0 1 1 0
758 356
1 1 0 1 1 0 0 1 1 0
870 366
1 1 0 1 1 1 0 1 1 0
886 376
1 1 1 0 0 0 0 1 1 0
902 386
1 1 1 0 0 1 0 1 1 0
918 396
1 1 1 0 1 0 0 1 1 0
934 406
1 1 1 0 1 1 0 1 1 0
950 416
1 1 1 1 0 0 0 1 1 0
966 426
1 1 1 1 0 1 0 1 1 0
982 436
1 1 1 1 1 0 0 1 1 0
998 446
1 1 1 1 1 1 0 1 1 0
1014 456
1 1 1 1 1 1 1 1 1 1
1023 465
52 Dari hasil pengujian yang dilakukan didapatkan 360 macam variasi biner,
sedangkan pada tabel 4.1 hanya menampilkan hasil pengukuran sebanyak 36 macam variasi biner yang dimulai dari 0010100110
2
sampai 1111111111
2
. Pada tabel 4.1 hasil percobaan yang ditunjukkan hanya 36 jenis variasi biner dengan kenaikan 10 bit.
Terlihat hasil pada tabel 4.1 kode biner yang dihasilkan tidak dimulai dengan kode biner 10 bit seperti pada umumnya, yaitu 0000000000
2
, melainkan dimulai dengan 0010100110
2
. Hal ini dikarenakan tipe sensor
rotary encoder
yang digunakan adalah tipe
absolute
, yang pada dasar teori subbab 2.4.1.1 telah dijelaskan bahwa kode biner yang dihasilkan oleh
rotary encoder
tipe
absolute
sangat unik karena bergantung pada susunan segmen pada piringan optik yang ada pada sensor tersebut.
Pengkodean biner pada sensor ini sendiri adalah BCD
code
, dimana BCD
code
merupakan sistem pengkodean biner bilangan desimal yang sistem konversinya bukan secara keseluruhan, melainkan konversi satu per satu. Cara konversi kode biner menjadi
desimal pada BCD
code
dilakukan dengan membagi 10 bit keluaran
rotary encoder
menjadi 3 bagian, dimana setiap bagiannya terdiri dari 4 bit dimulai dari bit paling kecil hingga bit paling besar secara berurutan. Dikarenakan pada sensor ini keluaran yang
dihasilkan hanya 10 bit, maka diberikan 2 bit tambahan yang nilainya tidak mempengaruhi nilai 10 bit keluaran sebenarnya dari sensor
rotary encoder
yaitu 00
2
untuk bit 11 dan 12. Seperti terlihat pada tabel 3.2, 4 bit pertama bit 0, 1, 2, 3 merupakan nilai satuan desimal, kemudian 4 bit selanjutnya bit 4, 5, 6, 7 merupakan
nilai puluhan desimal, dan 4 bit terakhir bit 8, 9, 10, 11 merupakan nilai ratusan desimal. Berikut ini adalah contoh konversi BCD
code
yang dihasilkan oleh sensor
rotary encoder
menjadi desimal berdasarkan tabel 3.2. BCD : 1111111111
0011-1111-1111 BCD : 0010100110
0000-1010-0110 1111
8+4+2+1 x 1 = 15 0110
0+4+2+0 x 1 = 6 1111
8+4+2+1 x 10 = 150 1010
8+0+2+0 x 10 = 100 0011
0+0+2+1 x 100 = 300 0000
0+0+0+0 x 100 = 0 Desimal : 15+150+300 = 465
Desimal : 6+100 = 106 Dapat dilihat pada hasil perhitungan tersebut nilai maksimum dan minimum
desimal adalah 465 dan 106. Karena hasil perhitungan menunjukkan nilai desimal tersebut ada 360 nilai, maka nilai desimal tersebut dapat di konversi kembali menjadi
53 sudut dari 0°-359°. Oleh karena itu dapat disimpulkan bahwa sensor ini dapat
menghasilkan perubahan sudut sebesar 1° untuk setiap satu perubahan 1 bit kode biner. Untuk mengkonversi nilai desimal yang didapatkan menjadi besaran sudut, maka
yang perlu diperhatikan adalah rentang nilai sudut yang diinginkan. Pada tugas akhir ini rentang nilai yang dipilih ada -179° sampai 180° dengan nilai tengah adalah 0°. Nilai
tengah ini merupakan nilai
setpoint
yang ingin dicapai oleh batang pendulum sehingga batang pendulum tegak lurus keatas. Berikut ini potongan
coding
program untuk mendapatkan nilai sudut.
Desimal = a + b + c + d + e + f + g + h + i + j; Sudut=DesTemp-Desimal;
ifSudut180 {
SudutTemp = Sudut-180; SudutTemp = SudutDelta-SudutTemp;
Sudut = SudutTerkecil-SudutTemp; }
Variable a
sampai
j
pada potongan program diatas merupakan nilai desimal yang dihasilkan oleh keluaran sensor untuk masing-masing bit, dimulai dari
variable a
untuk bit0 sampai
variable j
untuk bit9. Kemudian
variable
Desimal adalah jumlah desimal keseluruhan bit dari sensor. Setelah itu, cari nilai desimal dari sudut 0° untuk
menentukan rentang nilai sudut dari -179° sampai 180°hal ini dilakukan dengan cara manual. Kemudian dilakukan pengecekan secara manual kembali untuk melihat apakah
rentang nilai sudut sudah benar. Cara yang dilakukan adalah dengan melihat nilai sudut apakah ada sudut yang melebihi 180° atau lebih kecil dari -179°. Jika ada yang di luar
rentang nilai sudut yang di inginkan, maka nilai sudut tersebut akan dipaksa menjadi minimal -179° atau maksimal 180°. Cara yang digunakan adalah dengan menambahkan
nilai yang berlebih tersebut kepada nilai sudut yang kurang.
Variable
SudutDelta adalah nilai selisih sudut yang terbaca dengan rentang sudut normal yang sudah ditentukan
kemudian ditambah 1. Misal hasil pengujian didapatkan sudut terkecil adalah -138° dan
54 sudut terbesar adalah 221°, maka SudutDelta adalah 42 dan SudutTerkecil adalah -138°.
Variable
SudutTemp adalah nilai sudut sementara yang digunakan untuk menentukan nilai sudut 0°.
Variable
Sudut adalah nilai sudut yang rentang nilainya adalah -179° sampai 180°.
4.3.1.3. Pengujian Sudut Absolute Rotary Encoder