Mengetahui Jumlah Pulsa Encoder 1 Putaran Roda Dengan Arduino - jufrika com
Lompat ke konten Lompat ke sidebar Lompat ke footer

Mengetahui Jumlah Pulsa Encoder 1 Putaran Roda Dengan Arduino


Jufrika Blog - Proyek Arduino menggunakan encoder kali ini adalah bagaimana memanfaatkan pulsa encoder untuk mengetahui jumlah 1 putaran penuh roda.

Kiri : Roda dan Internal Encoder Kanan : Komputer + Arduino Monitor

Dimana ketika kita mengetahui jumlah putaran suatu roda maka kita akan bisa membuat berbagai aplikasi lebih/menguntungkan/canggih hanya menggunakan sensor encoder.


Sample Contoh, jika sudah mengetahui jumlah 1 putaran roda, maka sobat akan mampu :

1. Membuat Jam dengan Putaran Motor DC.
2. Mengetahui sudut yang dibentuk robot beroda.
3. Menghitung Berapa kali roda berputar
4. Bahkan mungkin sobat memiliki ide kreatif lainnya.

Lalu kembali ke topic, Bagaimana sebenarnya cara mengetahui jumlah 1 Putaran Roda (Tick Per Revolution) dengan Menggunakan Sensor Encoder ?

Teorinya simplenya sebagai berikut :

Jika sobat ingin membentuk sebuah lingkaran lingkaran penuh seperti gambar dibawah ini, dan sobat memiliki lidi yang panjangnya sama dan pas untuk sebuah jari jari linkaran tersebut.

GAMBAR ILUSTRASI LINGKARAN DARI LIDI ENCODER
Kemudian sobat isi lingkaran tersebut dengan lidi yang hingga penuh, maka hasilnya sobat akan mudah mengetahui jika sobat kurangi lidi separuh maka akan membentuk setengah lingkaran.

Aplikasi dengan Menggunakan Arduino
Untuk memahami aplikasi secara langsung, mari sobat ikuti langkah step sebagai berikut :

Persiapan Percobaan

- Persiapkan alat dan software sebagai berikut :

1. Motor DC dengan Internal Encoder
2. Komputer dengan Arduino IDE

- Tandai dan Posisikan motor DC dengan kertas dan anggap sebagai arah jam 00.00

- Hubungkan Pin Channel Encoder dengan Pin Arduino

BACA : INI LIBRARY PINCHANGE INT CARA MUDAH MEMBACA ENCODER

- Copy program Arduino berikut dan upload ke Board Arduino hingga Done Uploading :

/*
Membaca Count Encoder dengan Arduino
IND : Sesuaikan Pin Channel A dan B sobat, PinChangeInt berfunsi baik dalam pin Analog
EN  : Please careful to select your pin Channel A and B, PinChangeInt best performance in Analog Pin
  Arduino Uno :
  A0 A1 A2 A3 A4 A5
  Arduino Mega :
  A10 A11 A12 A13 A14 A15
IND : Jika menggunakan pin digital maka setiap channel harus diberi resistor pull up
      Keterangan lengkap baca isi libray dari PinChangeInt
EN  : If you use digital Pin, insert every pin channel with pull up resistor
Created by : Jufrika Danil
Date       : 19/12/2017

*/
  #include       //library  #include //library
  #define encoder1PhaseA A10  //A10 Channel A
  #define encoder1PhaseB A11  //A11 Channel B
   long encoder1Position=0;
void setup() {
  // put your setup code here, to run once:
  pinMode (encoder1PhaseA,INPUT); //set as input
  pinMode (encoder1PhaseB,INPUT); //set as input
    //Set Encoder PullUp
  digitalWrite(encoder1PhaseA,HIGH);
  digitalWrite(encoder1PhaseB,HIGH);
  PCintPort::attachInterrupt(A10, doEncoder1, CHANGE); //learn type Change, Rising
  Serial.begin (9600); //Standard Serial Monitor
}
void loop() {
  // put your main code here, to run repeatedly:
 float newposition = encoder1Position; //store encoder position to newposition variable
 Serial.print   ("count: ");  Serial.print (newposition);  //print in serial monitor
 Serial.println ();
}
// function void to read encoder
void doEncoder1()
{
  if (digitalRead(encoder1PhaseA) == digitalRead(encoder1PhaseB))
  {
    encoder1Position--;
  }
  else
  {
    encoder1Position++;
  }
}


- Setelah di upload Buka Serial Monitor di Arduino.

- Putar roda motor DC secara manual searah jarum dari jam 00 hingga kembali ke 00 ( 1 Putaran Penuh ).

Putaran 1 Roda Penuh 500 Pulsa

Lihat nilai pulsa yang muncul setelah terjadi 1 Putaran(lihat kotak merah di LCD), maka itulah nilai pulsa yang diperlukan roda untuk 1 putaran penuh. Source Code bisa sobat download melalui link.
close