Translate

Membuat Alat Ball dan Beam atau Jungkat-jungkit (Alat Untuk Memposisikan Bola Pada Titik Tertentu) Otomatis Menggunakan ARDUINO dan PID Control untuk Balancer

Membuat Alat Ball dan Beam atau Jungkat-jungkit (Alat Untuk Memposisikan Bola Pada Titik Tertentu) Otomatis Menggunakan ARDUINO dan PID Control untuk Balancer


      Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan arduino sebagai controllernya untuk alat Ball and Beam atau jungkat jungkit otomatis untuk menstabilkan atau memposisikan bola pada ttitik tertentu, metode program yang digunakan adalah PID Control dengan sensor yang dipakai adalah sensor jarak. kemudian penggeraknya menggunakan motor servo. yang perlu sekali diperhatikan dalam pembuatan alat ini yaitu bola yang digunakan, gunakanlah bola yang bertekstur tidak kasar mudah menggelinding dan sensitif terhadap kemiringan, maka alat ini akan bekerja secara efektif. untuk lebih jelasnya berikut adalah program dan skemanya.




a. Arduino UNO





 b. Motor Servo





c. Sensor Jarak HC-SRF 04






d. Program Arduino IDE

#include <Servo.h>

#define trigPin 5
#define echoPin 6

Servo myservo;

int spx = 57;
int sp;

float kp = 1.15;
float ki = 0.50;
float kd = 0.15;

float p,i,d,suhu,pid,pidx;
float error,errorx,sumerr;
long duration, distance;

void setup() {
  myservo.attach(9);
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  }

void loop() {
 
  sp = spx * 2;
  error = sp - distance;
  p = error * kp;
  sumerr = error + errorx;
  i = ki * sumerr;
  d = error - errorx;
  pid = p + i + d;
  pid = 255.0 - pid;
 
  pidx = sp - pid;
 
  myservo.write(pidx);

  if(pidx < 1){
  pidx = 0;
  }
 
  if(pidx > 255){
  pidx = 255;
  }


  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  //Serial.print(distance);
  //Serial.println(" cm");
  //Serial.print("PID= ");
  //Serial.println(pidx);
  delay(10);

 errorx = error;

}





e. VIDEO HASILNYA













 

No comments:

Post a Comment