PID Controlled Helicopter Arm
Objective
To make sure my summer wasn’t wasted and stop guilt from creeping inside me due to not doing anything productive. So, I decided to explore some controller design due to my peaked interest in the topic from a course I took in Spring. Hence, I started with the edX MIT open course which essentially covers building a propeller arm assembly controlled by Arduino Uno code. This setup is used by the course to develop code and test it on the assembly to demonstrate the working principles of the PID controller — Proportional, Integral and Derivative control for the propeller arm.
Design
The course offered a detailed description of the assembly and a step-by-step guide to getting the setup ready. The images below show the schematics of the circuit.
Build
This by far was the most challenging aspect of the project. Since the MIT course was videotaped in the USA, parts used for the build were very easy to acquire for the instructors whereas it took me a good 3 weeks to get all the necessary components as I was in India. After the long wait, I assembled the propeller arm with servos, resistors, capacitors, etc. and tried to implement the code on my MacBook air. This is the stuff they never address in these online courses is the sheer amount of TIME it takes for someone to “make it work” or “run the code”. After 6 hours of taxing internet forum searches and googling errors, I finally got my propeller to work via a web-based interface and that moment was joyous. Any coder/engineer can probably relate.
Test
After getting everything to work, I ran multiple scripts that incrementally implemented proportional control (P), then proportional along with derivative control (PD) and finally all three (PID) control to get the propeller to the desired pitch angle. It was very interesting to see how these control methods actually worked on a real-life model. The videos below show the testing of the various controllers.
Conclusion
This project/online-course was a great learning experience. It introduced me to DIY projects and how to “make things work” on my own (without any office hours to ask help from). It was a very different experience than college lab courses where almost everything is setup. I did everything from ordering parts, assembling, coding, error-debugging and testing where each step of the process taught me valuable lessons that I wouldn’t have learned in class. Another major takeaway was that I actually saw the working principles of the controllers which we theoretically designed in class, it was a lot more different and certainly more enriching to see a practical implementation of that knowledge.
Acknowledgments
I would like to thank and appreciate MIT and edX for their course materials, instructors and peers taking the course and the online community for helping me make this possible.