DC Motor - PID Kontrol V1.0

  Рет қаралды 34,759

Baris Dogan

Baris Dogan

6 жыл бұрын

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.com/item/330501...
Sürücü: IRFZ44n
Not: Herhangi bir enkoderli motor da kullanabilirsiniz.
www.direnc.net/25-d-mm-metal-...
veya aşağıdaki motor ve enkoderden ayrı olarak alıp da kullanabilirsiniz.
Motor: www.direnc.net/12v-1000rpm-re...
Enkoder: www.direnc.net/manyetik-encod...

Пікірлер: 106
@huseyinulupinar392
@huseyinulupinar392 3 жыл бұрын
Hocam ağzınıza sağlık, çok güzel bir video olmuş. Tebrikler
6 жыл бұрын
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 жыл бұрын
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...
@user-zr7eq9to8j
@user-zr7eq9to8j 8 ай бұрын
çok fazla pid örneği olsada nedense bu çok hoşuma gitti.
@BarisHoca
@BarisHoca 8 ай бұрын
@umutmarabaoglu6539
@umutmarabaoglu6539 Жыл бұрын
Çok güzel bir anlatım olmuş.gerçekten başarılı.
@mhtteker
@mhtteker 3 жыл бұрын
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 :)
@muhammedemintanik255
@muhammedemintanik255 3 жыл бұрын
Hocam önerdiginiz yerli yabancı kaynaklar var mı?
@egegeceler8224
@egegeceler8224 Жыл бұрын
Çok Teşekkürler çok güzel içerik olmuş elinize sağlık
@serdaranldemirbas1472
@serdaranldemirbas1472 5 жыл бұрын
Hocam muhteşemsiniz.
@mehmetsar3112
@mehmetsar3112 2 жыл бұрын
Emeğinize sağlık. Çok bilgilendirici oldu
@BarisHoca
@BarisHoca 2 жыл бұрын
Sağ olun
@berattansecmeler568
@berattansecmeler568 5 жыл бұрын
10 numara bilgi tesekkurler
@selimhantutumlu9738
@selimhantutumlu9738 4 жыл бұрын
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
@emlidare7409
@emlidare7409 3 жыл бұрын
Emeğinize sağlık teşekkürler
@jjj8071
@jjj8071 5 жыл бұрын
Tam aradığım şey teşekkürler tabi integral almayı da bilmediğimden 11.sınıfı bekleyicem :)
@TeknoTeras
@TeknoTeras 3 жыл бұрын
Erteleme sakın internette hazır integral çözücüler var.
@hasanhocadanelektronik
@hasanhocadanelektronik 3 жыл бұрын
Güzel bir çalışma olmuş tebrikler
@murathandemirci1602
@murathandemirci1602 5 жыл бұрын
teşekkürler
@kinetiksin
@kinetiksin 4 жыл бұрын
Tebrik ederim Hocam
@suleymandogan8205
@suleymandogan8205 10 ай бұрын
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 8 ай бұрын
Ş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.
@rasitgungor9591
@rasitgungor9591 3 жыл бұрын
Ancak bukadar güzel anlatilabilirdi ötesi yok
@BarisHoca
@BarisHoca 3 жыл бұрын
Çok teşekkür ederim güzel yorumunuz için...
@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 ?
@ercost60
@ercost60 2 жыл бұрын
ÇOK GÜZEL!
@bloodtwister
@bloodtwister 3 жыл бұрын
teşekkürler koduda paylaşırsanız çalışmak için daha güzel olur. iyi çalışmalar
@omerbulut7456
@omerbulut7456 5 жыл бұрын
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 11 ай бұрын
Ç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ı.
@hasanhocadanelektronik
@hasanhocadanelektronik 3 жыл бұрын
Uno ya USB den değil power Jack den gerilim uygulansaydi o zaman referans 1024 e ulasirdi
@ilkerermis8198
@ilkerermis8198 4 жыл бұрын
hocam bu hangi mabuchi motor? Transfer Function için parametreleri elinizde varmı acaba?
@hasanhocadanelektronik
@hasanhocadanelektronik 3 жыл бұрын
enkoder sinyalini interrupt kurarak sayabiliriz o zaman kaçırma olmaz .
@BarisHoca
@BarisHoca 8 ай бұрын
Çok doğru
@metronom_81
@metronom_81 2 жыл бұрын
Teşekkür ederim ben sağlıkçı olduğum için anlamam çok zordu sayenizde temel olarak anladığımı düşünüyorum ….
@hayrettindemir1199
@hayrettindemir1199 7 ай бұрын
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).
@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,
@gokhanozden2347
@gokhanozden2347 3 жыл бұрын
ü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
@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?
@atalaysulu1179
@atalaysulu1179 3 жыл бұрын
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 2 жыл бұрын
Yeni okuyorum mesajını. Açıklama kısmına ekledim alternatif motorlar. Fakat genel olarak herhangi bir enkoderli motoru kullanabilirsin.
@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 жыл бұрын
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.
@canersahin1334
@canersahin1334 7 ай бұрын
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ı
@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...
@MrMuratAVCI
@MrMuratAVCI 5 жыл бұрын
Hocam selamlar . ki, KP ve KD değerlerini neye göre yada nasıl belirlediniz?
@BarisHoca
@BarisHoca 5 жыл бұрын
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.
@alperenalgul6532
@alperenalgul6532 2 ай бұрын
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 2 ай бұрын
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.
@semihaktas9478
@semihaktas9478 4 жыл бұрын
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 жыл бұрын
Ö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 жыл бұрын
@@BarisHoca İlgilendiğiniz için teşekkür ederim. İyi çalışmalar
@ozgurozanaktas5843
@ozgurozanaktas5843 3 жыл бұрын
@@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ı?
@sercandoguyol2661
@sercandoguyol2661 5 ай бұрын
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 5 ай бұрын
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 5 ай бұрын
@@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 2 ай бұрын
@@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.
@gokhanyldrm91
@gokhanyldrm91 3 жыл бұрын
hocam pid ile ilgili birkaç sorum var mail adresinizi verme şansınız var mı
@mertsirin10
@mertsirin10 4 жыл бұрын
Hocam iyi günler. Bu kontrolü arduino olmadan analog pid ile nasıl yaparız?
@BarisHoca
@BarisHoca 3 жыл бұрын
Yorumlardan Sefa Memoğlu'na verdiğim cevaba bakabilirsin.
@kddfdd3912
@kddfdd3912 Жыл бұрын
Teşekkürler kaptan. kanalı boşlama
@yapay.zeka.adam1
@yapay.zeka.adam1 Жыл бұрын
Devre şeması var mı acaba?
@eletronicaparaohooby
@eletronicaparaohooby 9 ай бұрын
Hy friend! How are you. Saudations from Brazil. Great lessons . In The KZfaq configurations of The video, select your language. For KZfaq can generate automatic languages translations for the others languages
@BarisHoca
@BarisHoca 9 ай бұрын
Ok my friend. I defined the language as you wished. Hope you enjoy it...
@eletronicaparaohooby
@eletronicaparaohooby 9 ай бұрын
@@BarisHoca 😁👍🏾
@ta1dr
@ta1dr 2 жыл бұрын
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 2 жыл бұрын
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 2 жыл бұрын
@@BarisHoca cok tesekkurler...
@BarisHoca
@BarisHoca 2 жыл бұрын
@@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 2 жыл бұрын
@@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 2 жыл бұрын
@@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.
@suleymandogan8205
@suleymandogan8205 10 ай бұрын
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:'');
@hamzaterzi8801
@hamzaterzi8801 Жыл бұрын
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 Жыл бұрын
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 Жыл бұрын
@@BarisHoca Teşekkürler hocam.
@muratbayrak2820
@muratbayrak2820 5 жыл бұрын
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.
@bekesadam2665
@bekesadam2665 3 жыл бұрын
Hocam 8500 degeri nerden geliyor videoda bulumadim
@salihumutaydogan928
@salihumutaydogan928 3 жыл бұрын
motorun max rpm degeri 22. dk bahsediyor
@muhammedsefamemoglu5633
@muhammedsefamemoglu5633 4 жыл бұрын
Hocam bu devreyi herangi bir mikrodenetleyici kullanmadan nasıl yapabiliriz
@BarisHoca
@BarisHoca 4 жыл бұрын
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 жыл бұрын
@@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
@MrTough-dw7ot
@MrTough-dw7ot 5 жыл бұрын
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 жыл бұрын
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 жыл бұрын
@@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 жыл бұрын
@@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 жыл бұрын
@@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 жыл бұрын
@@MrTough-dw7ot Sağ olasın Bay Sert, sözlerin iyi geldi. Sonucu heyecanla bekliyorum. KZfaq video linki de yollarsan süper olur. Yolun açık olsun. Bir şey olursa yaz yine.
@emircanokus1250
@emircanokus1250 5 жыл бұрын
Hocam merhabalar. Acaba rica etsem kodları paylaşabilir misiniz?
@BarisHoca
@BarisHoca 5 жыл бұрын
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 ;)))
@Turklerin_Dunyasi
@Turklerin_Dunyasi 2 жыл бұрын
Hocam mail adresiniz varsa alabilirmiyim
Kontrol Sistemleri - Ders 05: İşaret Akis Diyagramları
1:06:53
Hardware Demo of a Digital PID Controller
2:58
Gregory L. Holst
Рет қаралды 978 М.
Nutella bro sis family Challenge 😋
00:31
Mr. Clabik
Рет қаралды 14 МЛН
Playing hide and seek with my dog 🐶
00:25
Zach King
Рет қаралды 21 МЛН
Double Stacked Pizza @Lionfield @ChefRush
00:33
albert_cancook
Рет қаралды 27 МЛН
PID Kontrol Deney Seti - Kontrol Sistemleri Dersi - 2018
8:06
AXI Teknoloji
Рет қаралды 15 М.
DIY 1kW Arduino MPPT Solar Charge Controller (WiFi ESP32)
18:11
TechBuilder
Рет қаралды 393 М.
SIMULINK  DC Motor Kontrol  #1
47:06
Baris Dogan
Рет қаралды 348
How to control multiple  DC motors with encoders
9:19
Curio Res
Рет қаралды 63 М.
Design BLDC Motor Speed Controller in Simulink | @MATLABHelper  Blog
7:17
Bölüm 6 - Arduino PID Kontrol
21:17
Berkay'la Elektronik
Рет қаралды 36 М.
PID Control - C kodu ve Basit Simülasyon
16:04
Mehmet Fatih
Рет қаралды 1,3 М.
PID temperature controller DIY Arduino
12:30
Electronoobs
Рет қаралды 419 М.
FIRÇALI MOTOR ESC YAPIMI|DC MOTOR SÜRÜCÜ YAPIMI
7:13
Teknik Atölye
Рет қаралды 19 М.
Черная Magic Mouse
0:53
Romancev768
Рет қаралды 807 М.
НИКОГДА не иди на сделку с сестрой!
0:11
Даша Боровик
Рет қаралды 729 М.
Do YOU Understand WHAT JUST HAPPENED!? 😂 #shorts
0:57
LankyBox World
Рет қаралды 1,6 МЛН
для всей семьи
0:56
Стакановец
Рет қаралды 191 М.
Абзал неге келді? 4.10.22
3:53
QosLike fan club
Рет қаралды 31 М.
ПОСТАРЕЛА ЗА 1 ДЕНЬ НА 20 ЛЕТ - МУЖСКОЕ ЖЕНСКОЕ
55:44
ПРИЯТНЫЙ ИЛЬДАР
Рет қаралды 677 М.