Mundarija:

PID haroratni boshqaruvchi: 7 qadam
PID haroratni boshqaruvchi: 7 qadam

Video: PID haroratni boshqaruvchi: 7 qadam

Video: PID haroratni boshqaruvchi: 7 qadam
Video: 偷换概念胡叼盘绑架九千万党员掩护一小撮当权派堂食不开户外餐饮天热恶臭街道肮脏老鼠脚下跑 Hu steals concept and kidnapped 90 million party members 2024, Noyabr
Anonim
PID haroratni nazorat qilish moslamasi
PID haroratni nazorat qilish moslamasi

Do'stim plastikni qayta ishlash uchun plastik ekstruder qurmoqda (https://preciousplastic.com). U ekstruziya haroratini boshqarishi kerak. Shu maqsadda u burunli isitgich tasmasini ishlatadi. Bu ko'krak qafasida termojuft va isitish moslamasi bor, bu bizga haroratni o'lchash va nihoyat kerakli haroratga yetish imkonini beradi (orqaga qaytarish pastadirini yasang).

Men eshitganimda, u bir nechta PID -kontrollerlar tomonidan barcha nozulli isitgich tasmalarini boshqarishi kerak edi, bu menga o'zimnikini yasashga bo'lgan xohishni berdi.

1 -qadam: asboblar va materiallar

Asboblar

  • lehimleme temir, lehim tel va oqim
  • cımbız
  • frezalash mashinasi (PCB prototipini kimyoviy ishlov berish ham mumkin) (siz ham burgut faylim bilan tenglikni buyurtma qilishingiz mumkin)
  • termometr (kalibrlash uchun)
  • arduino (har qanday turdagi) yoki AVR dasturchisi
  • FTDI seriyali TTL-232 USB kabeli
  • lazer to'sar (ixtiyoriy)
  • multimetr (ohmmetr va voltmetr)

