Process Control Project

The objective of the process control project is to control or optimize a system that is chosen by a student group of 2-3. The project can either be entirely simulation based or else involve a physical measurement and actuator such as provided by a micro-controller (e.g. Arduino) or micro-processor (e.g. Raspberry Pi). The project must involve a sensor, actuator, and controller. The project is open-ended by design to allow students to pursue topics from a research group or personal or professional interest.

The project report is a 5 minute presentation and a 2 page document that gives details of the project and approach to implement an automation strategy.

  • Introduction with a statement of the problem and objective of the project
  • Derivation of the mathematical simulation of the physical system
  • Details on the sensor, actuator, and controller
  • Simulations or measurements of closed loop performance
  • Conclusions and future opportunities

Below is a playlist of prior student projects. These projects project reports can be used as seed ideas but should be extended beyond what is previously presented.

Students groups are welcome to find existing simulation models online such as from a library of dynamic models. The process control project ideas are selected by the group and should be approved by the instructor or teaching assistant.

Project Proposal

  1. Identify something that you would like to control that is related to a dynamic system, preferably in engineering.
  2. Draw a diagram of the system with all parameters and variables labeled.
  3. List articles (2-3) that give related results or locate authors that have worked in this area.
  4. List factors that cannot change that influence the dynamic outcome (constants / parameters).
  5. List a factor that can change to influence the dynamic result as an actuator. Can this factor be adjusted by the controller?
  6. What is the controlled variable? Is it important that the controlled variable remain within a range or at a particular set point? Does the set point change over time?
  7. List equations that describe the dynamic response such as equations of motion, mass balance, energy balance, etc.
  8. List factors that may influence the success of the project. Where are the uncertainties and how will these uncertain factors be addressed?
  9. What is the timeline for the project and the anticipated final product for this project?

Project Progress Report #1

The first project progress report should include a description of the input to output dynamic relationships. This should include the constants, parameters, variables, and equations of the dynamic system. This project progress report should show open-loop simulation results or the measurement response due to a disturbance or actuator change. The report should also give an update on the project timeline and discuss any factors that were identified in the project proposal relating to uncertainties. This progress report should also include a discussion of the relevant articles that were identified in the project proposal. The progress report should be the draft section of the final report that includes an introduction, literature review, and model description.

Project Progress Report #2

The second project progress report should include a discussion and results related to dynamic data (simulated or actual). Include a sensitivity analysis to show the steady state and dynamic relationships between the actuator and the controlled variable. Show estimation of FOPDT, SOPDT, or higher order representations of the systems that will be useful for PID tuning. If the project does not include physical measurements, include appropriate levels of simulated measurement noise. The progress report should be a draft section of the final report that includes model estimation discussion.

Project Progress Report #3

The third project progress report should include a discussion and results related to closed-loop control. Include a sensitivity analysis to show the steady state and dynamic relationships between the manipulated variables and the controlled variables. Show simulated control and optimization results that achieve the best performance. The progress report should be a draft section of the final report that includes closed-loop control discussion.

Final Project Report

The final project report is a compilation of the three individual progress reports and any additional content such as stability analysis, tuning, feedforward, or other control methods to improve performance.

The final project report may include the following elements:

  1. Title, authors
  2. Abstract
  3. Introduction / Literature review
  4. Theory / Methods / Physics-based modeling
  5. Simulation results or Hardware Description
  6. Model fitting results
  7. Control tuning / Stability analysis
  8. Discussion
  9. Conclusions / Future work
  10. References

The recommended page length is 2 although individual reports may be longer based on the scope of the project and number of team members involved.

Final Project Presentation

The final project presentation is a 5 minute video of your project. It includes the same elements as the final report but in a condensed and graphical format. Many group choose to do a screencast to record a computer desktop with audio. Instructions for creating a screencast and uploading the video to YouTube are shown below.

Arduino Help

Analog and digital pins on the Arduino support reading and writing values to add a sensor or actuator. The firmware that came pre-loaded (tclab.ino) on the Temperature Control Lab is specific to that lab with 2 heaters, 2 temperature sensors, and 1 LED. A different firmware called Standard Firmata can be loaded onto the Arduino to allow the pyFirmata (Python) package to read from or write to any of the pins. This may be useful if you are adding additional sensors, an actuator, or want to modify the pin connections.

import time

    from pyfirmata import Arduino, util
    import pip
    from pyfirmata import Arduino, util

# for MacOS or Linux
# install CH340G driver from
#board = Arduino('/dev/cu.wchusbserial1420')

# for Windows
board = Arduino('COM3')

# Start iterator
iterator = util.Iterator(board)

# TMP36 Temperature Sensor Calibration
def TMP36(Tv):
    return (Tv*5000.0-500.0)/10.0

# Read voltage (0-5 V) as (0-1)
Tv1 = board.get_pin('a:0:i')
Tv2 = board.get_pin('a:2:i')  

# Setup Temperature functions
def T1():
    return TMP36(

def T2():
    return TMP36(

# Setup Heater functions with PWM
H1 = board.get_pin('d:3:p')
H2 = board.get_pin('d:5:p')


# Print Temperature 1
print('Temperature 1: ' + str(T1()))
print('Temperature 2: ' + str(T2()))

# Turn on heaters
print('Heater 1: 90% and Heater 2: 20%')

# Wait
print('Sleep for 25 seconds')

# Print Temperatures 1 and 2
print('Temperature 1: ' + str(T1()))
print('Temperature 2: ' + str(T2()))

# Turn off heaters