Analog Output » History » Revision 2
Revision 1 (Adam Klama, 06/21/2026 03:26 PM) → Revision 2/3 (Adam Klama, 06/21/2026 03:27 PM)
# Analog Output ## Overview An **Analog Output** drives a real analog **voltage** on a hardware pin (digital-to-analog conversion). Use it to feed the analog input of another ECU, or to drive an analog gauge or meter, by turning a control value into a voltage. You set an **output voltage range/reference** and a scaling that maps your input (engineering) value onto a voltage within that range. ## Prerequisites & hardware - Wire the output pin to the analog input it should drive, with a **common ground** between the controller and the receiving device. - Pick a **range** the receiving input can accept (e.g. 0–5 V or 0–12 V); do not exceed its input rating. - Have a source value (a map, driver or input) ready to command the output. ## Add it in the app 1. Add a new output and choose **Analog Output** as the type. 2. Select the **pin** and give it an **alias** (e.g. `Boost Gauge Drive`). 3. Choose the output **range**, then set the **in** and **out** scaling points. 4. Drive the output from a map/driver that supplies the input value. ## Settings reference > Schema: `config/DacConfiguration.proto`. | Setting | Meaning | Unit | Range / values | Notes | |---|---|---|---|---| | **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. | | **Enable interpolation** | Scale the input through the in/out points | — | on / off | On = interpolate input to output voltage; off = pass the value straight through. | | **In min / In max** | Input (engineering) range to scale **from** | source unit | sint32 | The source low/high points. | | **Out min / Out max** | Output voltage range to scale **to** | mV | sint32 | The voltage produced at In min / In max, within the selected range. | **Scaling:** the input value is mapped from `In min…In max` to `Out min…Out max` using [two-point interpolation](Scaling_and_Maps#two-point-interpolation). ## Common settings Analog Output also uses the shared settings — alias and pin. See [Common IO Settings](Common_IO_Settings). ## Example — 0–5 V boost gauge drive 1. Type **Analog Output**, alias `Boost Gauge Drive`, on the gauge's pin. 2. **Range = 5V**, **Enable interpolation on**. 3. **In min/max** `0`/`300` (kPa) → **Out min/max** `0`/`5000` (mV). 4. Command it from the boost-pressure channel; 0 kPa gives 0 V, 300 kPa gives 5 V. ## Troubleshooting - **Output voltage too high/low for the device:** pick a smaller **Range** or lower the **Out max** value. - **Voltage doesn't change with the command:** check **Enable interpolation** is on and that the **In min/In max** span matches the source's real range. - **Reads as a fixed offset on the receiver:** confirm a shared **ground** and that the receiver's range matches the selected **Range**. ## Related - [PWM Output](PWM_Output) — for a switched/PWM signal instead of a voltage. - [Tacho Output](Tacho_Output) — generated tacho/frequency signal.