# Scale a raw signal into engineering units

# Scale a raw signal into engineering units

Turn a raw reading, like volts or counts, into the unit you work in, like
`bar` or `N`. You check it against the live value before you save.

## Before you start

- An input that is running, so its channels have live readings.
- The numbers that convert the reading: a slope and offset, a sensitivity,
  two known points, polynomial coefficients, or a certificate table.

## Steps

1. Open **Inputs** and click the input's row. Its channels are listed under it.
2. Click a channel, then press **Edit calibration**. Some connectors keep
   calibration on their own page; the button then reads **Calibrate on the …
   connector** and opens it.
3. Under **Scaling**, pick a type and fill in its numbers:

   | Type | Fill in |
   |---|---|
   | **Linear** · `y = a·x + b` | **slope & offset**, a **sensitivity** from the sensor's certificate, or **two points** (what the channel reads → what it really is) |
   | **Polynomial** | **Coefficients**, low order first: `y = c0 + c1·x + c2·x² + …` |
   | **Table** | **Points**, raw → engineering; straight lines join them. **Add row**, or **paste two columns** |
   | **Thermocouple** | type K, from volts. Offered only when the channel reads volts |
   | **Formula** | an expression over this reading and other named channels, like `(x - bias) / gain` |

4. Under **Becomes**, type the unit the reading turns into, like `bar`. The
   raw unit is filled in for you.
5. Optional: add a **Label**, like `PT-100 shunt, cert 2026-114`.
6. Watch **Live now** at the bottom. It shows `raw … → …` with your draft
   applied to the live reading.
7. Press **Save calibration**.

## Share one calibration across channels

Under **Also apply to**, tick other channels that should use the same
calibration. Each shows what it would read. Edit it once later, and every
channel on it updates.

When you edit a shared calibration, **Save it to** asks whether to change all
its channels or only this one.

## Check it worked

The channel's row shows `raw … → …` in your unit, and **Scaled by** names the
calibration. On **Live**, the channel reads in the new unit.

| Also on the channel | Does |
|---|---|
| **Zero** | makes the channel read 0 at its current value, saved as a new record |
| **History** | lists earlier versions |
| **Remove calibration** | goes back to the raw value |

> **Note:** If an input's connector scales the value itself, the row says so.
> Use **Move scaling into calibration** rather than adding a second scale.

- [Name channels and units](https://phloem.ai/docs/inputs/channels/): Name a signal, set its unit
- [Pipelines](https://phloem.ai/docs/inputs/pipelines/): Shape channels after calibration
- [Verify that your data is arriving](https://phloem.ai/docs/guides/verify-data/): Read an input's row when nothing shows
