My degree is in control engineering. When I was at university (way back in the mists of time), the most sophisticated control techniques we had were bang-bang control
, sequence control
, and proportional-integral-differential control
Just to refresh our memories and set the scene... unlike a bang-bang controller, which is either on or off, a proportional or P
controller calculates an "error" value as the difference between a measured process output variable and a desired set-point. The controller then attempts to minimize this error by adjusting the process control inputs.
The amount of change is proportional to the error – hence the name “proportional controller.” When the difference between the desired value on the output and the actual value on the output is large, the controller attempts to rectify the situation by making large changes. As the difference between the desired and actual output values shrinks, the controller adjusts itself accordingly. We can visualize this as being the blue/cyan trace
in the image below.
In many cases we want our proportional controller to modify the output as quickly as possible, but if we aren’t careful the system will overshoot and then oscillate back and forth until it finally reaches the desired value. We can visualize this as being the red trace
in the image below.
In some cases the solution is to augment the proportional element with an integral (I) element
to create a proportional-integral (PI)
controller. In other cases we might use a derivative (D) element
to create a proportional-derivative (PD)
Alternatively, we might decide to employ all three elements to create a proportional-integral-derivative (PID)
controller. We can visualize the result (fast response with – ideally – no overshoot) as being the green trace. Heuristically, these terms can be interpreted in terms of time: P
depends on the present error
depends on the accumulation of past errors
; and D
is a prediction of future errors
, all based on the current rate of change. The weighted sum of these three actions is used to adjust the process.
Originally this type of continuously variable control used to be performed only the analog domain. These days, however, digital techniques are commonly used in many industrial control applications.Fuzzy Logic control
Another form of control is based on something called Fuzzy Logic
. I personally love this term, but I think the "Fuzzy" appellation has caused many people to take this approach less-seriously than it perhaps deserves.
Fuzzy logic is a form of many-valued
or probabilistic logic
. The reasoning in fuzzy logic is similar to human reasoning in that it allows for approximate values and inferences as well as incomplete or ambiguous data (fuzzy data), as opposed to only relying on crisp data (binary yes/no choices).
In the case of a thermostat, for example, instead of defining fixed temperature values for turning the heating or air-conditioning systems full on or off (as would be the case with a bang-bang controller), a fuzzy controller might "see" things in terms of cold, warm, or hot. (The diagram below shows simple trapezoid-like membership functions, but other shapes – particularly triangles – are often used).
Fuzzy logic is able to process incomplete data and provide approximate solutions to problems other methods find difficult to solve. For example, I think it’s safe to say that all of us have played around balancing an object like a stick on the end of our fingers at one time or another. Can you imagine how much more difficult this would be if we had two sticks joined at the middle with a universal joint that allows the upper stick to flop around in any direction?
I can’t even imagine creating a PID controller-based solution to this. In fact, if the truth be told, I can’t imagine creating any controller that could do this ... but I have seen an example of a Fuzzy Logic controller handling just such a system with aplomb.The best book on Fuzzy Logic?
I don’t recall why, but I was just sitting here thinking about Fuzzy Logic when I realized that I really know very little about this little rascal when it comes to the nitty-gritty (actually-making-something work) details. Furthermore, looking at my bookshelves, I realize that I don’t have anything useful on this technology.
So I bounced over to Amazon. The first book I found was Fuzzy Logic Get Fuzzy 2
by Darby Conley, which seemed to be very reasonably priced at $8.99, and which had 4.5 stars from 60 reviewers. On closer inspection, however, I discovered that this is a cartoon book about a cat and a dog. Amusing as this might be, I doubt it will provide the answers I am looking for.
The best of the bunch seemed to be An Introduction to Fuzzy Logic for Practical Applications
by Kazuo Tanaka. But at $130 this would have to be a REALLY good book. Also, it was published in 1996, which has plusses and minuses associated with it – on the plus side it's still in print, which says it has to be good (not the least that it has mostly 5-star reviews); on the minus side I can’t help thinking that things must have moved on since that time...
What I'm looking for is an affordable book from which I can get a good grip on Fuzzy Logic without getting embroiled in complex math that makes my eyes water and my brain ache. Something sufficient to allow me to capture and implement a simple algorithm in C for use on a microcontroller or in Verilog for realization in an FPGA. (I don’t want the book to teach C or Verilog – you understand – all I want is to get a firm grasp of Fuzzy Logic fundamentals.)
The bottom line is that I'm looking for a recommendation for a good book. Do you have any suggestions? And if the tome you recommend is An Introduction to Fuzzy Logic for Practical Applications
as discussed above, then (a) do you have a copy and (b) would you perhaps be interested in trading it for one of the books on my
If you found this article to be interest, visit Microcontroller / MCU Designline
where – in addition to my blogs on all sorts of "stuff" (also check out my Max's Cool Beans
blog) – you will find the latest and greatest design, technology, product, and news articles with regard to all aspects of designing and using microcontrollers.
Also, you can obtain a highlights update delivered directly to your inbox by signing up for my weekly newsletter – just Click Here
to request this newsletter using the Manage Newsletters tab (if you aren't already a member you'll be asked to register, but it's free and painless so don't let that stop you [grin]).
Last but certainly not least, make sure you check out all of the discussions and other information resources at MicrocontrollerCentral.com
, including blogs by yours truly.