Cara Mudah Membaca Count Encoder Dengan Arduino
Apa itu Sensor Encoder?
Encoder merupakan salah satu sensor yang paling banyak digunakan dalam bidang industri, encoder memiliki kemampuan untuk menghitung jumlah putaran sesuatu yang berputar dari pulsa yang dihasilkan dari encoder itu sendiri.
Namun pulsa tersebut bisanya muncul dari pemicu yang terhubung/ tercouple pada penggerak/aktuator. Seperti jumlah putaran motor DC, putaran motor servo, Dll.
Diaplikasikan Kemana?
Pengaplikasiannya pun beragam, seperti mengetahui posisi mesin CNC, posisi lengan robot, penghitung jumlah putaran, pengkondisian suatu alat mulai start stop, Dll.
Bagaimana Cara Menghitung Pulsa Encoder ?
Untuk lebih memahami apa itu encoder? mari kita coba menghitung pulsa encoder dengan Arduino.
Adapun yang perlu sobat persiapkan adalah :
1. Board Arduino (Yang saya pakai MEGA2560)
2. Encoder / motor DC dengan internal encoder.
3. Library PinChangeInt (Link Download dibawah postingan)
Baca : Cara memasukan library baru ke Arduino
Setelah persiapan sudah ada langkah selanjutnya adalah :
Wiring :
Contoh Perwiringan Encoder
[GAMBAR]
3. Sesuaikan Wiring Channel A dan B Arduino ke Pin yang ada di program Arduino.
4. Jika Encoder sobat memerlukan daya , jangan lupa beri daya sesui kebutuhan sensor.
Program :
1. Copy Sketch berikut ini ke dalam Arduino IDE sobat.
2. Compile Program tersebut dan pastikan library terbaca (tidak ada fatal error).
3. Hubunkan Arduino dan pastikan Port dan Board Arduino sobat sudah benar.
4. Upload Program dan Buka Serial Monitor.
5. Putar ke Kiri atau ke kanan maka pulsa encoder akan terbaca seperti gambar berikut.
Encoder merupakan salah satu sensor yang paling banyak digunakan dalam bidang industri, encoder memiliki kemampuan untuk menghitung jumlah putaran sesuatu yang berputar dari pulsa yang dihasilkan dari encoder itu sendiri.
Namun pulsa tersebut bisanya muncul dari pemicu yang terhubung/ tercouple pada penggerak/aktuator. Seperti jumlah putaran motor DC, putaran motor servo, Dll.
Diaplikasikan Kemana?
Pengaplikasiannya pun beragam, seperti mengetahui posisi mesin CNC, posisi lengan robot, penghitung jumlah putaran, pengkondisian suatu alat mulai start stop, Dll.
Bagaimana Cara Menghitung Pulsa Encoder ?
Untuk lebih memahami apa itu encoder? mari kita coba menghitung pulsa encoder dengan Arduino.
Adapun yang perlu sobat persiapkan adalah :
1. Board Arduino (Yang saya pakai MEGA2560)
2. Encoder / motor DC dengan internal encoder.
3. Library PinChangeInt (Link Download dibawah postingan)
Baca : Cara memasukan library baru ke Arduino
Setelah persiapan sudah ada langkah selanjutnya adalah :
Wiring :
Contoh Perwiringan Encoder
[GAMBAR]
3. Sesuaikan Wiring Channel A dan B Arduino ke Pin yang ada di program Arduino.
4. Jika Encoder sobat memerlukan daya , jangan lupa beri daya sesui kebutuhan sensor.
Program :
1. Copy Sketch berikut ini ke dalam Arduino IDE sobat.
/*
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++;
}
}
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
#include
#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++;
}
}
2. Compile Program tersebut dan pastikan library terbaca (tidak ada fatal error).
3. Hubunkan Arduino dan pastikan Port dan Board Arduino sobat sudah benar.
4. Upload Program dan Buka Serial Monitor.
5. Putar ke Kiri atau ke kanan maka pulsa encoder akan terbaca seperti gambar berikut.