PID Kontrol ile Pinpon Topu Dengeleme (Arduino)






ÇALIŞMA PRENSİBİ

  Kuracağımız denge sistemi PID denetleme prensibiyle çalışmaktadır. hcsr 04 ultrasonik sensörün düzenek üzerinde hareket eden pinpon topunu algılayıp kendisi ile top arasında olan mesafeyi ve hata payını ölçerek aradaki mesafeyi arduino içerisine yazılmış olan PID algoritmasıyla kapatmaya çalışması ile topu dengede tutmayı sağlar. Top kodlar üzerinde belirlenmiş set değerine ulaştığında denge sistemi sağlanmış olur.


Devrenin Elektronik Şeması:




NOT: Normalde PİNG ultrasonik sensör kullanılması daha sağlıklı olsa da ülkemizde satışı olmadığı için HCSR 04 kullanmayı tercih ettim ve sinyal uçlarının ikisini birleştirerek PİNG sensör bağlantısının benzerini elde ettim.



Malzeme Listesi:


-Tower Pro SG90 RC Mini Servo Motor ;






-Arduino UNO ;














-HCSR 04 Ultrasonik Mesafe Sensörü ;





Arduino Kodları:


#include<Servo.h>
#include<PID_v1.h>


const int servoPin = 9;                                              
float Kp = 2.5;                                                    
float Ki = 0;                                                      
float Kd = 1.1;                                                   
double Setpoint, Input, Output, ServoOutput;                                       



PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);         
                                                                      
                                                                     
                                                                     
                                                                     
Servo myServo;                                                      


void setup() {

  Serial.begin(9600);                                               
  myServo.attach(servoPin);                                          

  Input = readPosition();                                            
                                                                    
                                                                     
  
  myPID.SetMode(AUTOMATIC);                                         
  myPID.SetOutputLimits(-80,80);                                      
}

void loop()
{
  Setpoint = 15;
  Input = readPosition();                                            
  myPID.Compute();                                                  
  
  ServoOutput=102+Output;                                            
  myServo.write(ServoOutput);                                       
  
  
}
      
      
      

float readPosition() {
  delay(40);                                                                  
  
  
const int pingPin = 7;

long duration, cm;
unsigned long now = millis();
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);


  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  cm = duration/(29*2);
  
  
  if(cm > 30)     
  {cm=30;}
  
  
  Serial.println(cm);
  
  return cm;                                        
}

Mekanizma Ölçüleri:




































































LMX321 OpAmp Devresi (PartSim)


PartSim ile OpAmp (Yükselteç) Devresi Tasarlamak





     Eğer başka hiçbir elektronik devre çizim programına ihtiyaç duymadan bir elektronik devre tasarlamak veya devre analizi yapmak istiyorsanız, size online elektronik devre çizim sitesi olan PartSim'i rahatlıkla önerebilirim, zira ben analizini yapacağım OpAmp devresini tam da PartSim üzerinden anlatacağım.





  Siteye kaydolmak için "Free Sign-Up" iconuna tıklayarak kaydolabilir veya tek sefere mahsus bir çalışma gerçekleştirecekseniz eğer "Try It Now" seçeneğinden proje ekranına direk geçebilirsiniz.






   Karşımıza gelen proje ekranı göründüğü üzere gayet basit ve anlaşılması kolay bir arayüze sahip.
"Components" kısmından kurmak üzere olduğumuz OpAmp devresi için gerekli olan elemanları ekran üzerine döküyoruz.






  OpAmp devremizi kurduk, şimdiyse test aşamasına geçmek için RUN kısmına tıklıyoruz.







      DC analiz;






       AC analiz;





















     Transient analiz;