Giter Site home page Giter Site logo

arduino's Introduction

A modular, portable lab for learning Process Control

Process Control Temperature Lab

The BYU Arduino Temperature Control Lab is designed as a modular, portable, and inexpensive solution for hands-on process control learning. Heat output is adjusted by modulating the voltage to a transistor. A thermistor measures the temperature. Energy from the transistor output is transferred by conduction and convection to the temperature sensor. The lab is integrated into a small PCB shield which can be mounted to any Arduino or Arduino compatible microcontroller. Experiments can then be programmatically controlled using Python over a USB connection.

Key Features

This lab reinforces principles of system dynamics, estimation, and model predictive control, including:

  • The difference between manual and automatic control
  • Step tests to generate dynamic data for empirical modeling
  • Dynamic modeling with first principles
  • Dynamic data reconciliation
  • Tune a moving horizon estimator
  • Tune a PID controller
  • Tune a model predictive controller
  • Combine MHE and MPC

Getting Started

For instructions on configuring your system and getting started with the lab see Getting Started.

Course Modules

The following example modules are included

Step Test

Perform a step test to collect dynamic data. Steps the input voltage up and down and records output temperatures.

Regression

Demonstrates the use of regression in Python to fit first order, second order, and ARX models to collected data.

On_Off_Control

Demonstrates control to a desired setpoint using a binary On/Off controller.

PID Control

Demonstrates control to a desired setpoint using a Proportional, Integral, Derivative controller.

Moving Horizon Estimation

Shows how model parameters can be dynamically estimated during system operation using MHE.

Model Predictive Control

Demonstrates advanced control to a desired setpoint using a Model Predictive Controller.

MHE and MPC

Combines MHE for online model parameter estimation with advanced MPC control to reach a desired setpoint.

Course Website

For more information and instructional videos, visit the Arduino temperature control lab page on the BYU Process Dynamics and Control course website.

Matlab Support

MATLAB must be installed and configured with an add-on package as shown here for MATLAB 2017b. This allows MATLAB to connect to the Arduino device with the command a = arduino. MATLAB files and Simulink models are available to test the basic functionality of the heaters and sensors.

arduino's People

Contributors

abe-mart avatar aknight0 avatar alchemyst avatar apmonitor avatar jckantor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

arduino's Issues

Add second temperature to graph

The graph should include the voltage output and temperature reading from the second transistor. This could be either combined with the first graph, or a second graph specifically for MIMO.

Arduino() doesn't find port on MacOS

@APMonitor I'm testing with MacOS X (High Sierra) and Python 3.6 (Anaconda distribution). serial.tools.list_ports.comports() doesn't return a list of active ports, therefore Arduino.findport() fails.

One fix, not pretty, would be an optional argument to Arduino() to specify a port. If a port was specified, then findPort() wouldn't need to be called. The placeholder is already there, just need to modify the logic in init

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.