This is a software stack intended for easy and highly configurable setup of procedures for the proposed elastocaloric material's testing rig. Designed for a Raspberry Pi based system running python
The philosophy of the stack is to provide a combination of a simplified interface abstraction and coordination via a mix between yaml configuration files and simplified and convenient interfaces to hardware to describe configurations and procedures.
As a user, there are two main areas you will be using to describe procedures:
For a more description of what each area is for see the appropriate subsection for a link to the area's documentation.
As a developer, knowing the entire code base is not difficult but in addition to the stack, reading up on the protocols used to communicate between peripherals and the master controller will save you headache later. Recommended topics to cover include:
- I2C communications
- UART communications
- Datasheets for components
- Thermocouples
- Strain gauges
Most of the interfaces are wrappers around pre-existing libraries that are intended to provide usable default behavior while maintaining an extensible api that allows for replacing one ADC interface with another being a relatively painless process.
Currently the stack supports:
-
Interfaces:
- Linear actuator
- ADC
- DAC
- Temperature
- Load cell
- Strain measurement
- Fluid pump
-
Sensors:
- ADS1115
- MCP4725
- MAX31856
- VPG60001 via Sparkfun Openscale
- Strain measurement
-
Control:
Below are larger explanations of each ability:
Models a PA-14 linear actuator. With an ADC and DAC as the position and speed control.
Not Implemented
There are multiple ADCs in the system that quantize realworld signals into manipulatable digital formats. In the entire system, the following ADCs exist and are used:
- ADS1115 Used to measure position of the linear actuator. 16-bits of resolution.
- HX711 Part of the OpenScale sensor module. Contains a 24-bit ADC operating at upto 80 sps.
- MAX31856 Part of MAX universal thermocouple chip. Contains an on-board 19-bit ADC operating in a multiplexed method.
Because all of the converters are part of a module save for the ADS1115, the reference to ADC
or adc
can be safely implied to be referring to it and not the other modules.
Used in conjunction with a jellybean 3-phase brushless DC motor driver to control actuator motor speed.
Temperature interfaces are implemented with a customized version of John Robinson's adafruit MAX31856 library.
Implemented with the Sparkfun OpenScale interface. The interface aims to be as generic as possible in the future to support multiple hardware families.
16-bit, 4-channel, I2C, Delta-Sigma Converter with on board programmable gain amplifier.
12-bit, I2C, DAC with on board EEPROM.
Thermocouple to digital converter.
S-type load cell:
- 1000 lb (453.6 kg)
- 3mV/V sensitivity.
- Read with a HX711 load cell ASIC based board providede by sparkfun
Not Implemented
Control of the entire system is done via a Procedure
. A Procedure
is a combination of Routines
and Actions
(see below for more information).
For more complete documentation, see the action's readme.
For more complete documentation, see the routine's readme.
A traditional implementation of a PID controller. Able to be put in-line as a controller for the Actuator. It accepts a reference input, an output, and an input.
These are accomplished as a combination of actions and routines. For more information see the related sections.