Агуулгын хүснэгт:

PID температур хянагч: 7 алхам
PID температур хянагч: 7 алхам

Видео: PID температур хянагч: 7 алхам

Видео: PID температур хянагч: 7 алхам
Видео: Объяснение прошивки Marlin 2.0.x 2024, Долдугаар сарын
Anonim
PID температур хянагч
PID температур хянагч

Миний найз хуванцар дахин боловсруулах зориулалттай хуванцар шахагч хийж байна (https://preciousplastic.com). Тэрээр шахалтын температурыг хянах хэрэгтэй. Энэ зорилгоор тэрээр цорго халаагч тууз ашиглаж байна. Энэхүү цорго дотор термопар ба халаалтын төхөөрөмж байдаг бөгөөд энэ нь температурыг хэмжиж, хүссэн температурт хүрэх боломжийг олгодог (ухрах гогцоо хийх).

Түүнд эдгээр бүх хошуу халаагчийн хамтлагийг хянах хэд хэдэн PID хянагч шаардлагатай байгааг сонсоод тэр даруй өөрийн гараар хийхийг хичээх хүсэл төрөв.

Алхам 1: багаж хэрэгсэл, материал

Багаж хэрэгсэл

  • гагнуурын төмөр, гагнуурын утас ба урсгал
  • хясаа
  • тээрэмдэх машин (ПХБ -ийн загварчлалын хувьд химийн аргаар сийлбэр хийх боломжтой) (та ПХБ -ийг миний бүргэд файлаар захиалж болно)
  • термометр (шалгалт тохируулга хийх зориулалттай)
  • arduino (ямар ч төрлийн) эсвэл AVR програмист
  • FTDI серийн TTL-232 USB кабель
  • лазер таслагч (заавал биш)
  • мултиметр (омметр ба вольтметр)

Материал

  • Бакелит нэг талтай зэс хавтан (хамгийн багадаа 60*35 мм) (Би шилэн эдлэл худалдаж авахдаа хөрөө эвдсэн тул болгоомжтой байгаарай: Бакелит)
  • Attiny45 микроконтроллер
  • LM2940IMP-5 хүчдэлийн зохицуулагч
  • AD8605 үйлдлийн өсгөгч
  • NDS356AP транзистор
  • олон резистор ба конденсатор (надад SMT 0603 adafruit ном бий)
  • 230V-9V AC-DC трансформатор
  • 1N4004 диод
  • хатуу төлөвт реле
  • хумсны будаг (заавал биш)

Алхам 2: ПХБ -ийг зүсэх

ПХБ -ийг сийлнэ
ПХБ -ийг сийлнэ
ПХБ -ийг сийлнэ
ПХБ -ийг сийлнэ
ПХБ -ийг сийлнэ
ПХБ -ийг сийлнэ

Би ПХБ -ийг тээрэмдэхийн тулд Proxxon MF70 CNC хувиргасан ба конус хэлбэрийн төгсгөлийг ашигласан. Аливаа сийлбэрийн төгсгөл нь ажиллах болно гэж би бодож байна. Gcode файлыг eagle болон pcb-gcode залгаасаар шууд үүсгэсэн. Замыг сайн салгахын тулд зөвхөн гурван дамжуулалтыг хийсэн боловч бүх зэсийг тээрэмдэхэд цаг зарцуулалгүйгээр. ПХБ нь CNC машинаас гарах үед би маршрутуудыг таслагчаар цэвэрлэж, мултиметрээр туршиж үзсэн.

Параметр: тэжээлийн хурд 150 мм/мин, гүн 0.2 мм, эргэлтийн хурд 20'000 т/мин

Алхам 3: Бүрэлдэхүүн хэсгүүдийг гагнах

Бүрэлдэхүүн хэсгүүдийг гагнах
Бүрэлдэхүүн хэсгүүдийг гагнах

Хясаа, гагнуурын төмрийг ашиглан бүрэлдэхүүн хэсгүүдийг зөв газарт нь байрлуулж, урсгалыг ашиглан гагнана (энэ нь тусалдаг), хамгийн жижиг хэсгүүдээс эхэлнэ. Дахин хэлэхэд мультиметрээр богино холболт, холбоогүй элемент байхгүй эсэхийг шалгаарай.

Та хүссэн резистороо сонгосноор өсгөгчийн ашиглалтыг сонгож болно (олз = (R3+R4)/R4). Би 1M ба 2.7k авсан тул миний хувьд ашиг нь ойролцоогоор 371 -тэй тэнцүү байна. Би 5% -ийн хүлцэл эсэргүүцэл ашиглаж байгаа учраас яг утгыг нь хэлж мэдэхгүй байна.

Миний термопар бол J төрөл юм. Энэ нь градус бүрт 0.05 мВ өгдөг гэсэн үг юм. 371 -ийн ашиг авснаар би өсгөгчийн гаралтаас нэг градус тутамд 18.5мВ авдаг (0.05*371). Би 200 ° C орчим хэмжихийг хүсч байгаа тул өсгөгчийн гаралт 3.7V (0.0185*200) орчим байх ёстой. Би 5V лавлах хүчдэл (гадаад) ашигладаг тул үр дүн нь 5V -ээс хэтрэхгүй байх ёстой.

Зураг нь миний хийсэн анхны (ажиллахгүй) хувилбартай тохирч байгаа боловч зарчим ижил байна. Энэ анхны хувилбарт би буухиа ашиглаж, самбарын яг голд тавьсан. Би өндөр хүчдэлээр солигдсон даруйдаа хянагчийг дахин ачаалахад хүргэсэн.

Алхам 4: Микроконтроллерыг програмчилна уу

Микроконтроллерыг програмчлах
Микроконтроллерыг програмчлах

Дараах зааварчилгааны дагуу arduino ашиглан: https://www.instructables.com/id/How-to-Program-a… та кодыг ачаалж болно.

Би Attiny 45-ийг програмчлахдаа FTDI-USB кабель бүхий протикет ашигласан боловч энэ арга нь тэнцүү юм. Дараа нь би PB1 ба GDN зүүг FTDI-USB кабелийн RX ба GND руу шууд холбож, цуваа өгөгдлийг хүлээн авч, дибаг хийх боломжтой болсон.

Та arduino ноорог дээр бүх параметрүүдийг тэг болгох ёстой (P = 0, I = 0, D = 0, K = 0). Тохируулах үе шатанд тэдгээрийг тохируулах болно.

Хэрэв та утаа, шатсан үнэр харахгүй бол дараагийн алхам руу үсрэх боломжтой!

Алхам 5: Угсрах, тохируулах

Угсрах, тохируулах
Угсрах, тохируулах
Угсрах, тохируулах
Угсрах, тохируулах

Анхааруулга: Цахилгаан хангамж ба 5В -ийг програмистаас хэзээ ч бүү залгаарай! Үгүй бол өмнөх алхам дээр миний утааг олж харах болно. Хэрэв та үүнийг хүндэтгэж чадахгүй байгаа бол програмистын 5V зүүг зүгээр л арилгаж болно. Нүүрний өмнө галзуу юм шиг халаагч халаахгүйгээр хянагчийг цахилгаан хангамжгүйгээр програмчлах, хянагчийг турших нь надад илүү тохиромжтой байсан тул би үүнийг зөвшөөрсөн.

Одоо та өсгөгч дээрх термопарыг салаалж, ямар нэгэн зүйлийг хэмжиж байгаа эсэхийг харах боломжтой (туйлыг хүндэтгэх). Хэрэв таны халаалтын систем өрөөний температурт байвал тэгийг хэмжих хэрэгтэй. Үүнийг гараар халаах нь зарим жижиг утгыг бий болгох ёстой.

Эдгээр утгыг хэрхэн унших вэ? PB1 ба GDN тээглүүрийг FTDI-USB кабелийн RX ба GND руу шууд залгаад arduino цуваа дэлгэцийг нээнэ үү.

Хянагч ажиллаж эхлэх үед чипийн дотоод термометрээр улаан утгыг илгээдэг. Би температурыг ингэж нөхдөг (тусгай чип ашиглахгүйгээр). Хэрэв үйл ажиллагааны явцад температур өөрчлөгдвөл үүнийг тооцохгүй болно гэсэн үг юм. Энэ утга нь нэг чипээс нөгөөдөхөөс эрс ялгаатай тул ноорог хэсгийн эхэнд REFTEMPERATURE тодорхойлолтонд гараар оруулах ёстой.

Хатуу төлөв релейг холбохын өмнө хүчдэлийн гаралт таны реле дэмждэг хязгаарт байгаа эсэхийг шалгаарай (миний хувьд 3V -аас 25V хүртэл, хэлхээ нь ойролцоогоор 11V үүсгэдэг). (туйлыг хүндэтгэх)

Эдгээр утгууд нь градус эсвэл Фаренгейтийн температур биш, харин аналоги тоон хөрвүүлэлтийн үр дүн бөгөөд тэдгээр нь 0 -ээс 1024 хооронд хэлбэлздэг. Би 5V жишиг хүчдэлийг ашигладаг тул өсгөгчийн гаралт 5В -ийн ойролцоо байх үед хөрвүүлэлтийн үр дүн 1024 -ийн ойролцоо байна.

Алхам 6: PID тааруулах

PID тааруулах
PID тааруулах

Би хяналтын мэргэжилтэн биш гэдгээ хэлэх ёстой, тиймээс надад тохирсон зарим параметрүүдийг олсон боловч энэ нь хүн бүрт тохирсон гэсэн баталгаа өгөхгүй байна.

Юуны өмнө би энэ програм юу хийж байгааг тайлбарлах ёстой. Би нэг төрлийн PWM програм хангамжийг нэвтрүүлсэн: тоолуурыг давталт бүрт 20'000 хүрэх хүртэл нэмэгдүүлдэг (энэ тохиолдолд 0 болгож тохируулна). Саатал нь давталтыг миллисекунд хүртэл удаашруулдаг. Бидний хамгийн ухамсартай хүн хяналтын хугацаа 20 секунд орчим байгааг анзаарах болно. Гогцоо бүр тоолуур ба босгыг харьцуулж эхэлдэг. Хэрэв тоолуур босго хэмжээнээс доогуур байвал би реле унтраадаг. Хэрэв илүү том бол би асаадаг. Тиймээс би босгыг тогтоох замаар хүчийг зохицуулдаг. Босго тооцоог секунд тутамд хийдэг.

PID хянагч гэж юу вэ?

Хэрэв та процессыг хянахыг хүсч байвал хэмжих утга (analogData), хүрэхийг хүсч буй утга (tempCommand) болон тухайн үйл явцын төлөвийг өөрчлөх арга (seuil) танд байх болно. Миний хувьд энэ нь босго (франц хэл дээрх "seuil" гэсэн утгатай боловч бичих, дуудахад илүү хялбар байдаг ("sey" гэж дуудна)) бөгөөд энэ нь унтраалга хэр удаан унтрах (ажлын мөчлөг) болохыг тодорхойлдог тул энергийн хэмжээг тодорхойлдог. системд оруулах.

Хэрэв та хүрэхийг хүсч буй цэгээсээ хол байгаа бол том залруулга хийж, ойрхон байвал жижиг залруулга хийх хэрэгтэй гэдэгтэй хүн бүхэн санал нэгддэг. Энэ нь залруулга нь алдааны функц гэсэн үг юм (алдаа = analogData-tempComand). Тийм ээ, гэхдээ хэр их вэ? Алдааг хүчин зүйлээр (P) үржүүллээ гэж бодъё. Энэ бол пропорциональ хянагч юм. Пүршний хүч нь хаврын шахалттай пропорциональ байдаг тул механикаар пүрш пропорциональ залруулга хийдэг.

Таны машины түдгэлзүүлэлт нь хавар, хаалт (амортизатор) -оос бүрддэг гэдгийг та мэдэх байх. Энэхүү хаалтны үүрэг бол таны машиныг трамплин шиг эргэхээс урьдчилан сэргийлэх явдал юм. Энэ нь үүсмэл нэр томъёог яг хийдэг зүйл юм. Сааруулагчийн хувьд энэ нь алдааны өөрчлөлттэй пропорциональ урвал үүсгэдэг. Хэрэв алдаа хурдан өөрчлөгдөж байвал залруулга буурна. Энэ нь хэлбэлзэл, хэт халалтыг бууруулдаг.

Интеграторын нэр томъёо нь байнгын алдаанаас зайлсхийхийн тулд энд байна (энэ нь алдааг нэгтгэдэг). Тодруулбал, энэ алдаа нь эерэг эсвэл сөрөг байвал нэмэгдэх эсвэл буурах тоолуур юм. Дараа нь энэ тоолуурын дагуу залруулгыг нэмэгдүүлэх буюу бууруулах болно. Энэ нь механик эквивалентгүй (эсвэл танд санаа байна уу?). Магадгүй та машинаа үйлчилгээнд авчрах үед чичиргээ системтэйгээр хэт доогуур байгааг механикч анзаарч, өмнөх ачааллыг нэмж өгөхөөр шийдсэн бол үүнтэй ижил нөлөө үзүүлж магадгүй юм.

Энэ бүгдийг томъёогоор томъёолсон болно: залруулга = P*e (t)+I*(de (t)/dt)+D*интеграл (e (t) dt), P, I ба D нь гурван параметртэй байна. тааруулах.

Миний хувилбарт би дөрөв дэх нэр томъёог нэмж оруулсан бөгөөд энэ нь тодорхой температурыг хадгалахад шаардлагатай "априори" (урагш дамжуулах) команд юм. Би температуртай пропорциональ командыг сонгосон (энэ нь халаалтын алдагдлын ойролцоо утга юм. Хэрэв бид цацрагийн алдагдлыг үл тоомсорловол үнэн болно (T^4)). Энэ нэр томъёогоор интеграторыг хөнгөвчилдөг.

Эдгээр параметрүүдийг хэрхэн олох вэ?

Би "pid tuning температур хянагч" -ыг хайж олох боломжтой ердийн аргыг туршиж үзсэн боловч үүнийг хэрэгжүүлэхэд хэцүү болж, өөрийн арга барилаа олж авлаа.

Миний арга

Эхлээд P, I, D -ийг тэг болгож "K" ба "tempCommand" -ыг жижиг утгуудад тавь (жишээлбэл K = 1 ба tempCommand = 100). Системийг асаагаад температур тогтворжих хүртэл хүлээ, хүлээ, хүлээ … Энэ үед та 1*100 = 100 "seuil" -тай бол температур нь X -тэй байдаг гэдгийг мэдэж байгаа. Тиймээс 100/20000 = 5% -ийн тушаалаар та X -д хүрч чадна гэдгийг мэдэж байгаа. Гэхдээ зорилго бол 100 -д хүрэх явдал юм. Учир нь энэ нь "tempCommand" юм. Пропорцийг ашиглан 100 -д хүрэхийн тулд K -ийг тооцоолж болно (tempCommand). Урьдчилан сэргийлэх зорилгоор би тооцоолсон хэмжээнээс бага утгыг ашигласан. Үнэндээ хөргөхөөс илүү халаах нь илүү хялбар байдаг. Тиймээс эцэст нь

Kfinal = K*tempCommand*0.9/X

Одоо та хянагчийг асаахад энэ нь таны хүссэн температурт нийцэх ёстой, гэхдээ энэ нь үнэхээр удаан процесс юм, учир нь та зөвхөн халаалтын алдагдлыг нөхдөг. Хэрэв та нэг температураас нөгөө температурт шилжихийг хүсч байвал системд дулааны энергийн хэмжээг нэмэх шаардлагатай болно. P нь таны энергийг системд оруулах хурдыг тодорхойлдог. P -ийг бага утга болгон тохируулна уу (жишээ нь P = 10). (Бараг) хүйтэн эхлэлийг туршиж үзээрэй. Хэрэв танд том даваа байхгүй бол хоёр удаа (P = 20) туршиж үзээрэй. Хэрэв танд 5% -ийн хэт давалт байгаа бол сайн.

Одоо D -ийг хэтрүүлэлгүйгээр нэмэгдүүлэх. (үргэлж туршилт хийдэг, энэ бол шинжлэх ухаан биш гэдгийг би мэднэ) (Би D = 100 авсан)

Дараа нь I = P^2/(4*D) нэмнэ (Энэ нь Зиглер-Никольцын арга дээр суурилсан бөгөөд тогтвортой байдлыг баталгаажуулдаг) (миний хувьд I = 1)

Яагаад эдгээр бүх сорилтууд, яагаад шинжлэх ухаан болохгүй гэж?

Мэдэж байна … Мэдэж байна! Асар том онол байдаг бөгөөд та дамжуулах функц болон Z хувиргалт ба blablabla -ийг тооцоолж болно. Би нэгдмэл үсрэлт үүсгэж, дараа нь 10 минутын турш урвалыг бичиж, дамжуулах функцийг бичээд дараа нь яах вэ? Би 200 нэр томъёогоор арифметик хийхийг хүсэхгүй байна. Тиймээс хэрэв хэн нэгэн санаа байвал би үүнийг хэрхэн зөв хийхийг сурахад баяртай байх болно.

Би бас хамгийн сайн найзууд болох Зиглер, Николс хоёрын талаар бодсон. Тэд надад хэлбэлзэл үүсгэдэг P олж, дараа нь тэдний аргыг ашиглахыг хэлсэн. Би эдгээр хэлбэлзлийг хэзээ ч олж байгаагүй. Надад олдсон цорын ганц зүйл бол тэнгэр рүү харсан oooooooovershoot юм.

Мөн халаалт нь хөргөхтэй ижил үйл явц биш гэдгийг хэрхэн загварчлах вэ?

Би судалгааг үргэлжлүүлэх болно, гэхдээ хэрэв та олж авсан гүйцэтгэлдээ сэтгэл хангалуун байгаа бол одоо хянагчаа багцалж үзье.

Алхам 7: Баглаа боодол

Үүнийг боох
Үүнийг боох
Үүнийг боох
Үүнийг боох
Үүнийг боох
Үүнийг боох
Үүнийг боох
Үүнийг боох

Би Москвагийн fablab (fablab77.ru) болон тэдний лазер таслагч руу нэвтрэх боломжтой байсан бөгөөд би талархаж байна. Энэ боломж нь хүссэн хэмжээ (h = 69 l = 66 d = 42 мм) хайрцаг хийдэг залгаасыг нэг товшилтоор бүтээсэн сайхан багц хийх боломжийг надад олгосон юм. Дээд талд залгуур ба унтраалгын хоёр нүх (диаметр = 5мм), програмчлалын голын хажуу талд нэг ангархай байна. Би трансформаторыг хоёр ширхэг модоор, ПХБ -ийг хоёр боолтоор бэхэлсэн. Би терминал блокыг утас болон ПХБ -д гагнах, трансформатор ба ПХБ -ийн тэжээлийн оролтын хоорондох залгуурыг нэмж, PBO руу резистор (300 Ом) цувралаар холбосон. Би бас цахилгаан тусгаарлагч хумсны будаг хэрэглэдэг байсан. Сүүлийн туршилтын дараа би хайрцгийг нааж өгсөн. Ингээд л болоо.

Зөвлөмж болгож буй: