Skip to main content

A modular PID control library.

Project description

This package provides general PID control software in Python with a Melcor MTCA backend. The idea is that experimentalists interested in temperature controlled experiments or other processes should not need to learn the inner workings of their PID controller before they can perform simple control tasks.

Module structure

This package provides both a high level controller that uses per-device backend drivers. The controller handles auto-tuning the PID feedback parameters and changing system temperatures, while the backends communicate setpoint changes, temperature read requests, etc. to the temperature control device.

Backends

The only physicsal backend that is supported at the moment is a Melcor Series MTCA Thermoelectric Cooler Controller, which we communicate with via Modbus packets over a serial port. That’s all I needed for my experiments, but I tried to write a framework that was flexible enough to swap in other backends. By subclassing Backend for your particular device, you can take advantage of the high-level Controller code that’s already written.

Melcor

Companies don’t stay in business forever, but lab equipment does ;). Our controller is still going strong since 1999, but Melcor has moved around. According to their 2005 announcement the Laird Group PLC purchased Melcor from Fedders Corporation, and by 2009 (according to the Internet Archive Wayback Machine) they phased out the old website at melcor.com in favor of their own thermal site, and it looks like there is no longer support for the older MTCA controllers. There seem to be a number of them on eBay though ;).

TestBackend

To get a feel for driving a PID system, look atcheck out the TestBackend, which simulates a standard first-order process with dead time (FOPDT).

Installation

Packages

Gentoo

I’ve packaged pypid for Gentoo. You need layman and my wtk overlay. Install with:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pypid

Dependencies

If you’re installing by hand or packaging pypid for another distribution, you’ll need the following dependencies:

Package

Purpose

Debian

Gentoo

aubio

Pitch detection

python-aubio

media-libs/aubio

nose

testing

python-nose

dev-python/nose

NumPy

Controller analysis

python-numpy

dev-python/numpy

pySerial

serial comminication

python-serial

dev-python/pyserial

pymodbus

Modbus stack

python-modbus

dev-python/twisted

SciPy

Controller analysis

python-scipy

dev-python/scipy

Actually, pymodbus may (depending on your packaging system) depend on pySerial via Twisted, so pymodbus alone may be enough to get you going.

The Debian package for pymodbus has not been accepted yet. Debian bug #578120 tracks the progress of the prospective package, but it seems to have stalled out at the moment.

Installing by hand

Pypid is available as a Git repository:

$ git clone git://tremily.us/pypid.git

See the homepage for details. To install the checkout, run the standard:

$ python setup.py install

Usage

See the examples in the examples directory.

Testing

Run the test suite with:

$ nosetests --with-doctest --doctest-tests pypid

Note that you should have your temperature control device connected to your computer before running this command, as backend tests require a connected backend.

Licence

This project is distributed under the GNU General Public License Version 3 or greater.

Author

W. Trevor King wking@tremily.us Copyright 2008-2012

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypid-0.4.tar.gz (38.0 kB view details)

Uploaded Source

File details

Details for the file pypid-0.4.tar.gz.

File metadata

  • Download URL: pypid-0.4.tar.gz
  • Upload date:
  • Size: 38.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pypid-0.4.tar.gz
Algorithm Hash digest
SHA256 d76694f7a74035008a88f1a20ae3a0253e8761161c95bd6e4f9207ba866cbe70
MD5 895748f8d13390950b4755a12b14fa2b
BLAKE2b-256 635d91d491875bd988541e20a231b4cc5725c1320f75fa1cf4652f518f03f145

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page