Analog Output
Applies to: Standalone controller only. IOcan has no analog voltage output pins. To send a scaled value to another device from an IOcan, use a CAN output instead. What this means
Overview
An Analog Output drives a real voltage on a hardware pin, through a digital-to-analog converter. Use it to feed another ECU's analog input, or to drive an analog gauge, by turning a value into a voltage.
The Range sets what full scale means. With Enable interpolation on, a two-point scaling maps your value onto a voltage — you give the command range you work in and the voltage you want at each end, and the app converts into the device's internal representation for you.
With interpolation off the command goes straight to the converter as a
0–1024 proportion of the Range, so 512 on the 5 V range produces 2.5 V.
That is the mirror of what an
Analog Input
does with interpolation off.
Feeding another ECU's analog input is the usual reason. If that ECU is on CAN as well, the ECU integrations may cover it more directly; the pins themselves are on the standalone controller pinout.
Prerequisites & hardware
- Output pin wired to the receiving analog input, with a common ground between the two devices. Without one, the receiver reads an offset that moves with load.
- A Range the receiving input can accept. Do not exceed its rating.
- A source — a driver, map or input — to command the value.
Add it in the app
- Add a new output and choose Analog Output as the type.
- Select the pin and give it a clear name (e.g.
Boost Gauge Drive). - Choose the Range first — everything else is relative to it.
- Turn Enable interpolation on and set the In and Out points, or leave it off and command a 0–1024 proportion of the Range directly.
- Drive it from the value you want to send.
Settings reference
| Setting | Meaning | Unit | Range / values | Notes |
|---|---|---|---|---|
| Range | The full-scale voltage this output can produce | — | 5 V, Internal 5 V, 12 V, Raw |
Out max cannot exceed it. Internal 5 V uses the device's own reference; Raw writes the DAC value with no scaling. |
| Enable interpolation | Applies the In → Out scaling | — | on / off | Off means the command goes straight through as a 0–1024 proportion of the Range — not a stepped or clamped version of your Out range. |
| In min / In max | Command range to scale from | your unit | sint32 | The low and high points of whatever drives this output. |
| Out min / Out max | Voltage range to scale to | V | sint32 | The voltage produced at In min and In max. |
Internally the command is a 0–1024 proportion of the Range, scaled against
the channel's own calibration for the Range you picked — the same scale the
analog input uses, and the app hides it in both
directions. Raw skips the calibration and writes the 0–1024 value straight to
the converter.
There is no clamping on this output. A command outside In min…In max extrapolates, and a resulting value above the Range asks for a voltage the converter cannot produce. If the source can go out of range, clamp it upstream — a Map Input clamps at its end points and is the easy way to do it.
Common settings
Analog Output also uses the shared Name and Pin settings. Two outputs
on the same pin raise fault 0x0014; a pin with no DAC raises 0x0082. See
Common IO settings.
Example — 0–5 V boost gauge drive
- Type Analog Output, name
Boost Gauge Drive, on the gauge's pin. - Range
5 V. - Enable interpolation on.
- In min/max
0/300— kPa, the range your boost channel produces. - Out min/max
0/5V — the full 0–5 V swing. - Command it from the boost-pressure channel. 0 kPa gives 0 V, 300 kPa gives 5 V, and 150 kPa gives 2.5 V.
If the boost channel can read above 300 kPa, put it through a Map Input first so the output does not try to exceed the range.
Example — a receiver that only accepts 0–4 V
Set Range 5 V and Out min/max 0/4 V. The output never goes
above 4 V, provided the command stays inside In min…In max — see the note on
clamping above, because nothing enforces that for you.
Troubleshooting
- The output does not follow the command in your units: Enable interpolation is off, so the command is being written straight through as a 0–1024 proportion of the Range.
- The output never reaches the top of your Out range: the Range is too small for the voltage you asked for. Out max cannot exceed the Range.
- Voltage goes above the Range: the command is outside In min…In max and is extrapolating. Clamp it upstream.
- The receiver reads a fixed offset: no shared ground, or the receiver's input range does not match the selected Range.
- Fault
0x0082at startup: the selected pin has no DAC.
Related
- PWM Output — a switched output instead of a voltage
- Map Output — reshape the command on its way here
- CAN Bus Output — the IOcan equivalent for sending a value
- Standalone pinout · Fault codes