Analog Output » History » Version 3
Adam Klama, 06/21/2026 03:29 PM
| 1 | 1 | Adam Klama | # Analog Output |
|---|---|---|---|
| 2 | |||
| 3 | ## Overview |
||
| 4 | An **Analog Output** drives a real analog **voltage** on a hardware pin |
||
| 5 | (digital-to-analog conversion). Use it to feed the analog input of another ECU, |
||
| 6 | or to drive an analog gauge or meter, by turning a control value into a voltage. |
||
| 7 | |||
| 8 | You set an **output voltage range/reference** and a scaling that maps your input |
||
| 9 | (engineering) value onto a voltage within that range. |
||
| 10 | |||
| 11 | ## Prerequisites & hardware |
||
| 12 | - Wire the output pin to the analog input it should drive, with a **common |
||
| 13 | ground** between the controller and the receiving device. |
||
| 14 | - Pick a **range** the receiving input can accept (e.g. 0–5 V or 0–12 V); do not |
||
| 15 | exceed its input rating. |
||
| 16 | - Have a source value (a map, driver or input) ready to command the output. |
||
| 17 | |||
| 18 | ## Add it in the app |
||
| 19 | 1. Add a new output and choose **Analog Output** as the type. |
||
| 20 | 2. Select the **pin** and give it an **alias** (e.g. `Boost Gauge Drive`). |
||
| 21 | 3. Choose the output **range**, then set the **in** and **out** scaling points. |
||
| 22 | 4. Drive the output from a map/driver that supplies the input value. |
||
| 23 | |||
| 24 | ## Settings reference |
||
| 25 | |||
| 26 | | Setting | Meaning | Unit | Range / values | Notes | |
||
| 27 | |---|---|---|---|---| |
||
| 28 | | **Range** | Output voltage scale / reference | — | `5V`, `Internal 5 V`, `12V`, `Raw` | Sets the full-scale voltage the **Out** values refer to. `Internal 5 V` uses the controller's own 5 V reference; `Raw` outputs the unscaled DAC value. | |
||
| 29 | | **Enable interpolation** | Scale the input through the in/out points | — | on / off | On = interpolate input to output voltage; off = pass the value straight through. | |
||
| 30 | | **In min / In max** | Input (engineering) range to scale **from** | source unit | sint32 | The source low/high points. | |
||
| 31 | | **Out min / Out max** | Output voltage range to scale **to** | mV | sint32 | The voltage produced at In min / In max, within the selected range. | |
||
| 32 | |||
| 33 | **Scaling:** the input value is mapped from `In min…In max` to `Out min…Out max` |
||
| 34 | using [two-point interpolation](Scaling_and_Maps#two-point-interpolation). |
||
| 35 | |||
| 36 | ## Common settings |
||
| 37 | Analog Output also uses the shared settings — alias and pin. See [Common IO Settings](Common_IO_Settings). |
||
| 38 | |||
| 39 | ## Example — 0–5 V boost gauge drive |
||
| 40 | 1. Type **Analog Output**, alias `Boost Gauge Drive`, on the gauge's pin. |
||
| 41 | 2. **Range = 5V**, **Enable interpolation on**. |
||
| 42 | 3. **In min/max** `0`/`300` (kPa) → **Out min/max** `0`/`5000` (mV). |
||
| 43 | 4. Command it from the boost-pressure channel; 0 kPa gives 0 V, 300 kPa gives 5 V. |
||
| 44 | |||
| 45 | ## Troubleshooting |
||
| 46 | - **Output voltage too high/low for the device:** pick a smaller **Range** or lower |
||
| 47 | the **Out max** value. |
||
| 48 | - **Voltage doesn't change with the command:** check **Enable interpolation** is on |
||
| 49 | and that the **In min/In max** span matches the source's real range. |
||
| 50 | - **Reads as a fixed offset on the receiver:** confirm a shared **ground** and that |
||
| 51 | the receiver's range matches the selected **Range**. |
||
| 52 | |||
| 53 | ## Related |
||
| 54 | - [PWM Output](PWM_Output) — for a switched/PWM signal instead of a voltage. |
||
| 55 | - [Tacho Output](Tacho_Output) — generated tacho/frequency signal. |