Სარჩევი:

PID ტემპერატურის კონტროლერი: 7 ნაბიჯი
PID ტემპერატურის კონტროლერი: 7 ნაბიჯი

ვიდეო: PID ტემპერატურის კონტროლერი: 7 ნაბიჯი

ვიდეო: PID ტემპერატურის კონტროლერი: 7 ნაბიჯი
ვიდეო: SKR Pro v1.x - Klipper install 2024, მაისი
Anonim
PID ტემპერატურის კონტროლერი
PID ტემპერატურის კონტროლერი

ჩემი მეგობარი აშენებს პლასტმასის ექსტრუდერს პლასტმასის გადამუშავებისთვის (https://preciousplastic.com). მან უნდა გააკონტროლოს ექსტრუზიის ტემპერატურა. ამ მიზნით ის იყენებს საქშენ გამათბობელს. ამ საქშენში არის თერმოწყვილი და გამათბობელი, რომელიც საშუალებას გვაძლევს გავზომოთ ტემპერატურა და საბოლოოდ მივაღწიოთ სასურველ ტემპერატურას (გავაკეთოთ უკუკავშირის მარყუჟი).

როდესაც გავიგე, რომ მას სჭირდებოდა რამდენიმე PID კონტროლერი, რომ გააკონტროლონ ამ საქშენების გამათბობელი შემსრულებლები, მაშინვე მომეცა სურვილი, შევეცადე საკუთარი ხელით გაგვეკეთებინა.

ნაბიჯი 1: ინსტრუმენტები და მასალა

ინსტრუმენტები

  • soldering რკინის, solder მავთული და ნაკადი
  • პინცეტი
  • საღარავი მანქანა (ქიმიური დამუშავება ასევე შესაძლებელია PCB პროტოტიპისთვის) (ასევე შეგიძლიათ შეუკვეთოთ PCB ჩემი არწივის ფაილით)
  • თერმომეტრი (დაკალიბრებისთვის)
  • arduino (ნებისმიერი ტიპის) ან AVR პროგრამისტი
  • FTDI სერიული TTL-232 USB კაბელი
  • ლაზერული საჭრელი (სურვილისამებრ)
  • მულტიმეტრი (ოჰმეტრი და ვოლტმეტრი)

მასალა

  • ბაკელიტის ცალ მხარეს სპილენძის ფირფიტა (მინიმუმ 60*35 მმ) (მე გავანადგურე ჩემი ხერხი ბოჭკოვანი მინის ყიდვისას, ასე რომ ფრთხილად იყავით: ბაკელიტი)
  • Attiny45 მიკროკონტროლი
  • LM2940IMP-5 ძაბვის რეგულატორი
  • AD8605 ოპერატიული გამაძლიერებელი
  • NDS356AP ტრანზისტორი
  • რამოდენიმე წინააღმდეგობა და კონდენსატორი (მე მაქვს SMT 0603 adafruit წიგნი)
  • 230V-9V AC-DC ტრანსფორმატორი
  • დიოდები 1N4004
  • მყარი მდგომარეობის რელე
  • ფრჩხილის ლაქი (სურვილისამებრ)

ნაბიჯი 2: ჩაწერეთ PCB

ჩაწერეთ PCB
ჩაწერეთ PCB
ჩაწერეთ PCB
ჩაწერეთ PCB
ჩაწერეთ PCB
ჩაწერეთ PCB

მე გამოვიყენე ჩემი Proxxon MF70 CNC ტრანსფორმირებული და კონუსური ბოლო ბიტი PCB– ის დასაფქვავად. მე ვფიქრობ, რომ ნებისმიერი გრავიურის ბოლო ბიტი იმუშავებს. Gcode ფაილი პირდაპირ შეიქმნა არწივისა და pcb-gcode მოდულის მიერ. მხოლოდ სამი უღელტეხილი გაკეთდა მარშრუტის კარგი განცალკევების უზრუნველსაყოფად, მაგრამ მთელი საათის განმავლობაში არ დახარჯავს მთელ სპილენძს. როდესაც PCB გამოვიდა CNC აპარატიდან, მე გავწმინდე მარშრუტები საჭრელით და გამოვცადე ისინი მულტიმეტრით.

პარამეტრები: კვების სიჩქარე 150 მმ/წთ, სიღრმე 0.2 მმ, ბრუნვის სიჩქარე 20'000 ტ/წთ

ნაბიჯი 3: შეაერთეთ კომპონენტები

შეაერთეთ კომპონენტები
შეაერთეთ კომპონენტები

პინცეტით და გამაგრილებელი რკინით, მოათავსეთ კომპონენტები სწორ ადგილას და შეაერთეთ იგი ნაკადის გამოყენებით (ის ეხმარება) და დაწყებული ყველაზე პატარა კომპონენტებით. ისევ და ისევ, მულტიმეტრით შეამოწმეთ რომ არ გაქვთ მოკლე ჩართვა ან დაუკავშირებელი ელემენტები.

თქვენ შეგიძლიათ აირჩიოთ გამაძლიერებლის მომატება თქვენთვის სასურველი რეზისტორის არჩევით (მოგება = (R3+R4)/R4). მე ავიღე 1M და 2.7k, ასე რომ ჩემს შემთხვევაში მოგება უდრის დაახლოებით 371. მე არ ვიცი ზუსტი მნიშვნელობა, რადგან მე ვიყენებ 5% ტოლერანტობის რეზისტორს.

ჩემი თერმოწყვილი J ტიპისაა. ეს ნიშნავს, რომ ის იძლევა 0.05mV თითოეულ ხარისხს. 371 მოგებით, მე ვიღებ 18.5mV თითო ხარისხს გამაძლიერებლის გამომუშავებიდან (0.05*371). მინდა გავზომო 200 ° C ტემპერატურაზე, ასე რომ გამაძლიერებლის გამომავალი უნდა იყოს დაახლოებით 3.7V (0.0185*200). შედეგი არ უნდა აღემატებოდეს 5 ვ -ს, რადგან მე ვიყენებ 5V საცნობარო ძაბვას (გარე).

სურათი შეესაბამება ჩემს მიერ შექმნილ პირველ (არა სამუშაო) ვერსიას, მაგრამ პრინციპი იგივეა. ამ პირველ ვერსიაში მე გამოვიყენე სარელეო და ზუსტად დაფის შუაში ჩავდე. როგორც კი მაღალი ძაბვით ვცვლიდი, მქონდა წვეტები, რომლებმაც კონტროლერი გადატვირთეს.

ნაბიჯი 4: დაპროგრამეთ მიკროკონტროლერი

მიკროკონტროლერის პროგრამირება
მიკროკონტროლერის პროგრამირება

არდუინოს მსგავსად ამ ინსტრუქციებში: https://www.instructables.com/id/How-to-Program-a… შეგიძლიათ ჩატვირთოთ კოდი.

მე გამოვიყენე პრო წვრილმანი FTDI-USB კაბელით Attiny 45-ის დასაპროგრამებლად, მაგრამ ეს მეთოდი ექვივალენტურია. შემდეგ ჩავრთე PIN PB1 და GDN პირდაპირ FTDI-USB კაბელის RX და GND– ში, რომ მივიღო სერიული მონაცემები და შევძლო გამართვა.

არდუინოს ესკიზში თქვენ უნდა დააყენოთ ყველა პარამეტრი ნულზე (P = 0, I = 0, D = 0, K = 0). ისინი დაყენდება დარეგულირების ეტაპზე.

თუ თქვენ არ ხედავთ კვამლს ან დამწვარი სუნი, შეგიძლიათ გადახვიდეთ შემდეგ საფეხურზე!

ნაბიჯი 5: შეკრება და დაკალიბრება

აწყობა და დაკალიბრება
აწყობა და დაკალიბრება
აწყობა და დაკალიბრება
აწყობა და დაკალიბრება

სიფრთხილე: არასოდეს გამორთოთ დენის წყარო და 5V პროგრამისტიდან ერთდროულად! წინააღმდეგ შემთხვევაში თქვენ დაინახავთ კვამლს, რომელსაც მე ვდგამდი წინა ნაბიჯზე. თუ არ ხართ დარწმუნებული, რომ შეძლებთ ამის პატივისცემას, შეგიძლიათ უბრალოდ ამოიღოთ 5 ვ პინი პროგრამისტისთვის. მე ეს დავუშვი, რადგან ჩემთვის უფრო მოსახერხებელი იყო კონტროლერის პროგრამირება დენის წყაროს გარეშე და კონტროლერის შემოწმება ისე, რომ გამათბობელი გიჟივით არ გამთბარიყო ჩემს წინ.

ახლა თქვენ შეგიძლიათ განალაგოთ თერმოწყვილი გამაძლიერებელზე და ნახოთ გაზომავთ რამეს (დაიცავით პოლარობა). თუ თქვენი გათბობის სისტემა ოთახის ტემპერატურაზეა, უნდა გაზომოთ ნული. ხელით გათბობამ უკვე უნდა გამოიწვიოს მცირე ღირებულებები.

როგორ წავიკითხოთ ეს ღირებულებები? უბრალოდ შეაერთეთ ქინძისთავები PB1 და GDN პირდაპირ FTDI-USB კაბელის RX და GND და გახსენით arduino სერიული მონიტორი.

როდესაც კონტროლერი იწყებს, ის აგზავნის წითელ მნიშვნელობას ჩიპის შიდა თერმომეტრის საშუალებით. ასე ვაკომპენსირებ ტემპერატურას (სპეციალური ჩიპის გამოყენების გარეშე). ეს ნიშნავს, რომ თუ ოპერაციის დროს ტემპერატურა იცვლება, ის არ იქნება გათვალისწინებული. ეს მნიშვნელობა ძალიან განსხვავდება ერთი ჩიპიდან მეორეზე, ამიტომ ესკიზის დასაწყისში ხელით უნდა შეიყვანოთ REFTEMPERATURE განმარტებაში.

მყარი მდგომარეობის რელეს შეერთებამდე დარწმუნდით, რომ ძაბვის გამომუშავება თქვენი რელეს მხარდაჭერილ დიაპაზონშია (ჩემს შემთხვევაში 3V– დან 25V– მდე, წრე წარმოქმნის დაახლოებით 11V– ს). (პატივი ეცი პოლარობას)

ეს მნიშვნელობები არ არის ტემპერატურა გრადუსზე ან ფარენჰეიტზე, არამედ ანალოგური ციფრული გარდაქმნის შედეგია, ასე რომ, ისინი განსხვავდება 0 -დან 1024 -მდე. მე ვიყენებ 5V საცნობარო ძაბვას, ამიტომ როდესაც გამაძლიერებლის გამოსასვლელი არის 5V- თან ახლოს, კონვერტაციის შედეგი არის 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). ჩართეთ სისტემა და დაელოდეთ, დაელოდეთ, დაელოდეთ… სანამ ტემპერატურა არ დადგება. ამ მომენტში თქვენ იცით, რომ "seuil" 1*100 = 100, ტემპერატურა tends to X. ასე რომ თქვენ იცით, რომ ბრძანებით 100/20000 = 5% შეგიძლიათ მიაღწიოთ X. მაგრამ მიზანი არის მიაღწიოთ 100 რადგან ის არის "tempCommand". პროპორციის გამოყენებით შეგიძლიათ გამოთვალოთ K, რათა მიაღწიოთ 100 -ს (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 გარდაქმნა და ბლაბლაბლა. მინდოდა განმეორებითი ნახტომის გენერირება და შემდეგ 10 წუთის განმავლობაში რეაქციის ჩაწერა და გადაცემის ფუნქციის დაწერა და შემდეგ რა? არ მინდა 200 ტერმინით არითმეტიკა გავაკეთო. ასე რომ, თუ ვინმეს გაქვთ რაიმე იდეა, მე სიამოვნებით ვისწავლი როგორ გავაკეთო ეს სწორად.

მე ასევე ვფიქრობდი ჩემს საუკეთესო მეგობრებზე ზიგლერსა და ნიკოლსზე. მათ მითხრეს, რომ ვიპოვო P, რომელიც წარმოქმნის რხევას და შემდეგ გამოვიყენო მათი მეთოდი. მე არასოდეს ვიპოვე ეს რხევები. ერთადერთი რაც ვიპოვე იყო ოოოოოოოოოოოოოოოოოოოოოოოოოოოოოოოოოოო.

და როგორ მოდელირება იმისა, რომ გათბობა არ არის იგივე პროცესი, როგორც გაგრილება?

მე გავაგრძელებ ჩემს კვლევას, მაგრამ ახლა შევაჯამოთ თქვენი კონტროლერი, თუ კმაყოფილი ხართ მიღებული მიღებით.

ნაბიჯი 7: ჩაალაგე

ჩაალაგე ის
ჩაალაგე ის
ჩაალაგე ის
ჩაალაგე ის
ჩაალაგე ის
ჩაალაგე ის
ჩაალაგე ის
ჩაალაგე ის

მე მქონდა წვდომა მოსკოვის ქარხანაზე (fablab77.ru) და მათ ლაზერულ საჭრელზე და მადლობელი ვარ. ამ შანსმა მომცა საშუალება შემექმნა ლამაზი პაკეტი ერთი დაწკაპუნებით გამომუშავებული მოდულით, რომელიც ქმნის სასურველი ზომის ზომებს (h = 69 l = 66 d = 42 მმ). თავზე არის ორი ხვრელი (დიამეტრი = 5 მმ) ლიდერისა და გადამრთველისთვის და ერთი ნაჭერი გვერდით პროგრამირების ქინძისთავებისთვის. მე დავაფიქსირე ტრანსფორმატორი ორი ცალი ხის და PCB ორი ხრახნით. მე შევაერთე ტერმინალის ბლოკი მავთულხლართებსა და PCB- ს, დავამატე გადართვა ტრანსფორმატორსა და PCB დენის შეყვანას შორის, ვუკავშირებდი led PBO– ს რეზისტორთან (300 Ohms) სერიაში. მე ასევე გამოვიყენე ფრჩხილის პოლონელი ელექტრული იზოლაციისთვის. ბოლო გამოცდის შემდეგ, ყუთი დავაწებე. Ის არის.

გირჩევთ: