Anda di halaman 1dari 6

Kementrian Pendidikan dan Kebudayaan

Direktorat Pendidikan Tinggi Vokasi dan Profesi


Politeknik Negeri Malang

TUGAS MANDIRI 1

TUGAS MANDIRI 1
SISTEM MIKROKONTROLER 2

ROTARY ENCODER

Nama : Irvan Sandi Manullang


Kls : 2BD3TE
No Abs : 10

a. Jelaskan prinsip kerja dari program yang saudara buat sehingga


Mikrokontroler dapat mengenali bahwa Rotary encoder diputar ke kiri atau ke
kanan.

b. Berikan contoh penerapan rotary encoder

Jawaban Pertanyaan:

a. Pada percobaan kali ini input yang digunakan yaitu Rotary Encoder, dimana
terdapatsensor optik A dan B yang mendeteksi adanya cahaya(infrared) dari Led
dan mengubahnya menjadi pulsa. Sinyal pulsa inilah yang nantinya digunakan
untuk inputan kepada mikrokontroller sebagai pendeteksi apakan rotary encoder
bergerak CW atau CCW.

Untuk memprogramnya, kita dapat menggunakan interrupt dan port input.


Mikrokontroller dapat mengenali arah rotary dari pulsa A dan pulsa B. Pulsa A
digunakan untuk menginterupsi program dan pulsa B digunakan sebagai pembaca
arah encoder. Apabila ketika diinterupsi pulsa B berlogika Low maka dapat
dipastikan rotary encoder berputar CW, dan apabila ketika diinterupsi pulsa B
berlogika High, maka rotary encoder berputar CCW

b. Contoh Penerapan Rotary Encoder :

1. Sebagai Implementasi Perhitungan Posisi Robot Sepak Bola


Pada Implementasi ini, rotary encoder digunakan untuk mengetahui kinematik
robot, mengetahui sudut pergerakan robot, dan mengetahui posisi robot (x,y)

1
Kementrian Pendidikan dan Kebudayaan
Direktorat PEndidikan Tinggi dan Profesi
Politeknik Negeri Malang

2. Implementasi System Voice Recognition dan Rotary Encoder pada Mobile


Robot sebagai system navigasi
Sensor Encoder disini difungsikan sebagai navigasi robot yang dikoneksikan
antara smartphone dan Bluetooth

3. Sistem Conveyor Otomatis dengan Rotary Encoder


Pada sistem ini pulsa pada rotary encoder akan dihitung untuk memperkirakan
jalan dan berhentinya sebuah conveyor. Hal ini dapat menggantikan peran
sensor proximity dll. Penggunaan rotary encoder dalam hal ini dapat dikatakan
lebih efisien karena sensornya yang presisi sehingga membuat sistem bekerja
lebih optimal

4. Implementasi Kestabilan Kecepatan Mobile Robot pada Lintasan


Mendatar, Tanjakan, Serta Turunan.
Rotary Encoder pada penerapan disini digunakan untuk mengetahui hasil
pembacaan nilai putaran motor (RPS).

2
Kementrian Pendidikan dan Kebudayaan
Direktorat Pendidikan Tinggi Vokasi dan Profesi
Politeknik Negeri Malang

Flowchart Percobaan A

START ISR

NO
PB0, PB1, PB2 sbg. Output
KANAN ?
PD2, PD6, PD7 sbg. Input
R-pullup PD2, PD6, PD7 YES

CW ON, CCW OFF CW OFF, CCW ON

PB0 OFF : CW
PB1 OFF : SW
PB2 OFF : CCW

INT0: transisi naik RETURN FROM INTERRUPT


Enable INT0
Enable global interupsi

NO
SW ON ?

YES

TOGGLE PB1

3
Kementrian Pendidikan dan Kebudayaan
Direktorat PEndidikan Tinggi dan Profesi
Politeknik Negeri Malang

Listing Program Percobaan A

// Nama : Irvan Sandi Manullang


// Nim : 1931110008
// Percobaan A

#include <avr/io.h>
#include <avr/interrupt.h>

int main(void){
DDRD &= ~(1<<PD2) & ~(1<<PD6) & ~(1<<PD7);
PORTD |= (1<<PD2) | (1<<PD6) | (1<<PD7);
DDRB |= (1<<PB0) | (1<<PB1) | (1<<PB2);
PORTB &= ~(1<<PB0) & ~(1<<PB1) & ~(1<<PB2);
GICR |= (1<<INT0);
MCUCR |= (1<<ISC01) | (1<<ISC00);
sei();
while (1) {
if((PIND & 0x80)==0){
PORTB ^= (1<<PB1);
while((PIND & 0x80)==0){}
}
}
}
ISR(INT0_vect){
if(PIND & 0x40){
PORTB |= (1<<PB0); PORTB &= ~(1<<PB2);
}
else{
PORTB |= (1<<PB2); PORTB &= ~(1<<PB0);
}
}

4
Kementrian Pendidikan dan Kebudayaan
Direktorat Pendidikan Tinggi Vokasi dan Profesi
Politeknik Negeri Malang

Flowchart Percobaan B

START

PA0-PA7 sbg. Output


PD2, PD6, PD7 sbg. Input
R-pullup PD2, PD6, PD7

(PA7) LED8 ON , dan (PA6-


PA0)LED7 s/d LED1 OFF

INT0: transisi naik


Enable INT0
Enable global interupsi.
ISR

NO
KANAN ?

YES

Berturut-turut LED8, 7, 6, Berturut-turut LED 1, 2, 3, 4.


5, 4, 3, 2, 1 ON 5. 6, 7. OFF dan tinggal LED 8

RETURN FROM INTERRUPT

5
Kementrian Pendidikan dan Kebudayaan
Direktorat PEndidikan Tinggi dan Profesi
Politeknik Negeri Malang

Listing Program Percobaan B


// Nama : Irvan Sandi Manullang
// Nim : 1931110008
// Tugas B

#include <avr/io.h>
#include <avr/interrupt.h>

int main(void){
DDRD &= ~(1<<PD2) & ~(1<<PD6) & ~(1<<PD7);
PORTD |= (1<<PD2) | (1<<PD6) | (1<<PD7);
DDRA = 0xFF;
PORTA |= (1<<PA7);
GICR |= (1<<INT0);
MCUCR |= (1<<ISC01) | (1<<ISC00);
sei();
while (1) {
if((PIND & 0x80)==0){
PORTB ^= (1<<PB1);
while((PIND & 0x80)==0){}
}
}
}
int led[8]={0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
int i=0;
ISR(INT0_vect){
if((PIND & 0x40)==0){
i++;
PORTA=led[i];
if(i>7){
PORTA=0x01;
i=7;
}
}
else{
i--;
PORTA=led[i];
if(i<0){
PORTA=0x80;
i=0;
}
}
}

Anda mungkin juga menyukai