CLUTGen, a flexible ADC LUT generator for embedded systems.
Project description
CLUTGen
CLUTGen automates the creation of Look-Up Tables for embedded systems, converting raw ADC readings into calibrated physical units such as temperature, pressure, or distance.
Given a set of calibration samples, CLUTGen fits an interpolation curve and generates a production-ready .c/.h pair with the full LUT precomputed for every possible ADC reading.
For Zephyr west module usage, see the zephyr branch.
Requirements
- Python 3.10+
numpy,plotly
Installation
From PyPI:
pip install clutgen
From source:
pip install .
Usage
clutgen [OPTIONS] input_files...
| Argument | Description |
|---|---|
input_files |
One or more .toml configuration files |
-o, --output-dir |
Output directory for generated files (default: ./clutgenerated) |
-n, --name |
Base name for the generated .c/.h files (default: lookup_tables) |
--preview |
Open an interactive view comparing all interpolation methods before generation |
Interpolation method (mutually exclusive, default: --linear):
| Flag | Method |
|---|---|
-l, --linear |
Linear interpolation |
-s, --splines |
Cubic spline interpolation |
-p, --polynomial |
Best-fit polynomial up to degree 7 |
-w, --piecewise |
Zero-order hold (step-like) |
-d, --idw |
Inverse Distance Weighting |
Examples:
# Explore interpolation methods interactively before choosing
clutgen --preview ./calibration/temperature.toml ./calibration/pressure.toml
# Generate with splines after exploring
clutgen --splines ./calibration/temperature.toml ./calibration/pressure.toml
# Custom output directory and file name
clutgen -o ./src/generated -n sensor_luts ./calibration/temperature.toml
TOML Configuration
Each sensor requires a TOML configuration file and a CSV with its calibration samples.
CSV schema:
raw,calibration
Where raw is the ADC reading and calibration is the expected output value at that reading.
TOML schema:
name = "temp_sensor" # C identifier — used as <n>_lut in generated code
description = "ambient temperature" # Used in Doxygen comments and plot titles
table_resolution_bits = 12 # ADC resolution in bits (e.g., 12 → 4096 entries)
lut_type = "int16_t" # C type for the generated array
samples_csv = "./data/temperature_samples.csv" # Relative to this file, or absolute
# Optional
interpolation = "polynomial" # Overrides the CLI interpolation method for this LUT
Interpolation Methods
| Value | Description |
|---|---|
linear |
Linear interpolation between calibration points. Default. |
splines |
Cubic spline interpolation; smooth transitions between points. |
polynomial |
Best-fit polynomial up to degree 7; prone to oscillation with sparse data. |
piecewise |
Zero-order hold; constant value between points, step-like output. |
idw |
Inverse Distance Weighting; weighted average of all known points. |
Output
For each run, CLUTGen produces two files:
<name>.h— extern declarations with Doxygen comments, safe to include anywhere in the project<name>.c— full LUT definitions, compiled once and linked
Each configured sensor produces an array named <n>_lut, where n is the name field from the TOML:
#include "lookup_tables.h"
int val = temp_sensor_lut[adc_reading];
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clutgen-0.2.0.tar.gz.
File metadata
- Download URL: clutgen-0.2.0.tar.gz
- Upload date:
- Size: 17.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d44595413fee21ec80ef2cd0e2b37c719ccc9c36e5a5ba88ce4fe28f1cd34f1
|
|
| MD5 |
4820f106ce372268452911ce3c614232
|
|
| BLAKE2b-256 |
8ed9ba36f4bf8550ade2b6abccbd985b31540de6741f4b93c7b9d76b79f114d9
|
File details
Details for the file clutgen-0.2.0-py3-none-any.whl.
File metadata
- Download URL: clutgen-0.2.0-py3-none-any.whl
- Upload date:
- Size: 15.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf8baed332ef4e802adb0bc831e0c4055775fb66829804d6d523d9a55c6218f8
|
|
| MD5 |
ef4dfa70b9e9f5bafb3edaf1bca7eedb
|
|
| BLAKE2b-256 |
998a4926b0ded8d56611370f0acc2697e94775808497d028e9e0ee73da3bf3f2
|