İçindekiler:

PID Sıcaklık Kontrol Cihazı: 7 Adım
PID Sıcaklık Kontrol Cihazı: 7 Adım

Video: PID Sıcaklık Kontrol Cihazı: 7 Adım

Video: PID Sıcaklık Kontrol Cihazı: 7 Adım
Video: Enda ET4402 Sıcaklık Kontrol Cihazı 2024, Temmuz
Anonim
PID Sıcaklık Kontrol Cihazı
PID Sıcaklık Kontrol Cihazı

Arkadaşım plastik geri dönüşüm için plastik bir ekstrüder yapıyor (https://preciousplastic.com). Ekstrüzyon sıcaklığını kontrol etmesi gerekiyor. Bu amaçla bir meme ısıtıcı bandı kullanıyor. Bu nozülde bir termokupl ve sıcaklığı ölçmemizi ve son olarak istenen sıcaklığa ulaşmamızı sağlayan bir ısıtma ünitesi (retroaction loop yapın) bulunmaktadır.

Tüm bu nozul ısıtıcı bantlarını kontrol etmek için birkaç PID kontrol cihazına ihtiyaç duyduğunu duyduğumda, hemen kendiminkini yapmaya çalışma isteği uyandırdı.

Adım 1: Araçlar ve Malzeme

Aletler

  • havya, lehim teli ve akı
  • cımbız
  • freze makinesi (PCB prototipleme için kimyasal aşındırma da mümkündür) (PCB'yi kartal dosyamla da sipariş edebilirsiniz)
  • termometre (kalibrasyon için)
  • arduino (herhangi bir tür) veya bir AVR programcısı
  • FTDI seri TTL-232 USB kablosu
  • lazer kesici (isteğe bağlı)
  • multimetre (ohmmetre ve voltmetre)

Malzeme

  • Bakalit tek tarafı bakır levha (minimum 60*35 mm) (Cam elyafı alırken testeremi mahvettim o yüzden dikkatli olun: Bakalit)
  • Attiny45 mikrodenetleyici
  • LM2940IMP-5 voltaj regülatörü
  • AD8605 işlemsel yükselteç
  • NDS356AP transistör
  • bir grup direnç ve kapasitör (SMT 0603 adafruit kitabına sahibim)
  • 230V-9V ac-dc transformatör
  • 1N4004 diyotlar
  • katı hal rölesi
  • oje (isteğe bağlı)

Adım 2: PCB'yi Asın

PCB'yi aşındırın
PCB'yi aşındırın
PCB'yi aşındırın
PCB'yi aşındırın
PCB'yi aşındırın
PCB'yi aşındırın

PCB'yi frezelemek için Proxxon MF70 CNC dönüştürülmüş ve konik bir uç ucu kullandım. Herhangi bir gravür bitiş bitinin işe yarayacağını düşünüyorum. Gcode dosyası, doğrudan Eagle ve pcb-gcode eklentisi tarafından oluşturuldu. İyi bir rota ayrımı sağlamak için, ancak tüm bakırı öğütmek için saatler harcamadan yalnızca üç geçiş yapılır. PCB CNC makinesinden çıkınca rotaları kesici ile temizledim ve multimetre ile test ettim.

Parametreler: ilerleme hızı 150 mm/dak, derinlik 0,2 mm, dönüş hızı 20'000 t/dak

Adım 3: Bileşenleri Lehimleyin

Bileşenleri Lehimleyin
Bileşenleri Lehimleyin

Cımbız ve havya ile bileşenleri doğru yerlere yerleştirin ve en küçük bileşenlerden başlayarak akı kullanarak (yardımcı olur) lehimleyin. Yine, herhangi bir kısa devre veya bağlantısız öğeniz olmadığını bir multimetre ile kontrol edin.

Amplifikatör kazancını istediğiniz rezistörü seçerek seçebilirsiniz (kazanç=(R3+R4)/R4). 1M ve 2.7k aldım, bu yüzden benim durumumda kazanç yaklaşık 371'e eşit. Tam değeri bilmiyorum çünkü %5 tolerans direnci kullanıyorum.

Termokuplum J tipi. Her derece için 0.05mV verdiği anlamına gelir. 371 kazanç ile amplifikatör çıkışından (0.05*371) derece başına 18.5mV elde ediyorum. Amplifikatör çıkışının yaklaşık 3,7V (0,0185*200) olması için 200°C civarında ölçmek istiyorum. 5V referans voltajı (harici) kullandığım için sonuç 5V'u geçmemelidir.

Görüntü, yaptığım ilk (çalışmayan) versiyona karşılık geliyor ama prensip aynı. Bu ilk versiyonda bir röle kullandım ve kartın tam ortasına koydum. Yüksek voltajla geçiş yaptığım anda, denetleyiciyi yeniden başlatan ani yükselmeler yaşadım.

Adım 4: Mikrodenetleyiciyi Programlayın

Mikrodenetleyiciyi Programlayın
Mikrodenetleyiciyi Programlayın

Bu talimatlardaki gibi bir arduino kullanarak: https://www.instructables.com/id/How-to-Program-a… kodu yükleyebilirsiniz.

Attiny 45'i programlamak için FTDI-USB kablosu ile profesyonel bir biblo kullandım ancak bu yöntem eşdeğerdir. Daha sonra seri verileri almak ve hata ayıklamak için PB1 ve GDN pinini doğrudan FTDI-USB kablosunun RX ve GND'sine taktım.

Arduino krokisinde tüm parametreleri sıfıra (P=0, I=0, D=0, K=0) koymalısınız. Ayarlama adımı sırasında ayarlanacaktır.

Duman veya yanık kokusu görmüyorsanız, bir sonraki adıma geçebilirsiniz!

Adım 5: Montaj ve Kalibre Etme

Montaj ve Kalibrasyon
Montaj ve Kalibrasyon
Montaj ve Kalibrasyon
Montaj ve Kalibrasyon

Dikkat: Güç kaynağını ve 5V'yi asla aynı anda programlayıcıya bağlamayın! Aksi takdirde, bir önceki adımda aldığım dumanı göreceksiniz. Buna saygı gösterip gösteremeyeceğinizden emin değilseniz, programcının 5v pinini çıkarmanız yeterlidir. Denetleyiciyi güç kaynağı olmadan programlamak ve ısıtıcıyı önümde deli gibi ısıtmadan denetleyiciyi test etmek benim için daha uygun olduğu için izin verdim.

Şimdi termokupl'u amplifikatörde dallandırabilir ve bir şeyi ölçüp ölçmediğinizi görebilirsiniz (polariteye saygı gösterin). Isıtma sisteminiz oda sıcaklığında ise sıfırı ölçmelisiniz. Elle ısıtmak zaten bazı küçük değerlere yol açmalıdır.

Bu değerler nasıl okunur? PB1 ve GDN pinlerini doğrudan FTDI-USB kablosunun RX ve GND'sine takın ve arduino seri monitörünü açın.

Kontrolör başladığında, çipin dahili termometresi tarafından kırmızı değeri gönderir. Sıcaklığı bu şekilde telafi ediyorum (özel bir çip kullanmadan). Bu, çalışma sırasında sıcaklık değişirse, dikkate alınmayacağı anlamına gelir. Bu değer bir çipten diğerine çok farklıdır, bu nedenle çizimin başında REFTEMPERATURE tanımına manuel olarak girilmelidir.

Katı hal rölesini bağlamadan önce, voltaj çıkışının röleniz tarafından desteklenen aralıkta olduğunu doğrulayın (benim durumumda 3V - 25V, devre yaklaşık 11V üretir). (kutuplara saygı gösterin)

Bu değerler derece veya Fahrenhayt cinsinden sıcaklıklar değil, analogdan dijitale dönüşümün sonucudur, bu nedenle 0 ile 1024 arasında değişirler. 5V referans voltajını kullanıyorum, bu nedenle amplifikatör çıkışı 5V'a yakın olduğunda, dönüştürme sonucu 1024'e yakındır.

Adım 6: PID Ayarı

PID Ayarı
PID Ayarı

Bir kontrol uzmanı olmadığımı belirtmeliyim, bu yüzden benim için çalışan bazı parametreler buldum ama herkes için çalıştığını garanti etmiyorum.

Öncelikle programın ne işe yaradığını açıklamam gerekiyor. Bir tür PWM yazılımı uyguladım: her yinelemede 20.000'e ulaşana kadar bir sayaç artırılır (bu durumda 0'a sıfırlanır). Gecikme, döngüyü bir milisaniyeye kadar yavaşlatır. En seçici olanımız, kontrol süresinin 20 saniye civarında olduğunu fark edecektir. Her döngü, sayaç ve eşik arasında bir karşılaştırma ile başlar. Sayaç eşikten düşükse röleyi kapatıyorum. Daha büyükse, açarım. Bu yüzden eşiği ayarlayarak gücü düzenlerim. Eşik hesaplaması her saniye gerçekleşir.

PID denetleyicisi nedir?

Bir işlemi kontrol etmek istediğinizde, ölçtüğünüz değere (analogData), ulaşmak istediğiniz değere (tempCommand) ve bu işlemin durumunu değiştirmenin bir yoluna (seuil) sahipsiniz. Benim durumumda, anahtarın ne kadar süreyle açılıp kapanacağını (görev döngüsü) ve dolayısıyla enerji miktarını belirleyen eşik (fransızca "seuil") ancak yazması ve telaffuz etmesi çok daha kolay ("sey" olarak telaffuz edilir) ile yapılır. sisteme koyun.

Ulaşmak istediğiniz noktadan uzaktaysanız büyük bir düzeltme yapabileceğinizi, yakınsanız küçük bir düzeltmeye ihtiyaç duyulduğu konusunda herkes hemfikirdir. Bu, düzeltmenin hatanın bir işlevi olduğu anlamına gelir (error=analogData-tempComand). Evet ama ne kadar? Diyelim ki hatayı bir faktör (P) ile çarpıyoruz. Bu bir Oransal kontrolördür. Mekanik olarak bir yay orantılı bir düzeltme yapar çünkü yay kuvveti yay sıkıştırmasıyla orantılıdır.

Muhtemelen araba süspansiyonlarınızın bir yay ve bir amortisörden (amortisör) oluştuğunu biliyorsunuzdur. Bu amortisörün rolü, arabanızın bir trambolin gibi geri tepmesini önlemektir. Türev teriminin tam olarak yaptığı şey budur. Sönümleyici olarak, hata değişimiyle orantılı bir tepki oluşturur. Hata hızla değişiyorsa, düzeltme düşürülür. Salınımları ve aşmaları azaltır.

Entegratör terimi kalıcı hatayı önlemek için buradadır (hatayı bütünleştirir). Somut olarak, hatanın pozitif veya negatif olması durumunda artan veya azalan bir sayaçtır. Daha sonra bu sayaca göre düzeltme artırılır veya azaltılır. Mekanik eşdeğerliği yoktur (veya bir fikriniz var mı?). Belki de aracınızı servise getirdiğinizde benzer bir etki vardır ve tamirci amortisörlerin sistematik olarak çok düşük olduğunu fark edip biraz daha ön yük eklemeye karar verir.

Bütün bunlar şu formülde özetlenmiştir: düzeltme=P*e(t)+I*(de(t)/dt)+D*integral(e(t)dt), P, I ve D üç parametredir. ayarlanacak.

Benim versiyonumda, belirli bir sıcaklığı korumak için gereken "a priori" (ileri besleme) komutu olan dördüncü bir terim ekledim. Sıcaklığa orantılı bir komut seçtim (ısıtma kayıplarının iyi bir tahminidir. Radyasyon kayıplarını (T^4) ihmal edersek doğrudur). Bu terim ile entegratör hafifler.

Bu parametreler nasıl bulunur?

"pid tuning sıcaklık kontrolörü" google'da bulabileceğiniz geleneksel bir yöntem denedim ama uygulamakta zorlandım ve kendi yöntemimle sonuçlandım.

benim yöntemim

Önce P, I, D'yi sıfırlayın ve "K" ve "tempCommand" değerlerini küçük değerlere koyun (örneğin K=1 ve tempCommand=100). Sistemi açın ve bekleyin, bekleyin, bekleyin… sıcaklık dengelenene kadar. Bu noktada 1*100=100'lük bir "seuil" ile sıcaklığın X eğiliminde olduğunu biliyorsunuz. Yani biliyorsunuz ki 100/20000=%5 komutuyla X'e ulaşabilirsiniz. Ama amaç 100'e ulaşmak. çünkü "tempCommand". Bir orantı kullanarak 100'e (tempCommand) ulaşmak için K'yi hesaplayabilirsiniz. Önlem olarak hesaplanandan daha küçük bir değer kullandım. Aslında ısıtmak soğutmaktan daha kolaydır. En sonunda

Kfinal=K*tempKomut*0.9/X

Şimdi kontrolörü başlattığınızda, doğal olarak istediğiniz sıcaklığa yönelmelidir, ancak bu gerçekten yavaş bir işlemdir çünkü sadece ısıtma kayıplarını telafi edersiniz. Bir sıcaklıktan diğerine geçmek istiyorsanız, sisteme bir miktar termal enerji eklenmelidir. P, sisteme enerjiyi hangi oranda koyacağınızı belirler. P'yi küçük bir değere ayarlayın (örnek P=10). (Neredeyse) soğuk bir başlangıç deneyin. Eğer büyük bir aşımınız yoksa, ikili (P=20) ile deneyin, eğer şimdi bir tane varsa, arada bir şey deneyin. %5 fazlalık varsa, bu iyidir.

Şimdi, aşmanız kalmayana kadar D'yi artırın. (her zaman denemeler, bunun bilim olmadığını biliyorum) (D=100 aldım)

Ardından I=P^2/(4*D) ekleyin (Ziegler-Nicholts yöntemine dayalıdır, kararlılığı garanti etmelidir)(benim için I=1)

Neden tüm bu denemeler, neden bilim olmasın?

Biliyorum biliyorum! Devasa bir teori var ve transfer fonksiyonunu ve Z dönüşümünü ve blablabla'yı hesaplayabilirsiniz. Üniter bir sıçrama oluşturmak ve ardından 10 dakika boyunca reaksiyonu kaydetmek ve transfer fonksiyonunu yazmak istedim ve sonra ne oldu? 200 terimle aritmetik yapmak istemiyorum. Bu yüzden, birinin bir fikri varsa, bunu nasıl düzgün bir şekilde yapacağımı öğrenmekten mutlu olurum.

En iyi arkadaşlarım Ziegler ve Nichols'ı da düşündüm. Salınım oluşturan bir P bulmamı ve ardından yöntemlerini uygulamamı söylediler. Bu salınımları hiç bulamadım. Bulduğum tek şey gökyüzüne doğru bir oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooshot).

Ve ısıtmanın soğutma ile aynı süreç olmadığı gerçeği nasıl modellenir?

Araştırmama devam edeceğim ama şimdi elde ettiğiniz performanstan memnunsanız kontrol cihazınızı paketleyelim.

Adım 7: Paketleyin

Paketle
Paketle
Paketle
Paketle
Paketle
Paketle
Paketle
Paketle

Moskova fablab'ına (fablab77.ru) ve lazer kesicilerine erişimim vardı ve minnettarım. Bu fırsat, istenilen boyutlarda (h=69 l=66 d=42 mm) kutular yapan bir eklentinin tek tıkla oluşturduğu güzel bir paket yapmamı sağladı. Üstte led ve switch için iki adet delik (çap=5mm), yanlarda ise programlama pinleri için bir adet yarık bulunmaktadır. Transformatörü iki parça tahta ve PCB'yi iki vida ile sabitledim. Terminal bloğunu kablolara ve PCB'ye lehimledim, transformatör ile PCB güç girişi arasındaki anahtarı ekledim, led'i bir dirençle (300 Ohm) seri olarak PBO'ya bağladım. Elektrik yalıtımı için de oje kullandım. Son testten sonra kutuyu yapıştırdım. Bu kadar.

Önerilen: