Arduino ile PID Kontrollü Top Dengeleme Robotu Projesi

Bu projede PID kontrol tabanlı topu denge noktasında sabitleyen iki eksenli top dengeleme robotunun yapımından bahsedeceğim.Top dengeleme sisteminde iki yöntem kullanılmaktadır. Birinci yöntem topun mesafesini ölçerek diğer yöntem ise görüntü işleme tabanlı yapılmaktadır. Ben ilk yöntemi uygulayacağım. Dengeleme sistemi topun mesafesini ölçerek PID algoritmasında belirlediğimiz noktada sabitlenmesini sağlayacaktır. Ayrıca matlab üzerinden de topun mesafesini anlık görebileceğiz.

Malzemeler
  • Arduino Uno
  • Ping Ultrasonik Sensör
  • Dijital Servo Motor (20kg.cm ideal)
  • 5v DC Güç Kaynağı
Elektronik Kısım


  • [col]
    • Sensör Bağlantıları
      • Sinyal Pin – Dijital 7.Pin
        VCC- 5V
        GND – GND
    • Servo Motor Bağlantıları
      • Sinyal Pin – Dijital 9.Pin
        VCC – 5V
        GND – GND

Mekanik Kısım


Top 34 cm uzunluğunda bir düzlemde hareket edecek.Alttaki kısımda servo motor kolu döndürerek üstteki düzlemi hareket ettirecek.Gerekli uzunluklar şekilde gösterilmiştir.

Yazılım Kısmı

MATLAB Yazılımı
clear all
close all
clc

arduino=serial('COM3','BaudRate',9600); % Portunuzu arduino portuyla aynı yaptım
fopen(arduino);

CM(1)=0;
time(1)=0;
i=1;
tic;

while (toc<=100)

CM(2)=fscanf(arduino,'%f');
time(2)=toc;
figure(1);
grid on;
axis([toc-10, toc+10, 0, 35])
h(i)=plot(time,CM,'b','LineWidth',5);
hold on
CM(1)=CM(2);
time(1)=time(2);
if(i >= 300)
delete(h(i-299));
end
i=i+1;

end

fclose(arduino);


Arduino Yazılımı

PID Kütüphanesi  > PID_v1

#include 
#include
const int servoPin = 9;
float Kp = 2.5;b// İlk Oransal Kazanç
float Ki = 0; // İlk İntegral Kazancı
float Kd = 1.1; //İlk Türev Kazancı
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); // -80 ile 80 derece arası
}

void loop()
{
Setpoint = 15; // Denge Noktası
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) // 30 cm top için maksimum pozisyon
{cm=30;}

Serial.println(cm);

return cm; //Mesafe değerini döndürür.
}

Arduino yazılım kısmında Setpoint tanımlaması topun duracağı noktadır.Bu noktanın değerini değiştirerek topun istediğimiz noktada kalmasını sağlayacağız.

 NOT: Topun hareket ettiği düzlemin yatay olabilmesi için, servo motor açısı 102 derece olmalıdır.

Loading...
Ad

Arduino Autocad Bilim-Teknoloji Biyomedikal Sistemler C-Programlama C# C# Programlama Diferansiyel Denklemler Dijital Kontrol Sistemleri Elektrik Devreleri 1 Elektrik Devreleri 2 Elektrik Makineleri 1 Elektrik Makineleri 2 Elektrik Tesislerinde Koruma Elektromantetik Alan Teorisi Elektromantetik Dalga Teorisi Elektronik 1 Elektronik 2 Elektronik-Devreler EmguCV Genel Fizik Genel Kimya Genel Matematik Gömülü Linux Güç Elektroniği Haberleşme Sistemleri İşaret ve Sistemler Lineer-Cebir Lojik Devreler Malzeme Bilimi MATLAB Mikroişlemciler Olasılık ve İstatistik Otomatik Kontrol Sistemleri PLC-Otomasyon Proje Yönetimi ve Girişimcilik Raspberry Pi Sayısal Analiz Sayısal İşaret İşleme Teknik-Kutuphane Termodinamik Yüksek Gerilim Tekniği
false
ltr
item
Çağlar GÜL: Arduino ile PID Kontrollü Top Dengeleme Robotu Projesi
Arduino ile PID Kontrollü Top Dengeleme Robotu Projesi
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXc911hW7FS0H7WyOa5NsE3kQpcMBlNpwb6Sw1gS9z95C3oiOlvVz5KzqR-DL2razQuFNrg1L89aeuVsbgSX5fTfIpFqFRky-KT2KPuS2ktv-4FMh1qtCGvjDCK4TYjucKMSIvY4cojwY/s640/image1.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXc911hW7FS0H7WyOa5NsE3kQpcMBlNpwb6Sw1gS9z95C3oiOlvVz5KzqR-DL2razQuFNrg1L89aeuVsbgSX5fTfIpFqFRky-KT2KPuS2ktv-4FMh1qtCGvjDCK4TYjucKMSIvY4cojwY/s72-c/image1.png
Çağlar GÜL
https://elektronikafa.blogspot.com/2016/10/arduino-ile-pid-kontrollu-top-dengeleme.html
https://elektronikafa.blogspot.com/
http://elektronikafa.blogspot.com/
http://elektronikafa.blogspot.com/2016/10/arduino-ile-pid-kontrollu-top-dengeleme.html
true
871250089272898028
UTF-8
Not found any posts Not found any related posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU Tag ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Contents See also related Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy