Arduino Membaca RPM Motor DC dengan Encoder Simulasi Tingkercad

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.

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.

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
chaerul

Recent Posts

Panduan Lengkap: Cara Menyiapkan Klaster Kubernetes pada Ubuntu 22.04 LTS

Pendahuluan Dalam dunia pengembangan perangkat lunak yang terus berkembang, Kubernetes telah muncul sebagai alat kunci dalam orkestrasi…

5 days ago

AplikasiAkademik.com: Solusi Terbaik untuk Manajemen Sekolah yang Efisien

Mengelola sebuah sekolah atau lembaga pendidikan adalah tugas yang kompleks dan penuh tantangan. Dengan berbagai…

7 months ago

Cara Mudah Menginstal OpenVPN Server di Ubuntu 20.04 di Huaweicloud Panduan Langkah demi Langkah

Selamat datang di artikel kami tentang cara menginstal OpenVPN server di Ubuntu 20.04 di HuaweiCloud!…

12 months ago

Install Docker Portainer dan Nginx Proxy Manager Ubuntu Server

Dalam dunia pengembangan aplikasi, salah satu hal yang menjadi penting adalah mengelola dan memonitor kontainer…

1 year ago

Tutorial led blinking lengkap, Wiring & Code

Tutorial led blinking. LED (Light Emitting Diode) merupakan salah satu komponen elektronik yang paling umum…

1 year ago

Tutorial LCD Display Lengkap dengan wiring & code untuk pemula

Tutorial LCD Display, ini merupakan salah satu komponen yang sering digunakan dalam project elektronika sebagai…

1 year ago