Tacho Output

Applies to: Standalone controller only. IOcan has no tacho output — the driver is not part of its firmware, so the type cannot be created on that device. What this means

Overview

A Tacho Output turns an RPM value into a square wave whose frequency follows engine speed. Use it to drive an analog tachometer, a dash, or anything else that expects a pulse train rather than a CAN message.

Three things about this output are unlike the others, and all three catch people out:

  • There can be only one. The driver owns a single hardware timer, so a second tacho output is not created — see below.
  • Commanding zero stops the output entirely, rather than driving a steady level — see below.
  • The frequency is capped, and with a high tooth count the ceiling lands inside the engine's normal rev range — see below.

It is assigned to one of the PWM outputs on the standalone controller pinout. If your dash is on CAN instead, a CAN object output is the better route — the Ecumaster ADU guide is a worked example.

Prerequisites & hardware

  • Assign it to a pin with a power stage — one of the standalone controller's PWM outputs. The driver switches that pin directly, and it faults if the pin has no power stage (0x0081) or already carries another output (0x0014).
  • Wire the output to the instrument's signal input with a common ground between the device and the instrument.
  • Check what the instrument expects on that input. Some tachometer inputs are designed for a coil-negative or open-collector signal and need a pull-up fitted; the device will not supply one.
  • Have an engine speed value available to command the output.

Add it in the app

  1. Add a new output and choose Tacho Output as the type.
  2. Select the pin and give it an alias (e.g. Tacho).
  3. Set the tooth count.
  4. Drive the output from the engine speed channel.
  5. Calibrate the tooth count against the instrument — see below. Do not assume the correct value is the one printed on your trigger wheel.

Settings reference

Setting Meaning Unit Range / values Notes
Tooth count Pulses generated per engine revolution int32 Sets the output frequency for a given RPM. Set it by measurement, not from the sensor — see below.
Idle state Intended pin state while the output is stopped isLow, isHigh, isKeep Not implemented. The field exists in the configuration schema, but no firmware reads it. Setting it has no effect.

Frequency, and how to set the tooth count

The driver toggles the pin at:

toggles per second = RPM × tooth count ÷ 60

Each toggle is a single edge, so one complete high-then-low cycle takes two of them — the square wave arriving at the instrument is half the toggle rate. Whether that is what your gauge wants depends on whether it counts edges or whole pulses, and gauges differ.

So set the tooth count by measurement: hold a known engine speed, read what the instrument shows, and scale the tooth count by the ratio between the two until they agree. A value that is exactly half or exactly double what you expected is normal and is not a fault.

Two clamps apply, both to the toggle rate:

Clamp Approximate value Where it bites
Maximum 5 kHz RPM above 300000 ÷ tooth count
Minimum ~18 Hz RPM below roughly 1000 ÷ tooth count

Above the ceiling the output stops rising with engine speed — it holds at the cap and the gauge reads a constant from there upwards. With a tooth count of 60 that ceiling is 5000 RPM, which is inside the range of any engine this device is fitted to, so an over-large tooth count is the usual explanation for "the tacho climbs, then stops".

Below the floor the timer period saturates and the output holds at the minimum rather than continuing down. For a normal tooth count that is well below idle, but it shows up when bench-testing with small commanded values.

Only one tacho output per device

The driver uses one fixed hardware timer and one set of pin registers, both held at file scope. The first tacho output configured claims them; a second is not created, and no dedicated fault is raised for it — the configuration looks valid and the signal is simply absent.

If a tacho output does nothing at all, check the configuration for a second one before you check the wiring.

Commanding zero stops the output

Commanding 0 stops the timer outright. It does not drive a defined idle level, so the pin stays wherever the last toggle left it — high or low, and not predictable from the configuration. An instrument that distinguishes "no signal" from "zero RPM" will show that difference.

The Idle state setting looks like it addresses exactly this. It is not implemented — see the settings table above and the list of inert configuration fields.

Common settings

Tacho Output also uses the shared settings — alias and pin. See Common IO Settings.

Example — feeding a four-cylinder tachometer

  1. Type Tacho Output, name Tacho, on a free PWM output pin.
  2. Tooth count = 2 as a starting point — a four-cylinder tachometer conventionally expects two pulses per crank revolution.
  3. Command it from the engine speed channel.
  4. Hold a steady, known engine speed and compare the instrument against the RPM the device is reporting. If the gauge reads half, double the tooth count; if it reads double, halve it. Repeat until they agree, then check a second RPM further up the range.

Troubleshooting

  • No signal at all: a second tacho output is configured somewhere and this one lost the timer; or the commanded value is 0, which stops the output.
  • Gauge reads exactly half or exactly double: tooth count. Scale it and re-check — the edge-versus-pulse convention is the usual cause.
  • Gauge tracks correctly, then stops climbing: the 5 kHz ceiling. Reduce the tooth count and re-calibrate at the lower value.
  • Needle does not return to rest when the engine stops: commanding 0 stops the output rather than driving it low, and the pin holds its last state.
  • Fault 0x0014 on startup: two outputs are assigned to the same pin.
  • Fault 0x0081 on startup: the selected pin has no power stage — check the pinout.