The control system for the platform was completely digital and implemented in the code of the Atmel ATmega328 microcontroller. The Arduino UNO board, which uses the ATmega328, was chosen for the control system because of its ease of use, its input/output capabilities, its small footprint, and its low cost. The control system consists of a digital filter for the accelerometer input signals and a digital P.I.D. controller. A digital filter was needed because the raw signal from the accelerometer was too noisy to be used directly. The following images show the filtered and unfiltered signals.
The addition of the P.I.D. controller increased the systems response time, smoothness, steady state error, and overall stability. The P.I.D. controller incorporates the use of feedback, in this case the accelerometer signals, to dynamically adjust the output signal. The three terms each change the output signal differently. The Proportional term is proportional to present error, the Integral term is proportional to the sum of past errors, and the Derivative term is proportional to the current rate of change.