Metadata-Version: 2.1
Name: ATWG
Version: 0.1.1
Summary: Various Temperature Waveform Generator for Climate Chambers
Home-page: https://github.com/akaeba/ATWG
Author: Andreas Kaeberlein
Author-email: andreas.kaeberlein@web.de
License: GPLv3
Download-URL: https://pypi.org/project/ATWG/
Platform: Any
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: pyserial
Requires-Dist: pyyaml

![Python 3.7](https://img.shields.io/badge/Python-3.7-blue.svg) [![Unittest](https://github.com/akaeba/ATWG/workflows/Unittest/badge.svg)](https://github.com/akaeba/ATWG/actions)

# ATWG

__Arbitrary Temperature Waveform Generator__

A various waveform shapes creating python script to control a climate chamber via PC.


## Releases

| Version                                              | Date       | Source                                                                                   | Change log                             |
| ---------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------- | -------------------------------------- |
| latest                                               |            | <a id="raw-url" href="https://github.com/akaeba/ATWG/archive/master.zip ">latest.zip</a> |                                        |
| [v0.1.1](https://github.com/akaeba/ATWG/tree/v0.1.0) | 2021-02-01 | <a id="raw-url" href="https://github.com/akaeba/ATWG/archive/v0.1.1.zip ">v0.1.1.zip</a> | [pypi.org](https://pypi.org) published |
| [v0.1.0](https://github.com/akaeba/ATWG/tree/v0.1.0) | 2020-03-09 | <a id="raw-url" href="https://github.com/akaeba/ATWG/archive/v0.1.0.zip ">v0.1.0.zip</a> | initial draft                          |


## Supported climate chambers
 * [Espec Corp SH-641](https://espec.com/na/products/model/sh_641)
    - RS232 communication interface
    - Espec S-2 controller


## Command line interface

### Options

| Option           | Description                               | Args                                                                                      |
| ---------------- | ----------------------------------------- | ----------------------------------------------------------------------------------------- |
| --sine           | select sine as used waveform              |                                                                                           |
| --trapezoid      | select trapezoid as used waveform         |                                                                                           |
| --minTemp=myVal  | sets minimal temperature value            |                                                                                           |
| --maxTemp=myVal  | sets maximal temperature value            |                                                                                           |
| [--invert]       | start with lower part of wave             |                                                                                           |
| [--period=1h]    | period of waveform                        | d:hh:mm:ss, h, m, s                                                                       |
| [--startTemp=25] | waves start temperature                   | start temperature of wave                                                                 |
| [--riseTime=0]   | positive slew rate, used by '--trapezoid' | degree/time, T(min->max); 5C/h, 120min                                                    |
| [--fallTime=0]   | negative slew rate, used by '--trapezoid' | degree/time, T(max->min); 5C/h, 120min                                                    |
| [--chamber=SIM]  | used chamber                              | SIM, ESPEC_SH641                                                                          |
| [--itfCfgFile=]  | chambers interface configuration          | [default](https://github.com/akaeba/ATWG/blob/master/ATWG/driver/espec/sh_if_default.yml) |


### Example

This example starts the waveform generator in the simulation mode. The sine wave has a minimal value of 10°C, a
maximum of 60°C and s start value of 30°C. A full period needs one hour.

```python
run ./ATWG/ATWG.py --sine --chamber=SIM --minTemp=10 --maxTemp=60 --startTemp=30 --period=1h
```


### Output

Following output is written to the command line interface while the script is active:

```text
Arbitrary Temperature Waveform Generator

  Chamber
    State    : Run /
    Type     : SIM
    Tmeas    : +30.02 °C
    Tset     : +30.06 °C

  Waveform
    Shape    : sine
    Tmin     : +10.00 °C
    Tmax     : +60.00 °C
    Period   : 1h
    Gradient : +2.57 °C/m


Press 'CTRL + C' for exit
```


## Chamber driver only

### Espec SH641
[sh_641_drv.py](https://github.com/akaeba/ATWG/blob/master/ATWG/driver/espec/sh_641_drv.py) realizes the interface to the climate chamber. Following instruction listing controls the chamber:

```python
import ATWG.driver.espec.sh_641_drv as sh_641_drv # import driver

myChamber = especShSu()                           # call class constructor
myChamber.open()                                  # open with interface defaults
print(myChamber.get_clima())                      # get current clima
myChamber.start()                                 # start chamber
myChamber.set_clima(clima={'temperature': 25})    # set temperature value
myChamber.stop()                                  # stop chamber
myChamber.close()                                 # close handle
```

The _open_ procedure accepts as argument a .yml file with the chamber (RS232) configuration. In case of no argument [default](https://github.com/akaeba/ATWG/blob/master/ATWG/driver/espec/sh_if_default.yml)s are used.


