فهرست مطالب:

کنترل کننده دما PID: 7 مرحله
کنترل کننده دما PID: 7 مرحله

تصویری: کنترل کننده دما PID: 7 مرحله

تصویری: کنترل کننده دما PID: 7 مرحله
تصویری: 🔥کنترلر PID چیست؟🔥 2024, جولای
Anonim
کنترل کننده دما PID
کنترل کننده دما PID

دوست من در حال ساخت یک اکسترودر پلاستیکی برای بازیافت پلاستیک است (https://preciousplastic.com). او باید دمای اکستروژن را کنترل کند. برای این منظور او از نوار بخاری نازل استفاده می کند. در این نازل ، یک ترموکوپل و یک واحد گرمایش وجود دارد که به ما اجازه می دهد دما را اندازه گیری کرده و در نهایت به دمای مورد نظر برسیم (یک حلقه برگشت به عقب ایجاد کنید).

وقتی شنیدم که برای کنترل همه این نوارهای بخاری نازل به چندین کنترلر PID نیاز دارد ، بلافاصله این اشتیاق به من دست داد که بخواهیم خودمان را بسازیم.

مرحله 1: ابزار و مواد

ابزارها

  • لحیم کاری ، سیم لحیم و شار
  • موچین
  • دستگاه فرز (حکاکی شیمیایی برای نمونه سازی PCB نیز امکان پذیر است) (همچنین می توانید PCB را با فایل عقاب من سفارش دهید)
  • دماسنج (برای کالیبراسیون)
  • arduino (هر نوع) یا برنامه نویس AVR
  • کابل USB FTDI سریال TTL-232
  • برش لیزری (اختیاری)
  • مولتی متر (اهم متر و ولت متر)

مواد

  • صفحه مسی تک طرفه باکلیت (حداقل 60*35 میلی متر) (من اره خود را با خرید فایبرگلاس خراب کردم ، بنابراین مراقب باشید: باکلیت)
  • میکروکنترلر Attiny45
  • تنظیم کننده ولتاژ LM2940IMP-5
  • تقویت کننده عملیاتی AD8605
  • ترانزیستور NDS356AP
  • تعدادی مقاومت و خازن (من کتاب adafruit SMT 0603 را دارم)
  • ترانسفورماتور 230V-9V ac-dc
  • دیودهای 1N4004
  • رله حالت جامد
  • لاک ناخن (اختیاری)

مرحله 2: PCB را بچسبانید

PCB را بچسبانید
PCB را بچسبانید
PCB را بچسبانید
PCB را بچسبانید
PCB را بچسبانید
PCB را بچسبانید

من از CNC Proxxon MF70 تبدیل شده و یک بیت انتهایی مخروطی برای آسیاب کردن PCB استفاده کردم. من فکر می کنم که هر بیت پایان حکاکی کار می کند. فایل Gcode مستقیماً توسط eagle و افزونه pcb-gcode ایجاد شد. فقط سه گذر برای اطمینان از جداسازی مسیر خوب انجام شده است اما بدون صرف ساعت ها برای آسیاب تمام مس. وقتی PCB از دستگاه CNC خارج شد ، مسیرها را با برش تمیز کردم و آنها را با مولتی متر آزمایش کردم.

پارامترها: نرخ تغذیه 150 میلی متر در دقیقه ، عمق 0.2 میلی متر ، سرعت چرخش 20'000 تن در دقیقه

مرحله 3: اجزا را لحیم کنید

قطعات را لحیم کنید
قطعات را لحیم کنید

با موچین و آهن لحیم کاری ، اجزاء را در مکان های مناسب قرار دهید و با استفاده از شار (این کمک می کند) و با کوچکترین اجزاء شروع کنید ، آن را لحیم کنید. مجدداً ، با یک مولتی متر بررسی کنید که هیچ اتصال کوتاه یا عناصر وصل نشده ای ندارید.

شما می توانید با انتخاب مقاومت مورد نظر خود (افزایش = (R3+R4)/R4) ، تقویت کننده تقویت کننده را انتخاب کنید. من 1M و 2.7k گرفتم ، بنابراین در مورد من افزایش تقریبا 371 است. من نمی توانم مقدار دقیق آن را بدانم زیرا از مقاومت تحمل 5 using استفاده می کنم.

ترموکوپل من از نوع J است. به این معنی است که برای هر درجه 0.05 میلی ولت می دهد. با افزایش 371 ، من 18.5mV در هر درجه از خروجی تقویت کننده (0.01*371) به دست می آورم. من می خواهم حدود 200 درجه سانتی گراد را اندازه گیری کنم بنابراین خروجی تقویت کننده باید در حدود 3.7 ولت (0.0185*200) باشد. نتیجه نباید بیش از 5V باشد زیرا از ولتاژ مرجع 5V (خارجی) استفاده می کنم.

تصویر مربوط به اولین نسخه (کار نمی کند) نسخه من است ، اما اصل یکسان است. در این نسخه اول ، من از یک رله استفاده کردم و آن را درست در وسط برد قرار دادم. به محض اینکه با ولتاژ بالا تعویض می کردم ، سنبله هایی داشتم که باعث می شد کنترلر راه اندازی مجدد شود.

مرحله 4: میکروکنترلر را برنامه ریزی کنید

میکروکنترلر را برنامه ریزی کنید
میکروکنترلر را برنامه ریزی کنید

با استفاده از آردوینو مانند این دستورالعمل: https://www.instructables.com/id/How-to-Program-a… می توانید کد را بارگذاری کنید.

من برای برنامه ریزی Attiny 45 از یک برنامه کوچک با کابل FTDI-USB استفاده کردم اما این روش معادل است. سپس پین PB1 و GDN را مستقیماً به RX و GND کابل FTDI-USB وصل کردم تا داده های سریال را دریافت کنم و بتوانم اشکال زدایی کنم.

شما باید تمام پارامترها را در طرح آردوینو صفر (P = 0 ، I = 0 ، D = 0 ، K = 0) قرار دهید. آنها در مرحله تنظیم تنظیم می شوند.

اگر دود یا بوی سوختگی را نمی بینید ، می توانید به مرحله بعدی بروید!

مرحله 5: مونتاژ و کالیبراسیون

مونتاژ و کالیبراسیون
مونتاژ و کالیبراسیون
مونتاژ و کالیبراسیون
مونتاژ و کالیبراسیون

احتیاط: هرگز منبع تغذیه و 5 ولت را به طور همزمان از برنامه نویس وصل نکنید! در غیر این صورت دودی را که در مرحله قبل مصرف می کردم مشاهده می کنید. اگر مطمئن نیستید که می توانید به آن احترام بگذارید ، می توانید پین 5 ولت را برای برنامه نویس حذف کنید. من اجازه دادم زیرا برای من راحت تر بود که کنترل کننده را بدون منبع تغذیه برنامه ریزی کنم و کنترل کننده را بدون اینکه بخاری به صورت دیوانه واری جلوی صورتم گرم شود آزمایش کنم.

حالا می توانید ترموکوپل را روی تقویت کننده بکشید و ببینید آیا چیزی را اندازه گیری می کنید (به قطبیت احترام بگذارید). اگر سیستم گرمایش شما در دمای اتاق است ، باید صفر را اندازه گیری کنید. گرم کردن آن با دست باید مقادیر کوچکی را در پی داشته باشد.

چگونه این مقادیر را بخوانیم؟ به سادگی پین های PB1 و GDN را مستقیماً به RX و GND کابل FTDI-USB وصل کنید و مانیتور سریال arduino را باز کنید.

هنگامی که کنترل کننده شروع به کار می کند ، مقدار قرمز را توسط دماسنج داخلی تراشه ارسال می کند. به این ترتیب من دما را جبران می کنم (بدون استفاده از تراشه اختصاصی). به این معنی که اگر دما در حین کار تغییر کند ، به آن توجه نمی شود. این مقدار از یک تراشه به تراشه دیگر بسیار متفاوت است ، بنابراین باید به صورت دستی در تعریف REFTEMPERATURE در ابتدای طرح وارد شود.

قبل از اتصال رله حالت جامد ، بررسی کنید که ولتاژ خروجی در محدوده پشتیبانی شده توسط رله شما باشد (در مورد من 3 ولت تا 25 ولت ، مدار در حدود 11 ولت تولید می کند). (به قطبیت احترام بگذارید)

این مقادیر درجه حرارت یا درجه فارنهایت نیستند بلکه نتیجه تبدیل آنالوگ به دیجیتال هستند بنابراین بین 0 تا 1024 متغیر هستند. من از ولتاژ مرجع 5V استفاده می کنم بنابراین وقتی خروجی تقویت کننده نزدیک 5V است ، نتیجه تبدیل نزدیک به 1024 است.

مرحله 6: تنظیم PID

تنظیم PID
تنظیم PID

لازم است اشاره کنم که من یک متخصص کنترل نیستم ، بنابراین برخی پارامترها را پیدا کردم که برای من کار می کند ، اما من تضمین نمی کنم که برای همه کار می کند.

اول از همه ، من باید توضیح دهم که برنامه چه کاری انجام می دهد. من نوعی نرم افزار PWM را اجرا کردم: یک شمارنده در هر تکرار افزایش می یابد تا به 20000 برسد (در این حالت به 0 بازنشانی می شود). تاخیر حلقه را تا میلی ثانیه کند می کند. باهوش ترین ما متوجه خواهیم شد که دوره کنترل حدود 20 ثانیه است. هر حلقه با مقایسه بین شمارنده و آستانه شروع می شود. اگر شمارنده کمتر از آستانه باشد ، رله را خاموش می کنم. اگر بزرگتر است ، آن را روشن می کنم. بنابراین من قدرت را با تعیین آستانه تنظیم می کنم. محاسبه آستانه هر ثانیه اتفاق می افتد.

کنترل کننده PID چیست؟

هنگامی که می خواهید یک فرآیند را کنترل کنید ، مقداری را که اندازه گیری می کنید (analogData) ، مقداری را که می خواهید به آن برسید (tempCommand) و راهی برای اصلاح وضعیت آن فرآیند (seuil) دارید. در مورد من این کار با آستانه ("seuil" به فرانسوی انجام می شود ، اما نوشتن و تلفظ آن بسیار ساده تر است (تلفظ "sey")) که تعیین می کند چه مدت سوئیچ روشن و خاموش است (چرخه کار) در نتیجه میزان انرژی در سیستم قرار دهید

همه قبول دارند که اگر از نقطه ای که می خواهید به آن برسید فاصله دارید ، می توانید یک اصلاح بزرگ انجام دهید و اگر نزدیک هستید ، تصحیح کوچکی مورد نیاز است. به این معنی که تصحیح تابعی از خطا است (error = 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 ، درجه حرارت به X می رسد. بنابراین می دانید که با فرمان 100/20000 = 5٪ می توانید به X برسید. اما هدف رسیدن به 100 است زیرا "tempCommand" است. با استفاده از نسبت می توانید K را برای رسیدن به 100 (tempCommand) محاسبه کنید. با احتیاط از مقدار کوچکتر از مقدار محاسبه شده استفاده کردم. در واقع گرم کردن بیشتر از سرد شدن آسان تر است. پس بالاخره

Kfinal = K*tempCommand*0.9/X

حالا وقتی کنترلر را راه اندازی می کنید ، به طور طبیعی باید به دمای مورد نظر شما برسد ، اما این یک روند واقعاً کند است زیرا شما فقط تلفات گرمایش را جبران می کنید. اگر می خواهید از دمایی به درجه حرارت دیگر بروید ، مقداری انرژی حرارتی باید به سیستم اضافه شود. P تعیین می کند که با چه سرعتی انرژی را به سیستم وارد می کنید. P را روی مقدار کمی تنظیم کنید (برای مثال P = 10). یک شروع (تقریبا) سرد را امتحان کنید. اگر یک فرار بزرگ ندارید ، با دبل (20 = P) امتحان کنید اگر اکنون یکی از آنها را امتحان کرده اید. اگر 5 درصد فراتر رفته اید ، خوب است.

حالا D را افزایش دهید تا زمانی که هیچ فرضی نداشته باشید. (همیشه آزمایشات ، من می دانم که این علم نیست) (من D = 100 گرفتم)

سپس I = P^2/(4*D) را اضافه کنید (بر اساس روش زیگلر-نیکلتس است ، باید ثبات را تضمین کند) (برای من I = 1)

چرا این همه آزمایش ، چرا علم نیست؟

میدونم میدونم! یک نظریه بزرگ وجود دارد و شما می توانید تابع انتقال و تبدیل Z و blablabla را محاسبه کنید. من می خواستم یک جهش واحد ایجاد کنم و سپس واکنش را به مدت 10 دقیقه ثبت کنم و تابع انتقال را بنویسم و سپس چه؟ من نمی خواهم با 200 عبارت حسابی بسازم. بنابراین اگر کسی ایده ای دارد ، خوشحال می شوم نحوه انجام صحیح آن را بیاموزم.

من همچنین به بهترین دوستانم زیگلر و نیکولز فکر کردم. آنها به من گفتند که یک P پیدا کنم که نوسان ایجاد می کند و سپس روش آنها را اعمال کند. من هرگز این نوسانات را پیدا نکردم. تنها چیزی که من پیدا کردم یک حرکت عالی به سمت آسمان بود.

و چگونه می توان این واقعیت را مدل کرد که گرمایش فرایندی مشابه سرمایش نیست؟

من تحقیقات خود را ادامه خواهم داد اما اکنون اگر از عملکردی که کسب کرده اید راضی هستید ، کنترلر شما را بسته بندی کنیم.

مرحله 7: آن را بسته بندی کنید

آن را بسته بندی کنید
آن را بسته بندی کنید
آن را بسته بندی کنید
آن را بسته بندی کنید
آن را بسته بندی کنید
آن را بسته بندی کنید
آن را بسته بندی کنید
آن را بسته بندی کنید

من به fablab مسکو (fablab77.ru) و دستگاه برش لیزری آنها دسترسی داشتم و ممنون هستم. این فرصت به من اجازه داد تا یک بسته خوب با یک کلیک توسط افزونه ای تولید کنم که جعبه هایی با ابعاد مورد نظر (h = 69 l = 66 d = 42 mm) ایجاد می کند. دو سوراخ (diam = 5mm) در بالا برای led و سوئیچ و یک شکاف در طرف برای پین های برنامه نویسی وجود دارد. من ترانس را با دو تکه چوب و PCB را با دو پیچ محکم کردم. بلوک ترمینال را به سیم و PCB لحیم کردم ، سوئیچ بین ترانسفورماتور و ورودی برق PCB را اضافه کردم ، LED را با مقاومت (300 اهم) به صورت سری به PBO وصل کردم. من برای عایق الکتریکی از لاک ناخن استفاده کردم. بعد از آخرین آزمایش ، جعبه را چسباندم. خودشه.

توصیه شده: