Sunday, 14 June 2015

microcontroller - How to learn PID Control?


I want to learn PID (Proportional–Integral–Derivative) control mainly for temperature.


I would like to learn preferably through an easy project to do.


Could you please recommend something which would take a few weeks to learn?


Edit: I want to control the temperature of a water tank. The heating is done by a resistor.



Answer



Controlling temperature (it depends upon your medium) isn't terribly hard. That was my first project when I started. Pardon me, if I repeat things you already know.


I assume you already have a way of controlling the system (ie, a heater or cooler unit), and a way of getting feedback from the system (a temperature sensor like a thermistor or something). You'll need both to implement a PID loop, which is a type of closed loop control. All you really need to do after that is write a bit of software to send control commands, read feedback, and make decisions upon that feedback.


I'd start out by reading PID without a PhD. It's the article I used when I first had to regulate temperature in a science experiment. It provides some easy-to-understand pictures, and nice sample code (a basic loop that you can tweak only needs 30 lines) that explains how to control your 'plant' - in this case, the thing you want to control the temperature of.


The gist of PID - Proportional-Integral-Differential - control is to use instantaneous, past, and predicted future performance (respectively) of the system to determine how to control a system at a given point in time to reach a specified set point. In many cases, you'll have to tune the algorithm's gain factors to get the desired performance you need - how quickly the temperature will rise, how much you want to avoid overshoot, etc. You might even find you don't need the differential or even integral control to get where you want to be!



No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...