By | 09/06/2020

Helo temen-temen anakkendali.com
Pada kesempatan kali ini saya akan menulis artikel tentang tutorial program Arduino Membaca RPM Motor DC dengan Encoder Simulasi Tingkercad. Encoder sendiri merupakan sensor yang sangat sering digunakan berbarengan dengan motor. dengan menggunakan encoder kita dapat membaca jarak juga.

Ada beberapa jenis encoder yang ada di dunia ini, tapi prinsip dasar nya semuanya sama. ada yang menggunakan inframerah sebagai encoder ada juga yang menggunakan magnet.

jika menggunakan inframerah mungkin kita mudah memabayangkanya, tinggal dibuat dua buah led ir yang satu sebagai pemancar cahaya dan yang satu laginya sebagai penerima cahaya. setelah itu dibuat piringan berlubang, jika mengenai lubangnya maka cahaya inframerah dapat diterima oleh receivernya dan hal ini bisa di proses oleh mikrokontroler dalam bentuk sinyal digital. Begitu juga halnya encoder yang menggunakan magnet, atau biasa disebut hall effect.

Penjelasan Encoder

Lihatlah gambar berikut ini untuk memahami kerja dari encoder yang biasa terdapat di pasaran dan memiliki dua buah kabel sebagai pengirim sinyal nya, chanel A dan Chanel B.

Arduino Membaca RPM Motor DC dengan Encoder Simulasi Tingkercad

Pertama kita lihat gambar yang posisi atas, seolah diputar searah jarum jam, dan jika diamati sinyal output1 setiap perubahan sinyal, baik dari bawah keatas atau dari atas kebawah sinyal output3 tidak pernah dalam keadaan kondisi yang sama. misal saja output1 naik menuju 1 sedangkan output3 masih di posisi 0, dan saat output1 turun ke 0, output3 masih dalam keadaan di posisi 1. sehingga kita bisa tentukan untuk yang searah jarum jam nilai pulsanya akan di kurangi.

Maka perintah program arduino untuk encodernya bisa digunakan seperti ini.

if (digitalRead(pin_encoder_1) != digitalRead(pin_encoder_3)){
pulsa --;
}

jika keadaan pin encoder output1 tidak sama dengan keadaan pin encoder output3 maka pulsanya turun.

Selanjutnya perhatikan gambar dibawahnya, setiap perubahan sinyal output1 pasti keadaan output3 nya sama. maka bisa dibuat dengan program seperti ini.

if (digitalRead(pin_encoder_1) == digitalRead(pin_encoder_3)){
pulsa ++;
}

jika digabungkan keduanya bisa ditulis seperti ini

if (digitalRead(pin_encoder_1) == digitalRead(pin_encoder_3)){
pulsa ++;
} else {
pulse --;
}

supaya program itu berjalan dengan semestinya, maka diperlukan interupsi program, sehingga kita akan menjadikan pin encoder 1 sebagai pin interrup external. code selengkapnya bisa dilihat dibawah ini.

Arduino Membaca RPM Motor DC dengan Encoder Simulasi Tingkercad Sensor Jarak Encoder

Code Encoder Arduino

#define dirA 7
#define pwmA 6
#define dirB 4
#define pwmB 5

int pulse;
float rps, rpm;


void motor_run(int mA, int mB){
  if (mA >= 0){
  digitalWrite (dirA, 0);
  analogWrite (pwmA, mA);
  }
  else if (mA < 0){
  digitalWrite (dirA, 1);
  analogWrite (pwmA,  mA+255);
  }
  
  if (mB >= 0){
  digitalWrite (dirB, 0);
  analogWrite (pwmB, mB);
  }
  else if (mB < 0){
  digitalWrite (dirB, 1);
  analogWrite (pwmB,  mB+255);
  }
}

void setup(){
  Serial.begin(9600);
  pinMode (dirA, OUTPUT);
  pinMode (dirB, OUTPUT);
  pinMode (2, INPUT_PULLUP);
  pinMode (3, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2), encoder, CHANGE);
  
}
unsigned long timelast;

void loop(){
  motor_run(0, analogRead(A0)/4);
  if (millis() - timelast >= 500){
   timelast = millis();
   rps = pulse / 650.00/0.5;
   rpm = rps*60;
   Serial.print("Pulse :");
   Serial.print(pulse);
   Serial.print("\t");
   Serial.print("RPS :");
   Serial.print(rps);
   Serial.print("\t");
   Serial.print("RPM :");
   Serial.println(rpm);
    
   pulse = 0;
  }
}

void encoder(){
  if (digitalRead (2) == digitalRead(3)){
  pulse ++;
  }
  else {
  pulse --;
  }
}

Keyword

  • Encoder Arduino
  • Membaca encoder arduino
  • Rumus Encoder Program Arduino
  • Rumus Encoder
  • Encoder Arduino Program
  • Tutorial Encoder Arduino
  • membaca rpm motor encoder
  • Sensor Jarak Encoder

Leave a Reply

Your email address will not be published. Required fields are marked *