DC Motor - PID Kontrol V1.0

Поделиться
HTML-код
  • Опубликовано: 29 сен 2024
  • Tamiya marka paletli tank modeline ait dc motorların PID kontrolüne yönelik tanıtıcı görüntüler içerir.
    İlk çekim denemesi olduğu için çekim hataları olabilir.
    O dönem TÜBİTAK yarışmasına hazırlanan öğrencilerime hızlı bir şekilde PID anlatmak için, planlama (prodüksiyon) yapmadan, "gelişine" çektiğim bir videodur.
    Video çekilirken herhangi bir beğeni, reklam vb. kaygısı güdülmemiştir.
    İleride daha iyi bir versiyonunun çekilmesi planlanmaktadır.
    İyi seyirler dilerim...
    Motor: Mabuchi 130, enkoderli.
    Enkoder: Optik, artımsal, çift çıkışlı (A B), 30 pals/devir
    tr.aliexpress....
    Sürücü: IRFZ44n
    Not: Herhangi bir enkoderli motor da kullanabilirsiniz.
    www.direnc.net...
    veya aşağıdaki motor ve enkoderden ayrı olarak alıp da kullanabilirsiniz.
    Motor: www.direnc.net...
    Enkoder: www.direnc.net...

Комментарии • 106

  • @ahmeterdoğan-p8i
    @ahmeterdoğan-p8i 10 месяцев назад +1

    çok fazla pid örneği olsada nedense bu çok hoşuma gitti.

  • @kddfdd3912
    @kddfdd3912 Год назад +1

    Teşekkürler kaptan. kanalı boşlama

  • @alperenalgul6532
    @alperenalgul6532 4 месяца назад +1

    Hocam merhabalar biz arduino kullanmadan pid controller ile cruise kontrol ve çarpışma önlemeli bir arac yapmaya çalışıyoruz (sadece ileri yönlü) kontrolcüden aldığımız outputu nasıl motora aktarabiliriz yardimci olursaniz cok sevinirim

    • @BarisHoca
      @BarisHoca  4 месяца назад

      Merhaba Alperen; kontrolcü çıkışını (kontrol sinyali) motor sürücüsü girişine göndereceksiniz. Motor sürücüsüne göre kontrol sinyalini PWM, analog sinyal veya dijital sinyale (i2c, spi, uart) çevireceksiniz ve yollayacaksınız. Gerisini motor sürücü halledecek.

  • @jjj8071
    @jjj8071 5 лет назад +11

    Tam aradığım şey teşekkürler tabi integral almayı da bilmediğimden 11.sınıfı bekleyicem :)

    • @TeknoTeras
      @TeknoTeras 4 года назад +1

      Erteleme sakın internette hazır integral çözücüler var.

  • @hasanhocadanelektronik
    @hasanhocadanelektronik 3 года назад +2

    Uno ya USB den değil power Jack den gerilim uygulansaydi o zaman referans 1024 e ulasirdi

  • @suleymandogan8205
    @suleymandogan8205 Год назад

    Barış hocam , Ekrandan bakarak kodu yazdım. setup define ve setup kısmını yazdım ama kesin hatalar var. ayrıca kod içeriğinde de hata veriyor. rica ediyorum. lütfen arduino ide de kodun yüklenebilirliğini kontrol etmenizdir.
    #include
    int analogDeger = A0;
    int cikis = 5;
    int girisDurum1 = 8 ;
    int girisDurumEski;
    void setup() {
    pinMode(analogDeger, INPUT); // Potansiyometre değeri
    pinMode(girisDurum1, INPUT); // Encoder
    pinMode(cikis, OUTPUT); // Mosfet çıkışı
    int f1 = 0;
    int Kp = 5.5;
    int Ki = 0.1;
    int Kd = 0.01;
    int Ui0 = 0.0;
    int hata0 = 0.0;
    int simdiUs = micros();
    int simdiMs = millis();
    }
    void loop()
    {
    //Frekans ölçümü . Her 20us de bir sayısal giriş kontrol edilir.
    if ((simdiUs + 20) < micros())
    {
    bool girisdurum1 = digitalRead(8);
    if (girisDurum1 != girisDurumEski)
    {
    f1++;
    girisDurumEski = girisDurum1;
    }
    simdiUs = micros();
    }
    // Belirli periyotta frekans ölçümü yapılarak PID kontrol ile motor sürülür.
    if ((simdiMs + 20) < milis()
    {
    hizGeriBesleme1 = f1 * 50; //Sayaç okunur.Sayaç içeriği 0-8500 arası değişir.
    f1 = 0;
    // Frekans sayacı sıfırlanır.
    // Referans değeri okunur.
    int analogDeger = analogRead(A0); //0-1014 arası değişir.Pot aralığı.
    float referans = (float)analogDeger * 8.3826; //0-1014 arası analog değer 0-8500 arası referans değere dönüştürülür.
    // Yazılımsal PID kontrol algoritması
    float hata = referans - hizGeriBesleme1;
    float Up = Kp * hata;
    float Ui = (Ki * hata) + Ui0;
    Ui0 = Ui;
    float Ud = Kd * (hata - hata0);
    hata0 = hata;
    float Upid = Up + Ui + Ud;
    //int cikis = (int)(Upid * 0,0298); // 0-8500 arası değer 0-255 arası çıkış değerine dönüştürülür. 255/8500
    if (cikis > 255) cikis = 255; // PID kontrolör çıkının 255'i aşmaması sağlanır.
    else if (cikis < 0) cikis = 0; // PID kontrolör çıkının 0 altına düşmemesi sağlanır.
    analogWrite(5,cikis); // Hesaplanan PID kontrol çıkış değeri motor sürücüye gönderilen PWM sinyali.
    }
    }
    // Serial.print(''Analog:'');

  • @hayrettindemir1199
    @hayrettindemir1199 9 месяцев назад

    27:40 evet teori ile pratik bire bir uyuşmaz. Fırçalı motorlar 0-30 arası gibi PWM değerlerinde hiç çalışmıyor (dönmüyor).

  • @eletronicaparaohooby
    @eletronicaparaohooby Год назад +1

    Hy friend! How are you.
    Saudations from Brazil.
    Great lessons .
    In The RUclips configurations of The video, select your language.
    For RUclips can generate automatic languages translations for the others languages

    • @BarisHoca
      @BarisHoca  Год назад +1

      Ok my friend. I defined the language as you wished. Hope you enjoy it...

    • @eletronicaparaohooby
      @eletronicaparaohooby Год назад

      @@BarisHoca
      😁👍🏾

  • @canersahin1334
    @canersahin1334 9 месяцев назад

    hocam hayırlı günler kontrol sistemleri dersi için bldc motoru pıd olarak sürmem lazım sizden ricam yardımcı olurmusunuz.devre şeması ve kodları paylaşma imkanınız varmı

  • @sercandoguyol2661
    @sercandoguyol2661 7 месяцев назад +1

    Hocam videonuz çok güzel olmuş . Elinize sağlık . Sadece kafama takılan bir konu var yardımcı olursanız sevinirim . Bende PIC ile DC motor kontrol devresi yapıyorum Pıd ile birlikte ama pıd yi sadece kod kısmında mı kullanıyoruz yoksa ekstra PCb devre de de yapacağım devre tasarımında onun için devre kullanmam lazım mı ? Yani pıd yi kullanabilmek için sadece kod kısmında yazsam olur mu yoksa pıd nın ayrı devresı var mı ? Cevaplarsanız teşekkürler . Araştırdım ama bununla alakalı birsey bulamadım lütfen beni mazur görün 😔

    • @BarisHoca
      @BarisHoca  7 месяцев назад

      Merhaba Sercan; aslında video açık, iyi izlememişsin sanırım. Burada PIC MCU var ve tüm kodlar PIC içinde koşuyor. Ayrıca olan tek donanım motor sürücü, onu da anlattım.

    • @sercandoguyol2661
      @sercandoguyol2661 7 месяцев назад

      @@BarisHoca doğrudur hocam lütfen mazur görün sorunu 😔 Fakat aurdinio nun 5 v grapund uns ve bir analog girişine bağladığınız potansiyometre Pıd için di dimi hocam videodan öyle anladım da emin olmak için soruyorum hocam 🥲

    • @komaedanagito841
      @komaedanagito841 4 месяца назад

      @@sercandoguyol2661 O pid'nin inputunu kontrol etmek için, referans sinyalini ayarlamak için diye biliyorum. pid olsun olmasın çıkış hızının devrini kontrol etmek için girişi ayarlanabilir kılmalısın, o pot da ayarlanabilir olmasını sağlıyor.

  •  6 лет назад +8

    Sizin gibi bilgili ve değerli insanların burada bilgilerini paylaşmaları çok güzel. Teşekkür ederim Hocam bu videoların devamını bekliyoruz.

    • @BarisHoca
      @BarisHoca  6 лет назад +1

      Sağol Halil, sen de kendi kanalında ne güzel bilgiler paylaşmışsın, abone oldum. Ben de senin gibi öğrencilerimle gurur duyuyorum. İyi ki varsınız, hep güzel şeylerle uğraşın...

  • @mhtteker
    @mhtteker 3 года назад +4

    Günlerdir PID hakkında araştırma yapıyorum. İzlediğim en detaylı ve bilgilendirici video olduğuna eminim. Emeğinize sağlık :)

  • @suleymandogan8205
    @suleymandogan8205 Год назад +1

    Barış bey, elinize emeğinize sağlık. işimin görülmesini geçtim. bu kadar açıklıyıcı bir video hiç beklemiyordum. hazırladığınız için minnettarım. başından sonuna kadar atlamadığım ender videolardan biri oldu. yazılım konusunda basic olsamda bir çok şey kafamda oturdu. devir ayarı için açıklayıcı kısımlar çok iyi olmuş. sadece bir şey kafamı kurcalıyor. o da sizin motorun arkasındaki encoder . motorun bir dönüşünde sallıyorum 20-30 tane yarık var. yani motorun bir turunda işlemciye encoderden 20-30 pals gitmekte. yazılımda bununla ilgili bir değişken göremedim. ben bunu triac sürerek universal ac motor sürmek için değiştireceğim. motor milinde bir tane nedyum mıknatıs olacak bu mıknatıs motorun her dönüşünde reed röle ile mcu ya bilgi göndermesini planlamaktayım. böyle bir yapıyı adapte etmem yazılımda çalışmasında sıkıntı çıkar mı? donanımsal olarak sistemi çok rahat adapte ederim . yalnız yazılım konusunda bi o kadar kötü olduğumdan çekincelerim var.bu konuda desteğinizi rica ederim.

    • @BarisHoca
      @BarisHoca  10 месяцев назад

      Şimdi gördüm mesajınızı. Videodaki kodu deşifre edip yayınlamışsınız zaten. Kodda "//Frekans ölçümü . Her 20us de bir sayısal giriş kontrol edilir." isimli bölüm var. O bölümde 20ms boyunca okuduğum yarık sayısını topluyorum "f1" değişkeninde. Sonuçta frekans dediğimiz 1 saniyedeki salınım sayısı olduğuna göre 20ms de elde ettiğim sayım toplamını "f1" 50 ile çarparsam 1 saniyedeki salınım sayısını yani frekansı bulmuş olurum. Aynı yaklaşımı kendi uygulamanıza rahatça uygulayabilirsiniz.

  • @hasanhocadanelektronik
    @hasanhocadanelektronik 3 года назад +2

    enkoder sinyalini interrupt kurarak sayabiliriz o zaman kaçırma olmaz .

  • @omerbulut7456
    @omerbulut7456 5 лет назад +4

    20 mikro saniyede bir encoderi kontrol etmektense interrupt kullanarak her yükselen tetiği yakalayabilirsiniz.Denetleyiciye düşen iş ve kod yükünden kurtulursunuz.Birde basamak girişi ve hız çıkışını osiloskopta göstermek konunun anlaşılması açısından daha verimli olabilir.Hız çıkışını devir/dakika ile hesaplayıp denetleyiciden çıkış verebilirsiniz.Güzel çalışma tebrik ederim

    • @BarisHoca
      @BarisHoca  5 лет назад

      Güzel, yapıcı ve aydınlatıcı yorumunuz için teşekkür ederim. Tavsiyelerinizi v2 de değerlendireceğim.
      Yanlız şu husus da var: arduino uno kullandığım için 50hz de çalışıyorum, en az 100hz olsa daha iyi. Fakat denemek lazım, uno destekleyecek mi, ya da başka mcu ya geçmek lazım.
      Burada kontrol döngüsü 50hz de çalıştığı için, geri beslemenin (hız, enkoder bilgisi) daha yüksek frekansta okunması kontrole bir etkisi olmaz sanırım. (Tepkime hızını yavaş adım belirler) Bence kontrol döngüsünü de interrupt a bağlasak fark yaratır, fakat uno her interrupt ta o işlem yükünü kaldırır mı bilemedim. Bir denemek lazım.
      Biraz aceleyle, çocuklara temelleri vermek için bu videoyu amatörce çektim. Zaman ayırıp daha iyisini v2.0 çekmek lazım.

    • @BarisHoca
      @BarisHoca  5 лет назад

      Bu arada videoya tekrar baktım; 15:26'da frekans ölçümünü interrupt ile yapmanın daha iyi olacağını söylemişim. Dediğim gibi biraz UNO nun yetersizliği biraz da bizim acele etmemiz nedeniyle interrupt sız yazmışız kodu.

    • @ElektronikLabirenti
      @ElektronikLabirenti 4 года назад

      @@BarisHoca hocam unoda 2,3 nolu uçlar interupt zaten ve ayrıca analog değişim interupları var, hata ayarlamış olduğunu süreleri loop dongusunde değil bunu timer1 ve timer2 ile ayarlarsanız gerçekten iyi olurdu arduino unoda ,atmega328p mikrodenetleyici kullanıyor.Pid uygulamasını loop ile bunu yaptıysanız interupt ve timer ile çok rahat daha kararlı hale getirebilirsiniz. Tabi-kide arm işlemci değil.Ama işlemcide yeterince özellik ve fonksiyon bulunuyor .micros ve milis çok uzun süreli çalışmalarda hatalı sonuç alacaksınızdır. Kodları gösterirken videoda kaymalar olmuş,ayrıca kodları gösterecekseniz ekran görüntüsü alarak göstermeniz daha faydalı olacaktır.Hocam kodları paylaşmayınca üste alta değişken durumlarını anlamayan arkadaşlar olabilir...

    • @BarisHoca
      @BarisHoca  4 года назад

      @@ElektronikLabirenti Aslında 1 sene önce, bir üstteki yorumda zaten interrupt kullanımı konusunu ve neden kullanmamış olduğumu açıklamışım. Bu videoyu yarışmaya hazırlanan bir grup öğrencime PID uygulamasını ve nasıl etkisi olduğunu hızlı bir şekilde göstermek için çektim. Çekim çok amatör zaten, kabak gibi ortada. (videonun çekildiği tarihi de göz önüne almak lazım) Kodda da eksikler var. V2 çekiminde iyileştirmeler yapılacağını da yine yorumda belirtmişim. Daha ne diyeyim? Bu arada interrupt olması kararlılık getireceği, millis() ve micros() un hata üreteceği kısmına katılmıyorum. Millis() ve micros() da timer interrupt tabanlı. Interrupt tabanlı çalışmada kontrol döngüsü değişken periyotlu (variable step) çalışır. Bu da z düzleminde örnekleme periyodu kompanzasyonu işlemini zorlaştırır. Sabit örnekleme periyotlu (fixed step) çalışmak, periyot kompanzasyonu işini de kolaylaştırır. (videodaki kodun eksiklerinden birisi de bu) Bu video ticari değil eğitim amaçlı çekildiği için kodları da hazır olarak paylaşmıyorum. Zaten kodun kalbi çok açık şekilde ortada...

    • @aleynaabanuz6696
      @aleynaabanuz6696 Год назад

      Çizgi izleyen araba yapmaya çalışıyoruz kendi çapımızda birşeyler yaptık ama şu interrupt kullanımını bir türlü yapamadık. Qtr8 ile pid yapıp aracı çizgide tutuyoruz ama karmaşık yollarda performansı artırmak İçin interrupt kullanmak istiyoruz. Bu konuda yardımcı olabilir misiniz? Barış hocam da bahsetmiş arduino pek uygun değil demiş. Benzer ne kullanılabilir daha performanslı.

  • @metronom_81
    @metronom_81 2 года назад +1

    Teşekkür ederim ben sağlıkçı olduğum için anlamam çok zordu sayenizde temel olarak anladığımı düşünüyorum ….

  • @egegeceler8224
    @egegeceler8224 Год назад +1

    Çok Teşekkürler çok güzel içerik olmuş elinize sağlık

  • @atalaysulu1179
    @atalaysulu1179 3 года назад +1

    Hocam merhabalar bir sorum olacaktı PID ile DC motorun hız kontrolünü sağlayıp bunların grafik simulasyonlarını oluşturup değerlerini alacağım bir projem var yalnız sizin belirtmiş olduğunıx motoru mevcutta bulamıyorum alternatifini önereceğiniz motor var mıdır ya da şu şu değerlerde ki motorların hepsi uyumludur diyeceğiniz bende aurdinuo ile devreyi kuracağım şimdiden teşekkürler hocam

    • @BarisHoca
      @BarisHoca  3 года назад

      Yeni okuyorum mesajını. Açıklama kısmına ekledim alternatif motorlar. Fakat genel olarak herhangi bir enkoderli motoru kullanabilirsin.

  • @ObenEnesSucu
    @ObenEnesSucu Год назад

    Saygıdeğer Hocam merhabalar, incelemek ve yapmak amaçlı projenize ait şematik ve kod dosyalarını paylaşmanızı rica ediyorum. Saygılarımla,

  • @umutmarabaoglu6539
    @umutmarabaoglu6539 Год назад +1

    Çok güzel bir anlatım olmuş.gerçekten başarılı.

  • @ilkerermis8198
    @ilkerermis8198 4 года назад +1

    hocam bu hangi mabuchi motor? Transfer Function için
    parametreleri elinizde varmı acaba?

  • @emlidare7409
    @emlidare7409 3 года назад +1

    Emeğinize sağlık teşekkürler

  • @hamzaterzi8801
    @hamzaterzi8801 2 года назад

    Hocam merhabalar. LM393 kızıl ötesi sensör ve enkoder disk yardımıyla tek bir PWM dijital pin ile hız ölçümü yapıyorum. PİD uygulaması yapmak için internette bulduğum yazılımlarda ise yükselen ve düşen kenar olmak üzere 2 tane giriş istiyor. Durum böyle olunca yazılımla direk çalıştıramıyorum. Acaba bu sorunu yazılımsal olarak nasıl çözerim? Teşekkürler.

    • @BarisHoca
      @BarisHoca  2 года назад +1

      Tek enkoder diski için çift sayısal giriş kullanılmasının nedeni, videoda da anlattığım gibi, diskin dönüş yönünü belirlemek. Eğer dönüş yönü senin için önemli değilse, sadece dönüş hızını tek girişten hesaplıyoruz zaten. Videoyu iyi izleyiin, sabırla, herşey var. Kolay gelsin...

    • @hamzaterzi8801
      @hamzaterzi8801 2 года назад

      @@BarisHoca Teşekkürler hocam.

  • @huseyinulupinar392
    @huseyinulupinar392 3 года назад +1

    Hocam ağzınıza sağlık, çok güzel bir video olmuş. Tebrikler

  • @hasanhocadanelektronik
    @hasanhocadanelektronik 3 года назад +1

    Güzel bir çalışma olmuş tebrikler

  • @mehmetsar3112
    @mehmetsar3112 2 года назад +1

    Emeğinize sağlık. Çok bilgilendirici oldu

  • @muratbayrak2820
    @muratbayrak2820 5 лет назад +2

    hocam ölçülen deger refaranstan büyük olursa ne olacak

    • @BarisHoca
      @BarisHoca  5 лет назад

      Biz o duruma "aşım" diyoruz ki, aşım olursa hata negatif olur; aşımı önleyecek şekilde kontrol çıkışı azalır. Böylelikle çıkış (ölçülen değer) azalarak referansa yaklaşır. Aşım durumu ile kontrolör çıkışı arasında ters bir orantı var diyebiliriz.

    • @muratbayrak2820
      @muratbayrak2820 5 лет назад

      ama programda motoru kapatıyoruz buda ac kapa yaptırır motora

    • @BarisHoca
      @BarisHoca  5 лет назад

      Hayır; yani gerekirse kapatır tabi fakat burada bir oransallık var. Formül "Hata = Referans - Çıkış (ölçülen değer)" Bu nedenle hata + da olabilir - de. Hata ne kadar büyükse PID'nin tepkisi tam tersi yönde ve o kadar büyük olur diyebiliriz. Bu nedenle belirli bir süre sonra, ideal koşullarda PID çıkışı sabit bir değerde kalır. Eğer PID katsayılarını doğru ayarlamazsan, örneğin oransal katsayıyı (Kp) olması gerekenden yüksek tutarsan; motor çıkışı senin de söylediğin gibi bir açılır bir kapanır. Bu istenmeyen bir durumdur. Bu nedenle PID kontrolörde katsayıları doğru belirlemek çok önemlidir. Video içerisinde bu konuyla ilgili giriş seviyesi temel bilgileri vermiştik.

  • @halimeyavuz665
    @halimeyavuz665 2 года назад

    merhaba hata ve hata değişimini pıd ile değilde fuzzy ve z-1 ile bulmak için nasıl bir uygulama yazabiliriz?

  • @Turklerin_Dunyasi
    @Turklerin_Dunyasi 2 года назад

    Hocam mail adresiniz varsa alabilirmiyim

  • @rasitgungor9591
    @rasitgungor9591 3 года назад +1

    Ancak bukadar güzel anlatilabilirdi ötesi yok

    • @BarisHoca
      @BarisHoca  3 года назад

      Çok teşekkür ederim güzel yorumunuz için...

  • @selimhantutumlu9738
    @selimhantutumlu9738 4 года назад +1

    Hocam emeğinize sağlık temelleri atmak için güzel bir video olmuş versiyon 2 de pıd kontrol parametrelerinin ayarlanmasına dair bir içerik olabilir

  • @MrMuratAVCI
    @MrMuratAVCI 5 лет назад +1

    Hocam selamlar . ki, KP ve KD değerlerini neye göre yada nasıl belirlediniz?

    • @BarisHoca
      @BarisHoca  5 лет назад +2

      Murat, videoda açıkladım sanırım ama bunun daha gelişmiş V2.0'ını da çekeceğim. Orada daha çok vurgulayalım. Fakat kısaca şöyle yapıyoruz: geri beslemeli sistemde Kp 1; Ki ve Kd 0 yapıyoruz. Bu sistemin doğal davranışını veriyor. Sonrasında hatayı azaltacak şekilde Kp'yi arttırıyoruz. Bir süre sonra osilasyon başlıyor, orada Kp'yi azıcık kısıyoruz. Sonrasında Ki değerini 0.1 aralıklarla azar azar arttırıyoruz. En son da 0.01 basamaklarla gerekirse Kd veriyoruz. Tabi bu sistemden sisteme değişiklik gösterebiliyor fakat DC motor için iyi sonuç veriyor. Özetle, tecrübe ve deneme yanılma ile buluyoruz. Elimizde sistemin tam modeli varsa hesap yoluyla katsayılar daha hassas bulunabilir. Tabi bunlar da belki ileriki videoların konusu :)) Yorumların için teşekkür ederim.

  • @bloodtwister
    @bloodtwister 3 года назад

    teşekkürler koduda paylaşırsanız çalışmak için daha güzel olur. iyi çalışmalar

  • @gokhanozden2347
    @gokhanozden2347 4 года назад

    üstat 12V 80 RPM enkoderli DC motorları bunlar 4 ' den 8' e kadar olabilecek şekilde , hız sensörünün tekerden aldıgı anlık hız ile bu motorları kontrol panelinden belirtilen dönüş hızıyla döndermek istiyorum nasıl yapabilirim

  • @ta1dr
    @ta1dr 3 года назад +1

    Barış bey ui her hesaplamada kendi ile toplandigindan surekli artiyor hata sifir oldugunda toplam sabit kaliyor veya negatif oldugunda azaliyor peki ui yi t zaman sonra veya ne zaman resetlemek lazim yoksa yigilma denen durum olusmazmi?
    Saygilar

    • @BarisHoca
      @BarisHoca  3 года назад +1

      Yığılma denen duruma integral uçması (integral winup) deniyor. Ki parametresi gereğinden büyük verilirse gerçekleşir. O nedenle Ki parametresini doğru belirlemek lazım. İntegral toplama operatörüdür, hatayı toplayarak çıkışa etki eder ve bu sayede hatayı sıfırlamaya çalışır. Reset yaptığınızda integratörü "yok edersiniz". Resetleme gibi bir iş yapılmıyor. Zaten hata (referans - çıkış) sıfırlanınca, bir süre sonra integral çıkışı (ui) da sıfır olur. Ki yüksek olursa bu denge bozulur ve integral kendisinden kaynaklanan hatayı da toplayarak, kümülatif hata çığ gibi büyür. Açıklayıcı olmuştur umarım.

    • @ta1dr
      @ta1dr 3 года назад +1

      @@BarisHoca cok tesekkurler...

    • @BarisHoca
      @BarisHoca  3 года назад +1

      @@ta1dr Şunu da ekliyeyim, referans > çıkış olduğunda hata +, referans < çıkış olduğunda (aşım yaptığında) hata - olur. Sonuçta integratör hem + hem - hatayı sürekli topladığından; + ve - sürekli birbirini götürür. Bir süre sonra çıkış dengeye geldiğinde hata da sıfıra yakınsar. Yani sizin yazdığınız gibi ui sürekli artmıyor. İntegral sürekli topluyor, negatifi de pozitifi de. O nedenle toplama var diye toplam sürekli artacak diye bir durum yok.

    • @ta1dr
      @ta1dr 3 года назад +1

      @@BarisHoca ben firin uzerine calisma yapiyorum t0 aninda sicaklik 30 C set point 200C olunca ister istemez yigilma oluyor ben soyle bir yol izledim hata 10 C buyukse normal on/off calisiyor (yada sadec P devrede) hata 10C kucuk olunca PID devreye giriyor ...testler yapiyorum ....

    • @BarisHoca
      @BarisHoca  3 года назад +1

      @@ta1dr Isıtma ve soğutma sistemlerinde atalet yüksek olduğu için genellikle P kontrol yeterlidir. İlla PI istiyorsanız Ki çok çok düşük olacak. Ataletten dolayı yığılma olmasın. Fakat kendiniz yazılım ortamında hata .. değer aralığına girene kadar sadece P ile sürüp, sonrasında I'yı devreye alabilirsiniz. FuzzyPID uygulaması olmuş olur.

  • @semihaktas9478
    @semihaktas9478 4 года назад +1

    Merhaba Barış Bey,
    Bir sorum olacaktı. Ben bir proje yapıyorum. Bilgisayar kontrollü DC motorun PID sistem tasarımını yapıcam. Matlab ya da Visual Stduio programlarından birinde kontrol edicem. İzlediğim videonun Arduino kodlarını mail atsam paylaşma şansınız var mı birde pc ile kontrol etmem için daha önce böylebir proje yaptınız mı?
    İlgilendiğiniz için teşekkürler

    • @BarisHoca
      @BarisHoca  4 года назад +1

      Öncelikle Barış hocam diyebilirsin. Bu videoyu bazı öğrencilerime PID'yi ve PID ile motor kontrolünü anlatmak için hazırlamıştım. Bir eğitmen olarak tüm kodu paylaşma olayına prensip olarak karşıyım. Bir konuyu öğrenirken yaşayacağınız zorlukların, konuyu öğrenme sürecine büyük katkılar sağlayacağı inancındayım. Bununla paralel olarak bir eğitimcinin verdiği ödeve ait çözümü başka bir eğitimciye sormanın da doğru olmadığı kanaatindeyim. Siz gençlerin iyi yetişmesini istiyor ve anlayacağını düşünüyorum. (Önceki yorumlara bakarsan, kod talebinde bulunan herkese benzer cevaplar verdiğimi görebilirsin.)
      Gelelim sorularına:
      1) Bir DC motorun PID ile kontrolünü Matlab Simülink ile rahatlıkla yapabilirsin. Kontrol bloğunu Simulinkte oluşturur, external target olarak Arduino Uno, Mega (klonlarda CP21XX haberleşme modülüne sahip olmayan!!!) veya Due'ye yükleyebilirsin. Referansı Slider Gain ile verir, sonucu Scope ile izlersin.
      2) VS C# kullanabilirsin. Arayüzü C#'ta oluşturursun, seri haberleşme ile Arduino kart ile konuşursun. Kısaca hem C# için hem de Arduino için kod yazmak durumdasın. Kodu geliştirirken de 2 farklı yaklaşım uygulayabilirsin. Bir yaklaşımda Kontrol döngüsünü Arduino kodu içinde yapar, C#'ı sadece referans belirleme ve sonucu görüntüleme için kullanırsın. Diğer yaklaşımda ise kontrol döngüsünü C# ortamında yapar, Arduino kodunu sadece veri alışverişi için kullanırsın. İkinci yöntemde özellikle Windows'tan kaynaklanan sebeplerle güzel sonuç alamayabilirsin.
      3) Kodların paylaşılması konusunu yukarıda yazmıştım. Videoyu dikkatli izlersen gerekli tüm kodları açık şekilde görebilirsin.
      Kolay gelsin...

    • @semihaktas9478
      @semihaktas9478 4 года назад +1

      @@BarisHoca İlgilendiğiniz için teşekkür ederim. İyi çalışmalar

    • @ozgurozanaktas5843
      @ozgurozanaktas5843 4 года назад

      @@semihaktas9478 bu projeyi bitirdiniz mi? PID DC motor kontrolünü marlab aracılığıyla yapmam gerekiyor benim de.

    • @salihumutaydogan928
      @salihumutaydogan928 3 года назад

      @@ozgurozanaktas5843 proje ile bende ilgileniyorum herhangi bir gelişme yaptınız mı?

  • @berattansecmeler568
    @berattansecmeler568 5 лет назад +1

    10 numara bilgi tesekkurler

  • @murathandemirci1602
    @murathandemirci1602 5 лет назад +1

    teşekkürler

  • @yusufkaaninan1279
    @yusufkaaninan1279 4 года назад

    eğitici bir video olmuş hocam elinize sağlık. Hocam osiloskopta motor a uygulanan pwm sinyal 4khz 4000hz olduğunda motor hızının en sonu olduğunu söylüyorsunuz. Motor hızı 8500 dev/dak. motor hızı = osiloskoptaki frekans*2 ile mi bulunuyor ?

  • @gokhanyldrm91
    @gokhanyldrm91 3 года назад

    hocam pid ile ilgili birkaç sorum var mail adresinizi verme şansınız var mı

  • @yapay.zeka.adam1
    @yapay.zeka.adam1 Год назад

    Devre şeması var mı acaba?

  • @serdaranldemirbas1472
    @serdaranldemirbas1472 5 лет назад +1

    Hocam muhteşemsiniz.

  • @MrTough-dw7ot
    @MrTough-dw7ot 5 лет назад +1

    Hocam Arduino kodunun hepsini göstermemişsiniz sanırım. Bana acil lazım bu kod, paylaşır mısınız

    • @BarisHoca
      @BarisHoca  5 лет назад +3

      Kodları bulmam çok zor şu an. Fakat videoya baktım, 15:02 de görülen kısım; Arduino da setup bölümünden sonra gelen main kısmı. Bir tek baş tarafı gözükmüyor. Fakat asıl önemli kısımların hepsi gösterilip anlatılmış durumda. Siz gençlerin bu videodan bunları anlayabilmesi, gerisini çıkarabilmesi lazım. Kodun tamamına ihtiyacınız yok, buradan alacağınızı alın, gerisini siz yazıverin artık. Daha ne diyeyim. Yabancı çocuklar uğraşıyor, çabalıyor; bizim gençler hiç yorulmadan hep hazırı istiyor. Nesil ne zaman böyle oldu, ülkeyi nasıl kurtaracaklar bilemiyorum. Neyse Tough guy, çalışmaya devam, sevgiyle kal...

    • @MrTough-dw7ot
      @MrTough-dw7ot 5 лет назад +2

      @@BarisHoca Hocam yabancı çocuklarının uğraştıklarının farkındayım :D bende uğraşıyorum, hafta sonu olmasına rağmen sabah üniversiteye gelip gece dönüyorum. Yarışmaya katılacağız ondan böyle uğraşıyorum. Kod kısmınıda dediğiniz gibi tahmin ettim ve kodu çalıştırdım ancak siz potansiyometre kullanmışsınız ben ise direk kodta hangi rpm mi istediğimi belirten koda dönüştürmeye çalıştım. Hala istediğim sonucu elde edemedim. Bende diyorum acaba kodu eksik gördüğüm için mi sonuç alamıyorum, ondan dolayı yazmıştım :)

    • @BarisHoca
      @BarisHoca  5 лет назад +1

      @@MrTough-dw7ot sen de önce pot ile dene. Mevcut yapının çalışıp çalışmadığını görürsün. Sonra yapacağın, ref ile okunan analog değerin farkını alıp hatayı hesaplayan satırın hemen üzerine (öncesine) seriporttan ref değrini okuyan ve değişkene atan satırları eklemek. Tahminen 3 satır eleyeceksin, o kadar. Dediğim gibi, önce mevcudu bir çalıştır. Tabi elektriksel bağlantıları sorunsuz yaptığını varsayıyorum¿¿¿

    • @MrTough-dw7ot
      @MrTough-dw7ot 5 лет назад +1

      @@BarisHoca Tamamdır hocam Allah razı olsun. Bu videoda ki anlatımınız çok güzel, umarım bu kalitede videolarınızın devamı gelir. Kanalınıza abone oldum, teşekkürler tekrardan :)

    • @BarisHoca
      @BarisHoca  5 лет назад +1

      @@MrTough-dw7ot Sağ olasın Bay Sert, sözlerin iyi geldi. Sonucu heyecanla bekliyorum. RUclips video linki de yollarsan süper olur. Yolun açık olsun. Bir şey olursa yaz yine.

  • @kinetiksin
    @kinetiksin 5 лет назад +1

    Tebrik ederim Hocam

  • @ercost60
    @ercost60 2 года назад

    ÇOK GÜZEL!

  • @bunyaminbugrakorkmazer2677
    @bunyaminbugrakorkmazer2677 4 года назад

    Hocam Ud negatif çıktığı zaman ne oluyor, float tipinde tanımladığımız için negatif sayı pozitife mi çevrilecek?

    • @BarisHoca
      @BarisHoca  4 года назад +1

      Float negatif de olabilir. Ud zaten negatif de olabilir. Ud türev çıkışını temsil eder ve çıkışın davranış eğilimini (gelecekte nereye doğru gideceğini) belli eder. Negatif Ud çıkışın referansın altına doğru yöneldiğini, pozitif Ud ise referansın üzerine doğru yöneldiğini (aşım yapabileceğini) belli eder.

  • @buraksanl7316
    @buraksanl7316 5 лет назад

    hocam iyi günler benim size bir sorum olacak ben dc dc boost converter yapıyorum ve anahtarlama elemanı olarak arduino kullanmam gerekiyor arduinonun cod dilini hiç bilmiyorum bana pı cod bulabileceğim bir site önerebilir misiniz ya da sizde varsa atabilir misiniz?

    • @BarisHoca
      @BarisHoca  5 лет назад

      Sevgili Burak, aradığın kodlar ve diğerleri, hepsi bu videonun içinde. Tekrar izlersen kodları görebilirsin. Kolay gelsin...

  • @mertsirin10
    @mertsirin10 4 года назад

    Hocam iyi günler. Bu kontrolü arduino olmadan analog pid ile nasıl yaparız?

    • @BarisHoca
      @BarisHoca  4 года назад

      Yorumlardan Sefa Memoğlu'na verdiğim cevaba bakabilirsin.

  • @bekesadam2665
    @bekesadam2665 3 года назад

    Hocam 8500 degeri nerden geliyor videoda bulumadim

  • @muhammedsefamemoglu5633
    @muhammedsefamemoglu5633 4 года назад

    Hocam bu devreyi herangi bir mikrodenetleyici kullanmadan nasıl yapabiliriz

    • @BarisHoca
      @BarisHoca  4 года назад +2

      Güzel soru; tabi ki OPAMP kullanarak. 1 eviren yükselteç, 1 türev alıcı, 1 integratör çıkışlarını bir toplayıcı ile toplayacaksın. Toplaycının çıkışına da tersleyici (kazancı 1 olan eviren yükselteç) koyacaksın. Eviren yükselteç, türev alıcı ve integratör kazançlarını da pot ile ayarlanabilir yaptın mı (hatta çıkıştaki eviren yükseltecin de kazancını pot ile ayarlanabilir yaparsın, böylece çıkış sınırlayıcı görevi de görmüş olur); bitti gitti :)))

    • @muhammedsefamemoglu5633
      @muhammedsefamemoglu5633 4 года назад

      @@BarisHoca çok teşekkür ederim bir sorum daha olacak bu opamp lı devrede aynı zamanda hız kontrolü de yapmak istiyorum şöyle ki otorun en yüksek hızının %90 ı benim en yüksek hızım, %50 si orta seviyeli hızım, %10 u da yavaş seviyeli hızım olarak kullanmak istiyorum bunu nasıl yapabilirim

    • @BarisHoca
      @BarisHoca  4 года назад +1

      @@muhammedsefamemoglu5633 Sorunu anlamadım. PID'nn işi değil o dediğin. Sen referans girişini %90, %50, %10 yapacaksın bir şekilde (MCU kullanmayacaksan bir pot veya ön gerilimlendirilmiş anahtarlar kullanarak); sonrasında PID sistem çıkışını %90, %50, %10 yapmaya çalışacak.

    • @muhammedsefamemoglu5633
      @muhammedsefamemoglu5633 4 года назад

      Baris Dogan tamamdır çok teşekkür ederim

  • @emircanokus1250
    @emircanokus1250 5 лет назад

    Hocam merhabalar.
    Acaba rica etsem kodları paylaşabilir misiniz?

    • @BarisHoca
      @BarisHoca  5 лет назад +7

      Hazır kod bizde mevcut değil; siz gençleri hazıra alıştırmamak için. Fakat aradığın her şey videoda var. Sadece bunu bulmayı ne kadar arzuluyorsun? Önemli olan sizlerde bilime, doğruya olan arzuyu arttırmak ;)))