Close Menu

    Yeni yazılardan haberdar olun!

    3D yazıcı, elektronik, Arduino ve daha onlarca konuda en yeni blog yazılarını ve haberleri kaçırmayın.

    Trendler

    CH340 Driver Kurulumu? Nasıl İndirilir?

    🧑‍💻 ESP32 Kullanımı – Esp32’ye Nasıl Kod Atılır?

    Creality K1 ve K1 Max 3D Yazıcı Karşılaştırması – İncelemesi

    Instagram YouTube X (Twitter) Facebook LinkedIn Reddit Discord WhatsApp
    Popüler
    • 14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri
    • CH340 Driver Kurulumu? Nasıl İndirilir?
    • Arduino ile FM Radyo Uygulaması
    • STM32 ile I2C Oled Ekran Kullanımı
    YouTube Instagram X (Twitter) Reddit LinkedIn Discord WhatsApp
    Robo90 – BlogRobo90 – Blog
    • Anasayfa
    • 3D Baskı
    • Eğitim Serileri
      1. Arduino Eğitim Serisi
      2. IoT Eğitim Serisi
      3. Fusion 360 Eğitim Serisi
      4. Raspberry Pi Eğitim Serisi
      5. STM Eğitim Serisi
      6. View All

      CH340 Driver Kurulumu? Nasıl İndirilir?

      22 Temmuz 2024

      HC-06 ve HC-05 Aralarında Nasıl Haberleşir?

      8 Ağustos 2023

      Arduino ile A4988 ve Nema-17 (Step Motor) Kullanımı

      26 Temmuz 2023

      ESP32CAM ve OV2640 Nasıl Kullanılır?

      5 Ağustos 2023

      🧑‍💻 ESP32 Kullanımı – Esp32’ye Nasıl Kod Atılır?

      26 Temmuz 2023

      🌐 ESP32 ve Arduino IOT ile LED Nasıl Kontrol Edilir?

      26 Temmuz 2023

      Fusion 360’ta Dikdörtgen Komutları – Fusion 360 Eğitim Serisi – Bölüm 3

      21 Eylül 2023

      Fusion 360 Nasıl Kullanılır? – Fusion 360 Eğitim Serisi – Bölüm 2

      24 Ağustos 2023

      Autodesk Fusion 360 Nedir?

      8 Ağustos 2023

      Fusion 360 Öğrenci Lisansı Nedir? Nasıl Alınır?

      5 Ağustos 2023

      Raspberry Pi Pico ile Potansiyometre Kullanarak Buzzer Kullanımı – Bölüm 4

      22 Eylül 2023

      Raspberry Pi Pico ile Potansiyometre Okuma – Bölüm 3

      22 Eylül 2023

      Raspberry Pi Pico ile LED Yakma – Bölüm 2

      17 Ağustos 2023

      Raspberry Pi Pico Nedir? Nasıl Kullanılır? – Bölüm 1

      9 Ağustos 2023

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      CH340 Driver Kurulumu? Nasıl İndirilir?

      22 Temmuz 2024

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      Raspberry Pi Pico ile Potansiyometre Kullanarak Buzzer Kullanımı – Bölüm 4

      22 Eylül 2023

      Raspberry Pi Pico ile Potansiyometre Okuma – Bölüm 3

      22 Eylül 2023
    • Projeler
      1. 3D Yazıcı Projeleri
      2. Arduino Projeleri
      3. IoT Projeleri
      4. Raspberry Pi Projeleri
      5. View All

      🐉 Creality Ender 3 Neo İnceleme Yazısı

      26 Temmuz 2023

      Ultimaker Cura’da Filament Değiştirme Özelliği Nedir? Tüm Detaylarıyla Nasıl Kullanılır?

      24 Temmuz 2023

      Arduino ile FM Radyo Uygulaması

      19 Nisan 2024

      Arduino ile EGGBOT Yapımı

      22 Ağustos 2023

      Servo Motor ve LDR ile Güneş Takip Sistemi

      17 Ağustos 2023

      HC-06 ve HC-05 Aralarında Nasıl Haberleşir?

      8 Ağustos 2023

      ESP32CAM ve OV2640 Nasıl Kullanılır?

      5 Ağustos 2023

      ESP-NOW ile RGB LED Kontrolü 🎛️

      4 Ağustos 2023

      📡 Yeni Başlayanlar için ESP-NOW

      3 Ağustos 2023

      ESP32-CAM ile Baskılarınız Yanmasın 📛

      29 Temmuz 2023

      Raspberry Pi Pico ile LED Yakma – Bölüm 2

      17 Ağustos 2023

      Arduino ile FM Radyo Uygulaması

      19 Nisan 2024

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      Arduino ile EGGBOT Yapımı

      22 Ağustos 2023

      Raspberry Pi Pico ile LED Yakma – Bölüm 2

      17 Ağustos 2023
    • İncelemeler
      1. 🐉 Creality Ender 3 Neo İnceleme Yazısı
      2. 🧑‍💻 ESP32 ‘ye Program Nasıl Yazılır ?
      3. 🌐 ESP32 ve Arduino IOT ile LED Nasıl Kontrol Edilir?
      4. View All

      14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

      10 Şubat 2025

      CH340 Driver Kurulumu? Nasıl İndirilir?

      22 Temmuz 2024

      Arduino ile FM Radyo Uygulaması

      19 Nisan 2024

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

      10 Şubat 2025

      CH340 Driver Kurulumu? Nasıl İndirilir?

      22 Temmuz 2024

      Arduino ile FM Radyo Uygulaması

      19 Nisan 2024

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

      10 Şubat 2025

      CH340 Driver Kurulumu? Nasıl İndirilir?

      22 Temmuz 2024

      Arduino ile FM Radyo Uygulaması

      19 Nisan 2024

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

      10 Şubat 2025

      Creality K1 ve K1 Max 3D Yazıcı Karşılaştırması – İncelemesi

      27 Eylül 2023

      Priz Tipi Wattmetre Hakkında Merak Edilen Her Şey

      7 Ağustos 2023

      BL-Touch Nedir? Nasıl Çalışır? (3D Yazıcı Otomatik Seviyeleme)

      5 Ağustos 2023
    • Mağaza
    Robo90 – BlogRobo90 – Blog
    Home»Teknik

    PID (Proportional Integral Derivative) Kontrol Algoritması Nedir?

    PID Kontrol Nedir? Arduino ile PID Kontrol
    Alperen AlpaydınAlperen Alpaydın02.4566 Mins Read
    Paylaş
    Twitter LinkedIn Facebook Reddit Email Telegram WhatsApp

    Bu yazımızda robotikle, robotlarla ve otomasyon sistemleri ile uğraşanların sıkça duyduğu PID’yi ele alacağız. PID kelimesi “proportional integral derivative” kelimelerinin kısaltılmasından gelir. Türkçesi “oransal integral türev” anlamına gelir. Türev-İntegral geçtiği için biraz göz korkutsa da bu yazı ile ilköğretimde okuyan biri bile PID kontrolü anlayabilir.

    İçindekiler gizle
    1. PID Nedir? Nerede ve Ne İçin Kullanılır?
    2. PID’nin Avantajları
    3. Türev ve Integral Nedir?
    4. PID ile Çizgi İzleyen Robot Uygulaması
    4.1. Şimdi çizgi izleyen robotumuzda türevi ekleyerek PID algoritmamızı birlikte oluşturalım:
    4.2. Peki integrali eklersek ne olur?
    5. Projenin Malzemeleri
    6. PID Uygulama Örnekleri

    PID Nedir? Nerede ve Ne İçin Kullanılır?

    PID, içerisinde otomasyon içeren birçok sistemde kullanılan kontrol yöntemidir. Anlık verilerinin yanında önceki verilere göre gerçekleşen değişimleri kullanarak sistemi kontrol eder. Uçakların otopilotları, şerit takip sistemleri, akıllı ev sistemleri, uzay araçları, ısıtıcılar-soğutucular ve daha sayamadığım yüzlerce farklı işlerde kullanılır. Konuyu çizgi izleyen robot üzerinden anlatarak diğer teknolojilerde nasıl kullanılacağından da bahsedeceğim.

    PID uçaklarda kullanımı
    PID roketlerde kullanımı
    hareket eden tesla otomobil

    PID’nin Avantajları

    Konuya bir robotu pid ile kontrol etmenin getirdiği farktan bahsederek başlayalım. PID kelimesinin açılımındaki “oransal” kontrol, robotun çizgiye olan uzaklığına göre düzeltme manevrası ile yapılır. Birçoğumuzun ilk yaptığı çizgi izleyen robot, oransal kontrol ile çalışmış oluyor. Örneğin çizgiye uzaklığı -5 ile 5 arasında tanımlayalım. 0 değeri merkez yani çizginin üzerinde bulunduğu durum. Negatif kısım solda, pozitif kısım sağda olduğunu gösteriyor.

    Çizgi sensörümüzün aldığı verilere göre robotun verdiği kararları aşağıdaki gibi yapabiliriz:

    -1 hafif sağa dön

    -3 sağa dön

    -5 sağa keskin dön

    1 hafif sola dön 

    3 sola dön

    5 sola keskin dön

    Robotumuz sadece böyle karar alarak aslında sola döndüğünde düzeltmesi için tekrar sağa dönmesi, bunu düzeltmesi için tekrar sola dönmesi şeklinde bir döngüye girer. Sürekli sağa ve sola titreme yaparak çizgiyi izler. Eğer aldığımız verileri PID algoritması ile işlersek hem bu titremenin önüne geçmiş oluruz hem de çizgiyi daha tutarlı şekilde takip etmesini sağlarız. Bir uçağın otopilotunda PID algoritma kullanmadığımız bir sistem düşünürsek uçak irtifasını korumaya çalışmak için sürekli aşağı-yukarı kumanda vererek uçuş güvenliğini düşürür. Yolcu konforundaki farkı tahmin edebiliriz.

    Aşağıdaki ilk videoda sadece oransal kullanılmış bir çizgi izleyen robot, ikinci videoda pid algoritması kullanılmış bir robot ve bunların arasındaki farkları görüyoruz.

    Sadece oransal kullanılmış bir çizgi izleyen robot
    PID kullanılmış robot

    Türev ve Integral Nedir?

    Şimdi türev ve integrale bakabiliriz. Türev tanım olarak bir durumda yaşanan en küçük değişimdir. Fakat tanım ile değil bir örnek ile açalım. Damlayan bir musluk ve altında bir kova hayal edelim. Musluk damladıkça kova dolacaktır. Musluğumuz her saniye başında bir damla su damlatıyor ise bu kovadaki su miktarında meydana gelebilecek en küçük değişim bir damla kadar sudur. Her saniye bir damla kadar su miktarı artıyor. Daha az bir değişim gözlemleyemiyoruz. Yarım damla veya 2 damla. En küçük değişim miktarımız yani türevimiz o zaman bir damladır. Türevi kısaca bu kadar bilmek PID kontrolü anlamak için yeterli olacaktır.

    Şimdi kovamıza bir delik açalım. Buradan da belirli aralıklarla su boşalsın. Bir yandan kovamız damlayan musluk ile dolarken bir yanda da boşalacak. Doldurma hızımızın boşaltma hızından yüksek olduğunu kabul edelim. Bir gece bekleyince kovada bir miktar su olduğunu görürüz. Örneğin kovada 5L su bulunsun. O zaman, şimdiden musluğun damlamaya başladığı zamana kadarki integralimiz 5L sudur. Bu süreçte kovamız hem su dolmuş hem de su akıtmıştır. Bunların hepsinin eklenmesi ile integrali hesapladık. Bu örnek de PID kontrol için yeterli bir integral bilgisi oluşturmuştur.

    integral

    PID ile Çizgi İzleyen Robot Uygulaması

    Şimdi çizgi izleyen robotumuzda türevi ekleyerek PID algoritmamızı birlikte oluşturalım:

    Az önceki -5 ile 5 arasında değer veren sensörümüzü tekrardan alalım. Bu değere hata ismini verelim. Hatamız 5 olsun. Robotumuz “sola keskin dön” kararını alır. Sola doğru giderken bir an sonra 2 değerini aldığında türevimiz (değişim son durum-ilk durum formülü hesaplanır.) 2-5=-3 olur. Şu anda hatamız 2 ve türevimiz -3. Toplam durum 2+(-3)=-1 oldu. O zaman şimdi robotumuz “hafif sağa dön” komutunu vermeli. Böylece robot keskin solun ardından hafifçe sağa yönelerek çizgi ile paralelleşerek çizgiye yerleşir. Aşağıdaki fotoğrafta mavi grafik sadece oransal hesaplamayı, kırmızı grafik ise türev eklenmesini ifade ediyor.

    Türev ve integral grafigi

    Peki integrali eklersek ne olur?

    İntegral kova örneğinden hatırlarsak birikimli olarak ilerleyen bir şey. İçerisinde 10 dakika öncesi de bulunuyor. Türeve karşı negatif etki yaparak robotun daha sert dönmesine yol açar. Çünkü o süreç içerisinde kendisine sürekli ekleme yapar.

    Örneğin robotun hatası 5 olsun. Bir sonraki durumda 3, daha sonrakinde 1 olsun. İntegral sürekli ekleme yaparak 5+3+1=9 olur. Türev ile 5 olan keskin dönüşü azaltmış iken integral daha da keskin dönüşe zorlar. Aşağıdaki grafikte olduğu gibi. Bunu engellemek için PID kontrolde katsayılar kullanılır. Örneğin integralin katsayısını 0,1 yaparsak 9 yerine 0.9 ekler. Böylece etkisi azaltılır. Aynı şey oransal ve türevi için de geçerlidir. Robotun karakteristiğine göre katsayıları belirleriz. Örneğin, türevin katsayısı 1 iken robot hala titreme yapıyorsa katsayıyı artırmamız gerekir ya da robot çizgiyi bulamıyor ise katsayıyı düşürmemiz gerekir.

    PID integral grafiği

    O zaman bütün bunları birleştirerek PID kontrol için bir formül yazalım:

    Kp: Oransal Katsayı

    Ki: İntegralin katsayısı

    Kd: Türevin katsayısı

    PID = Kp*hata + Kd*Türev + Ki*İntegral

    Türev ve integrali ise şu şekilde hesaplayabiliriz:

    Önceki Durum: Bir önceki anda alınan hata

    Toplam: Önceki alınan her hatanın toplamı

    Türev = Hata – Önceki Durum

    İntegral = Toplam + Hata

    Şimdi Arduino üzerinde PID ile çizgi izleyen robotu kontrol eden bir program yazarak öğrendiklerimizi destekleyelim.

    Projenin Malzemeleri

    Arduino Nano Klon – USB Kablo Hediyeli

    QTR-8A Analog Kızılötesi Sensör Kartı – Çizgi İzleyen

    6V 250 RPM Redüktörlü Motor – Sarı

    L293D Motor Sürücü Entegresi – Dip16

    #include <QTRSensors.h>
    #define motor1a A0
    #define motor1b A1
    #define motor1p 10
    
    #define motor2a A2
    #define motor2b A3
    #define motor2p 11
    
    
    QTRSensors qtr;                                        //tanimlamalar
    int error, turev,guc,lasterror=0;
    int integral=0;
    int solll,saggg;
    int hiz=100;
    float kp=0.03;
    float kd=0.01;                                         //pid katsayilari
    float ki=0;
    const uint8_t SensorCount = 8;
    uint16_t sensorValues[SensorCount];
    void setup() {
       qtr.setTypeRC(); //Analog sensor kullanilacaksa setTypeRC yerine setTypeAnalog kullanin
      qtr.setSensorPins((const uint8_t[]){9,8,7,6,5,4,3,2}, SensorCount);    //sensor tanimlama
     
    
      delay(500);
      pinMode(13, OUTPUT);
      digitalWrite(13, HIGH);
    
      pinMode(10, OUTPUT);
      pinMode(A0, OUTPUT);
      pinMode(A1, OUTPUT);
      pinMode(A2, OUTPUT);
      pinMode(A3, OUTPUT);
      pinMode(11, OUTPUT);
    
    //kalibrasyon kodlari
      for (uint16_t i = 0; i < 400; i++)
      {
        qtr.calibrate();
      }
      digitalWrite(13, LOW);
    
      Serial.begin(9600);
      for (uint8_t i = 0; i < SensorCount; i++)
      {
        Serial.print(qtr.calibrationOn.minimum[i]);
        Serial.print(' ');
      }
      Serial.println();
    
     
      for (uint8_t i = 0; i < SensorCount; i++)
      {
        Serial.print(qtr.calibrationOn.maximum[i]);
        Serial.print(' ');
      }
      Serial.println();
      Serial.println();
      delay(1000);
    }
    void loop(){
     digitalWrite(motor1a,HIGH);
      digitalWrite(motor2a,HIGH);
    
      digitalWrite(motor2b,LOW);
      digitalWrite(motor1b,LOW);
    
    uint16_t position = qtr.readLineWhite(sensorValues);
     error=position-3500;
     integral=integral+error;
     turev=error-lasterror;
     lasterror=error;
     guc=(kp*error)+(kd*turev)+(integral*ki);
     solll=hiz+guc;
     saggg=hiz-guc;
     if(solll<0) solll=0;
     if(saggg<0) saggg=0;
     if(solll>255)solll=255;
     if(saggg>255) saggg=255;
     analogWrite(motor1p,solll);
     analogWrite(motor2p,saggg);
    }
    
    

    Proje ile örneklendirdikten sonra PID’nin diğer uygulamaları hakkında birkaç örnek verebiliriz.

    PID Uygulama Örnekleri

    Uçaklar uçarken pilotlar sürekli el ile kumanda vermezler. Otopilota izlenecek yol ve irtifa bilgisi girildikten sonra otopilot bu işlemi yapar. Uçaklardaki otopilotun çalışma mantığının çizgi izleyen robot ile aynıdır. Belirli rota çizgisi üzerinde uçağı tutar. Aynı şekilde irtifada da olması gereken irtifa ile hata payına göre hesaplama sonucu gerekli kumanda verilir. Böylece sürekli aşağı-yukarı şeklinde kumanda verilmez.

    Boeing 737 kokpit

    Hastanelerde ve iş yerlerinde gördüğümüz akıllı ısıtma-soğutma sistemleri de PID kontrol ile çalışmaktadır. Eğer sadece oransal kontrol kullanılsaydı ayarlanan dereceyi geçince soğutma, tekrar ısıtma yaparak hem enerji zararına hem de ısıtma soğutma sisteminin çabuk bozulmasına sebebiyet verirdi.

    Bu yazımızda PID kontrolün ne olduğuna, türev-integral ile bağlantısına, nasıl kullanılacağına ve endüstriyel uygulamalarına baktık. Umarım faydalı olmuştur.

    Teknik Kategorisindeki Diğer Yazılarımıza Göz ATabilirsiniz
    Algoritma PID Robot
    Share. Twitter Facebook LinkedIn Reddit Email Telegram WhatsApp
    Previous ArticleRaspberry Pi Pico ile Potansiyometre Kullanarak Buzzer Kullanımı – Bölüm 4
    Next Article Creality K1 ve K1 Max 3D Yazıcı Karşılaştırması – İncelemesi
    Alperen Alpaydın
    • Website
    • Instagram
    • LinkedIn

    Benzer Yazılar

    Transistör Nedir? Ne İşe Yarar? Nasıl Çalışır?

    4 Mins Read0857 ViewsBy Ali Berk Ercan
    Add A Comment
    Leave A Reply Cancel Reply

    Popüler Yazılar
    Arduino Eğitim Serisi

    CH340 Driver Kurulumu? Nasıl İndirilir?

    4 Mins Read0By Ali Berk Ercan
    Featured

    🧑‍💻 ESP32 Kullanımı – Esp32’ye Nasıl Kod Atılır?

    3 Mins Read1By Mustafa Topal
    Ürün İncelemeleri

    Creality K1 ve K1 Max 3D Yazıcı Karşılaştırması – İncelemesi

    4 Mins Read0By Ali Berk Ercan
    Gündem

    14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

    10 Şubat 2025

    CH340 Driver Kurulumu? Nasıl İndirilir?

    22 Temmuz 2024

    Arduino ile FM Radyo Uygulaması

    19 Nisan 2024

    STM32 ile I2C Oled Ekran Kullanımı

    14 Kasım 2023
    • Facebook 381
    • Twitter 165
    • Instagram 3.8K
    • YouTube 19.2K
    İçindekiler gizle
    1. PID Nedir? Nerede ve Ne İçin Kullanılır?
    2. PID’nin Avantajları
    3. Türev ve Integral Nedir?
    4. PID ile Çizgi İzleyen Robot Uygulaması
    4.1. Şimdi çizgi izleyen robotumuzda türevi ekleyerek PID algoritmamızı birlikte oluşturalım:
    4.2. Peki integrali eklersek ne olur?
    5. Projenin Malzemeleri
    6. PID Uygulama Örnekleri
    Hakkımızda
    Hakkımızda

    Robo90, 2021 yılında Ankara'da kurulmuş bir firmadır. Makerlara, mühendislere, elektronik ve teknoloji tutkunlarına kaliteli bir alışveriş deneyimi sunmayı amaçlamaktadır. Arduino, 3D yazıcı modelleri, 3D yazıcı parçaları, Raspberry Pi, sensörler, devre elemanları, elektronik kartlar, komponentler ve robotik kodlama eğitim ürünleri gibi geniş bir yelpazede kaliteli binlerce çeşit ürünü uygun fiyatlarla bulabileceğiniz güvenilir bir platform oluşturmayı ve bunu korumayı hedeflemektedir.

    E-posta: info@robo90.com
    WhatsApp: 0312 429 01 90

    Yeni Yazılar

    14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

    10 Şubat 2025

    CH340 Driver Kurulumu? Nasıl İndirilir?

    22 Temmuz 2024

    Arduino ile FM Radyo Uygulaması

    19 Nisan 2024

    STM32 ile I2C Oled Ekran Kullanımı

    14 Kasım 2023
    Çok Okunanlar

    CH340 Driver Kurulumu? Nasıl İndirilir?

    22 Temmuz 2024

    🧑‍💻 ESP32 Kullanımı – Esp32’ye Nasıl Kod Atılır?

    26 Temmuz 2023

    Creality K1 ve K1 Max 3D Yazıcı Karşılaştırması – İncelemesi

    27 Eylül 2023

    ESP32CAM ve OV2640 Nasıl Kullanılır?

    5 Ağustos 2023
    YouTube Instagram LinkedIn Discord Facebook X (Twitter) WhatsApp
    • Anasayfa
    • 3D Baskı Hizmeti – Fiyat Teklifi Alın
    • Yazılar
    • Mağaza
    • Yazar Ekibimiz
    • İletişim
    © 2025 Robo90. Tüm hakları saklıdır. Robo90 Blog.

    Type above and press Enter to search. Press Esc to cancel.