Material

  • Bakelit bir tomonlama mis plastinka (minimal 60*35 mm) (men shisha tolali oynani sotib olgan arraimni vayron qildim, shuning uchun ehtiyot bo'ling: bakelit)
  • Attiny45 mikrokontroller
  • LM2940IMP-5 kuchlanish regulyatori
  • AD8605 operatsion kuchaytirgichi
  • NDS356AP tranzistorli
  • bir nechta rezistorlar va kondansatörler (menda SMT 0603 adafruit kitobi bor)
  • 230V-9V AC-DC transformator
  • 1N4004 diodlari
  • qattiq hol o'rni
  • lak (ixtiyoriy)

2 -qadam: tenglikni tenglashtirish

PCBni kesib oling
PCBni kesib oling
PCBni kesib oling
PCBni kesib oling
PCBni kesib oling
PCBni kesib oling

Men PCB -ni frezalash uchun Proxxon MF70 CNC konvertatsiyalangan konusli uchidan foydalanardim. O'ylaymanki, har qanday o'yma uchi ishlaydi. Gcode fayli to'g'ridan-to'g'ri burgut va pcb-gcode plaginlari tomonidan yaratilgan. Marshrutni yaxshi ajratish uchun faqat uchta o'tish amalga oshiriladi, lekin barcha misni maydalash uchun soatlab sarflamasdan. PCB CNC mashinasidan chiqib ketganda, men marshrutlarni to'sar bilan tozalab, ularni multimetr bilan sinab ko'rdim.

Parametrlar: tezligi 150 mm/min, chuqurligi 0,2 mm, aylanish tezligi 20'000 t/min

3 -qadam: Komponentlarni lehimlang

Komponentlarni lehimlang
Komponentlarni lehimlang

Cımbız va lehim temir bilan, komponentlarni kerakli joylarga joylashtiring va oqim yordamida lehimlang (bu yordam beradi) va eng kichik qismlardan boshlanadi. Yana, multimetr bilan tekshiring, sizda qisqa tutashuv yoki ulanmagan elementlar yo'q.

Siz xohlagan qarshilikni tanlash orqali kuchaytirgichning daromadini tanlashingiz mumkin (daromad = (R3+R4)/R4). Men 1M va 2,7k ni oldim, shuning uchun mening daromadim taxminan 371 ga teng. Men aniq qiymatni bilmayman, chunki men 5% bardoshlik qarshiligini ishlataman.

Mening termojuftim J turiga kiradi. Bu shuni anglatadiki, u har bir daraja uchun 0,05 mV beradi. 371 daromad bilan, men kuchaytirgich chiqishidan (0,05*371) 18,5 mV daraja olaman. Men 200 ° C atrofida o'lchashni xohlayman, shuning uchun kuchaytirgich chiqishi 3,7V (0,0185*200) atrofida bo'lishi kerak. Natijada 5V dan oshmasligi kerak, chunki men 5V mos yozuvlar kuchlanishini (tashqi) ishlataman.

Rasm men qilgan birinchi (ishlamayotgan) versiyaga to'g'ri keladi, lekin printsip bir xil. Bu birinchi versiyada men o'z o'rni ishlatdim va uni taxtaning o'rtasiga qo'ydim. Men yuqori kuchlanish bilan almashganimdan so'ng, menda tekshirgichni qayta ishga tushirgan pog'onalar paydo bo'ldi.

4 -qadam: Mikrokontrollerni dasturlash

Mikrokontrollerni dasturlash
Mikrokontrollerni dasturlash

Arduino-dan foydalanib, bu ko'rsatmalarni bajaring: https://www.instructables.com/id/How-to-Program-a… siz kodni yuklashingiz mumkin.

Men Attiny 45-ni dasturlash uchun FTDI-USB kabelli pro-trinketdan foydalanardim, lekin bu usul tengdir. Men ketma-ket ma'lumotlarni olish va disk raskadrovka qilish uchun PB1 va GDN pinlarini to'g'ridan-to'g'ri FTDI-USB kabelining RX va GND ga uladim.

Arduino eskizida barcha parametrlarni nolga qo'yish kerak (P = 0, I = 0, D = 0, K = 0). Ular sozlash bosqichida o'rnatiladi.

Agar siz tutun yoki kuygan hidni ko'rmasangiz, keyingi bosqichga o'tishingiz mumkin!

5 -qadam: yig'ish va kalibrlash

O'rnatish va kalibrlash
O'rnatish va kalibrlash
O'rnatish va kalibrlash
O'rnatish va kalibrlash

E'tibor bering: Hech qachon dasturchining quvvat manbai va 5Vni bir vaqtning o'zida ulamang! Aks holda, oldingi qadamda men tutayotgan tutunni ko'rasiz. Agar siz buni hurmat qila olmasligingizga amin bo'lsangiz, dasturchi uchun 5v pinni olib tashlashingiz mumkin. Men bunga ruxsat berdim, chunki men nazorat qilgichni quvvat manbai bo'lmagan holda dasturlash va isitgichni isitgichsiz isitishni yuzim oldida sinab ko'rish men uchun qulayroq edi.

Endi siz termojuftni kuchaytirgichga ulashingiz va biror narsani o'lchayotganingizni ko'rishingiz mumkin (qutbni hurmat qiling). Agar isitish tizimi xona haroratida bo'lsa, siz nolni o'lchashingiz kerak. Qo'l bilan isitish allaqachon kichik qiymatlarga olib kelishi kerak.

Bu qadriyatlarni qanday o'qish kerak? PB1 va GDN pinlarini to'g'ridan-to'g'ri FTDI-USB kabelining RX va GND ga ulang va arduino seriyali monitorini oching.

Tekshirgich ishga tushganda, u chipning ichki termometridan qizil rangni yuboradi. Men haroratni shunday to'ldiraman (maxsus chip ishlatmasdan). Bu shuni anglatadiki, agar ish paytida harorat o'zgarsa, u hisobga olinmaydi. Bu qiymat bir chipdan boshqasiga juda farq qiladi, shuning uchun uni eskiz boshida REFTEMPERATURE ta'rifiga qo'lda kiritish kerak.

Qattiq hol rölesini ulashdan oldin, kuchlanish chiqishi o'z o'rni tomonidan qo'llab -quvvatlanadigan diapazonda ekanligini tekshiring (mening holatimda 3V dan 25V gacha, zanjir 11V atrofida hosil qiladi). (qutbni hurmat qiling)

Bu qiymatlar daraja yoki Farengeytdagi harorat emas, balki analogdan raqamli konvertatsiyaning natijasidir, shuning uchun ular 0 dan 1024 gacha o'zgarib turadi. Men 5V mos yozuvlar kuchlanishidan foydalanaman, shuning uchun kuchaytirgichning chiqishi 5V ga yaqin bo'lsa, konvertatsiya natijasi 1024 ga yaqin bo'ladi.

6 -qadam: PID -ni sozlash

PID sozlash
PID sozlash

Shuni aytib o'tishim kerakki, men nazorat mutaxassisi emasman, shuning uchun men o'zim uchun ishlaydigan ba'zi parametrlarni topdim, lekin bu hamma uchun ishlashiga kafolat bermayman.

Birinchidan, men dastur nima ekanligini tushuntirishim kerak. Men bir xil PWM dasturini qo'lladim: hisoblagich har bir iteratsiyada 20'000 ga yetguncha ko'paytiriladi (bu holda 0 ga qaytariladi). Kechikish tsiklni millisekundgacha pasaytiradi. Bizning eng aqlli odamimiz, nazorat qilish davri 20 soniya atrofida ekanligini payqaydi. Har bir tsikl hisoblagich va ostonani taqqoslashdan boshlanadi. Agar hisoblagich ostonadan past bo'lsa, men o'rni o'chiraman. Agar kattaroq bo'lsa, men uni yoqaman. Shunday qilib, men chegarani belgilash orqali quvvatni tartibga solaman. Chegarani hisoblash har soniyada amalga oshiriladi.

PID tekshiruvi nima?

Agar siz jarayonni boshqarishni xohlasangiz, siz o'lchagan qiymatga ega bo'lasiz (analogData), siz erishmoqchi bo'lgan qiymat (tempCommand) va bu jarayonning holatini o'zgartirish usuli (seuil). Mening holatimda, bu chegara bilan (frantsuzcha "seuil", lekin yozish va talaffuz qilish ancha osonroq ("sey" talaffuzi)) amalga oshiriladi, bu esa kalit qancha vaqt yoqilishini va o'chishini (ish tsikli) va shuning uchun energiya miqdorini aniqlaydi. tizimga qo'ying.

Hamma rozi bo'ladi, agar siz xohlagan nuqtadan uzoqda bo'lsangiz, siz katta tuzatish kiritishingiz mumkin va agar yaqin bo'lsangiz, kichik tuzatish kerak. Bu shuni anglatadiki, tuzatish xatoning funktsiyasi (xato = analogData-tempComand). Ha, lekin qancha? Aytaylik, xatoni faktor (P) ga ko'paytiramiz. Bu mutanosib nazoratchi. Mexanik ravishda buloq proportsional tuzatishni amalga oshiradi, chunki bahor kuchi bahor siqilishiga proportsionaldir.

Ehtimol, siz bilasizki, sizning avtomobil süspansiyonlarınız bahor va damperdan (amortizator) iborat. Bu amortizatorning vazifasi - bu sizning mashinangizning trambolin kabi qaytishiga yo'l qo'ymaslik. Tug'ma atama aynan shunday qiladi. Damper sifatida, u xato o'zgarishiga mutanosib bo'lgan reaktsiya hosil qiladi. Agar xato tez o'zgarsa, tuzatish kamayadi. Bu tebranishlar va ortiqcha zarbalarni kamaytiradi.

Integrator atamasi doimiy xatolikka yo'l qo'ymaslik uchun shu erda (u xatoni birlashtiradi). Aniq qilib aytganda, bu xato ijobiy yoki manfiy bo'lsa, ko'paytiriladigan yoki kamaytiriladigan hisoblagich. Keyin tuzatish ushbu hisoblagichga muvofiq oshiriladi yoki kamayadi. Uning mexanik ekvivalentligi yo'q (yoki sizda fikr bormi?). Ehtimol, siz mashinangizni xizmatga olib borganingizda va mexanik zarbalar tizimli ravishda juda past ekanligini sezib, qo'shimcha yukni qo'shishga qaror qilganingizda ham shunday ta'sir bo'lishi mumkin.

Bularning barchasi formulada umumlashtiriladi: tuzatish = P*e (t)+I*(de (t)/dt)+D*integral (e (t) dt), P, I va D uchta parametrga ega sozlanishi.

Mening versiyamga ma'lum bir haroratni saqlash uchun zarur bo'lgan "apriori" (oldinga yo'naltirish) buyrug'i bo'lgan to'rtinchi atama qo'shildi. Men haroratga mutanosib buyruqni tanladim (bu isitish yo'qotishlarining yaxshi taxminidir. Agar radiatsion yo'qotishlarni e'tiborsiz qoldirsak, bu to'g'ri (T^4)). Bu atama bilan integrator yengillashadi.

Bu parametrlarni qanday topish mumkin?

Men "pid tuning harorati sozlagichi" yordamida topishingiz mumkin bo'lgan an'anaviy usulni sinab ko'rdim, lekin uni qo'llash qiyin kechdi va o'z uslubim bilan tugadi.

Mening uslubim

Avval P, I, D ni nolga qo'ying va "K" va "tempCommand" ni kichik qiymatlarga qo'ying (masalan, K = 1 va tempCommand = 100). Tizimni yoqing va kuting, kuting, kuting … harorat barqarorlashguncha. Siz bilasizki, 1*100 = 100 "seuil" bilan harorat X ga to'g'ri keladi, shuning uchun bilasizki, 100/20000 = 5% buyrug'i bilan X ga erishish mumkin. Lekin maqsad 100 ga erishish. chunki bu "tempCommand". Proportion yordamida siz 100 ga erishish uchun K ni hisoblashingiz mumkin (tempCommand). Ehtiyotkorlik bilan men hisoblanganidan kichikroq qiymatdan foydalandim. Darhaqiqat, sovutishdan ko'ra ko'proq isitish osonroq. Shunday qilib, nihoyat

Kfinal = K*tempCommand*0.9/X

Endi siz tekshirgichni ishga tushirganingizda, bu tabiiy ravishda siz xohlagan haroratga mos kelishi kerak, lekin bu juda sekin jarayon, chunki siz faqat isitish yo'qotilishini qoplaysiz. Agar siz bir haroratdan boshqasiga o'tishni xohlasangiz, tizimga ko'p miqdorda issiqlik energiyasi qo'shilishi kerak. P siz tizimga energiyani qaysi tezlikda kiritishingizni aniqlaydi. P ni kichik qiymatga o'rnating (masalan, P = 10). (Deyarli) sovuq boshlang. Agar sizda katta natija bo'lmasa, dubl bilan harakat qilib ko'ring (P = 20), agar hozir sizda bitta narsa bo'lsa, o'rtada. Agar 5% ortiqcha bo'lsa, yaxshi.

Endi D -ni oshirib yubormang. (har doim sinovlar, men bu fan emasligini bilaman) (men D = 100 ni oldim)

Keyin I = P^2/(4*D) qo'shing (Ziegler-Nicholts usuliga asoslangan, u barqarorlikni kafolatlashi kerak) (men uchun I = 1)

Nega bu barcha sinovlar, nega ilm emas?

Bilaman … bilaman! Katta nazariya mavjud va siz uzatish funktsiyasini va Z konvertatsiyasini va blablablasini hisoblashingiz mumkin. Men birlamchi sakrashni yaratmoqchi edim, keyin 10 minut davomida reaktsiyani yozib, uzatish funktsiyasini yozmoqchi edim, keyin nima? Men 200 ta atama bilan arifmetikani qilishni xohlamayman. Agar kimdir fikrga ega bo'lsa, men buni qanday qilib to'g'ri qilishni o'rganishdan xursand bo'lardim.

Men eng yaqin do'stlarim Zigler va Nikols bilan ham o'yladim. Ular menga tebranishlarni hosil qiladigan P ni topib, keyin o'z usullarini qo'llashimni aytishdi. Men hech qachon bu tebranishlarni topmaganman. Men topgan yagona narsa osmonga oooooooovershoot edi.

Va isitishning sovutish bilan bir xil emasligini qanday modellashtirish mumkin?

Men izlanishlarimni davom ettiraman, lekin hozir siz olgan ko'rsatkichdan mamnun bo'lsangiz, nazoratchini yig'amiz.

7 -qadam: uni to'plang

Paket qiling
Paket qiling
Paket qiling
Paket qiling
Paket qiling
Paket qiling
Paket qiling
Paket qiling

Menda Moskva fablab (fablab77.ru) va ularning lazer kesgichi bor edi va men minnatdorman. Bu imkoniyat menga kerakli o'lchamdagi qutilarni (h = 69 l = 66 d = 42 mm) yaratadigan plagin yordamida bir marta bosish orqali yaratilgan yaxshi paketni yaratishga imkon berdi. Led va kalit uchun tepada ikkita teshik (diametri = 5 mm) va dasturlash pinlari uchun yon tomonda bitta teshik bor. Men transformatorni ikkita yog'och bo'lagi va PCBni ikkita vint bilan mahkamladim. Men terminal blokini simlarga va tenglikka lehimladim, transformator va tenglikni quvvat manbai orasidagi kalitni qo'shdim, PBO ga qarshilik (300 Ohm) ketma -ket ulanganman. Bundan tashqari, elektr izolyatsiyasi uchun lak ishlatardim. Oxirgi sinovdan so'ng, men qutini yopishtirdim. Bo'ldi shu.

Tavsiya: