Comparison Of Variable Reluctance Interface Options

When building a DIY engine control system for your vehicle you need to include some sort of RPM/Position input. This is fairly straight forward for square wave signals as produced by Hall and Optical sensors, however for VR sensors, you need a robust conditioning solution. This page is aimed to help you make an educated decision on what to use in your system.

What Are The Options?

Broadly, there are only really four options: MAX992X, NCV1124, LM1815, and for MS users, the built-in discrete design. The MAX992X based solutions are vastly superior to the other options, which are, therefore, only included for the sake of comparison. A synopsis of each option is given below. A table of properties follows and is supplemented by a set of notes explaining non-obvious things in detail.


BrickRPM is a tiny board (about the size of a US dime) which uses the MAX9926 chipset to provide two channels of noise-resistant VR conditioning in a convenient format suitable for those with modest soldering skills.

JBPerf Dual VR V2.0

JBPerf's Dual VR V2.0 is a small board, nearly double the size and cost of BrickRPM, but otherwise comparable. The main difference is in the power supply which is self contained and accepts 12V directly.

SymtechLabs Cam Sync Module

SymtechLabs' Cam Sync Module is a tiny board that uses the MAX9924 IC to provide a single VR conditioner. Because it's only single channel, the chart below contains information for two units so as to be comparable with the other options.


It's possible to build a DIY MAX9926 based solution, however the fine pitch soldering is too difficult for most hobbyists. Also, by the time you've had the IC, breakout board, and other components shipped, you won't save much over the BrickRPM module.

NCV1124 Based

Like the MAX992X ICs, this is a tiny surface mount VR conditioner, however unlike the MAX992X ICs the NCV1124 does not have an adaptive threshold. Because of this it's much more susceptible able to noise than the Maxim chipset. Another significant downside of the NCV1124 is that it doesn't use a differential input, this also contributes to sub-optimum noise performance.

LM1815 Based

Once the flag-ship VR IC, the LM1815 is now an unattractive option with a number of significant disadvantages when compared to MAX9926 based solutions. Because these ICs are in DIP format, they can be readily soldered by amateurs, and are sometimes still used for this reason.

MS V3.0 Built-in

If you are installing a MegaSquirt V3.0 based EMS and only need one VR channel, it's tempting to use the built in discrete VR conditioner. Unfortunately this design is prone to problems with noisy signals and requires tuning making it a prime target for an upgrade.


The following table contains a side by side listing of some of the main attributes of each option. Where a detailed explanation is available, it is referenced with a number and clickable link to the notes section further down.

Properties BrickRPM JBPerf Dual VR SymtechLabs VR DIY MAX9926 NCV1124 LM1815 (1) MS V3.0 (2)
Price 25USD 45USD 70USD (for 2) (12) ~20USD ~20USD ~35USD N/A
Size (3) Tiny Small Small (for 2) (12) Medium Medium Large Huge
Noise Excellent Excellent/Poor (4) Excellent/Poor (4) User's choice Average Average Poor
Inputs (5) 500mW 1210 333mW 0805 Unknown (13) User's choice User's choice N/A N/A
Power 5V input 12V input (6) 5V input, 12V option (6) 5V input 5V input 5V input N/A
Mounting EMS Only (7) EMS/Engine bay (4)(6) EMS/Engine bay (4)(6) User's choice (7) User's choice (7) EMS Only (7) N/A
Output Maxim value Fully-loaded (8) Unknown (14) User's choice N/A N/A N/A
Mounting Solder or DIP-8 socket Solder or screws (9) Solder or socket strips User's choice User's choice Screws only N/A
Convenience Excellent Very good (9) Very good (12) Very poor Very poor Average Good
Dynamic range Excellent (10) Excellent (10) Excellent (10) Excellent (10) Average Average Poor (11)

The new BrickRPM board is the clear winner for the task at hand. If you need a VR interface board for your new project, be it for engine position or wheel speed, choose BrickRPM to get the job done right, on time and on budget. Likewise, if you're installing a MegaSquirt product and aren't looking forward to the VR noise troubles that they're famous for, BrickRPM provides you with robust signal conditioning and fits neatly in the V3.0 prototyping area. If you need further convincing, take the time to read through the notes below - they explain everything in detail. At the bottom are a few photographs comparing BrickRPM with its closest competitor and assorted US currency.


  1. Any LM1815 solution including the Zeal Engineering Daughterboard which is based on this chipset. The price listed is for the Zeal Engineering Daughterboard kit with components. Please note that it contains some other simple circuits and could therefore be cheaper if it was a VR-only design.
  2. Only available to MegaSquirt users running V3.0 and V3.57 main boards. MS V2.2 and V1.0 boards did not have provision for a variable reluctance input. The V3.0 and V3.57 boards only have one channel built in.
  3. From left to right: 18x15mm, 28x18mm, ~20x15mm (for two), ~100x43mm, ~140x30mm (for two). Note, the SymtechLabs and Zeal boards are based on JPEG images and known size of the footprints, and the V3.0 discrete design is guessed and fairly inaccurate.
  4. Only excellent when used inside the ECU enclosure with a short wiring run from the output to the input of the EMS CPU. When used remotely near the VR sensor the output wire is very sensitive to noise. This situation is made worse by use of 1k pullup resistors on the outputs, already a ten times heavier load than the chipset was intended to drive. Due to that, it's not possible to place a useful shunt load at the input of the EMS. Even if this were not the case, the MAX9926 is not capable of driving the loads required to eliminate noise. In short, it only has high noise immunity on its inputs.
  5. Power handling is required to be high due to the high voltage that the inputs can see on some setups, and the fact that the IC clamps its input pins to the power supply rails. BrickRPM is capable of handling a maximum of 146VRMS continuous assuming suitable thermal conductivity out of the board. The JBPerf board is capable of handling 120VRMS continuous with the same assumption. Peak Voltages higher than these figures are acceptable with a VR wave form due to its lower energy density compared to a pure sine wave.
  6. On-board power supplies in the JBPerf unit and optionally in the SymtechLabs unit are designed to allow remote mounting of the board near the VR sensor and away from the EMS. This might seem attractive, however it's a bad idea (see 4) and offers no practical benefit in the correct installation inside the EMS box. It only serves to inflate the price, take up more space, and reduce reliability through greater part count.
  7. It is possible to build your own supply, or run 5V from the EMS box to the board, however it is strongly recommended that you don't do that (see 4).
  8. The JBPerf Dual V2.0 board is populated with 1k pull up resistors on the MAX IC outputs resulting in a 5mA load while in the low state. Although the datasheet states that the specifications are under conditions of a 5V 1k pull up, it recommends using a value of 10k. We spoke with a Maxim engineer who said "You aren't going to get great performance beyond 2mA. If you need this to output a great amount of current and still get reasonable data I would recommend buffering it with a high power op amp or an external FET.". Irrespective of his opinion loading the device further than the on-board 1k resistor is a very bad idea. As such it's not possible to use a load resistor or drive an LED at the ECU end of the wires when mounted externally. In contrast, if remote-mounting a BrickRPM board (NOT recommended) the included 10k resistor allows an additional 1.2k pull up at the ECU end of the wire to combat noise.
  9. The board is a little big and heavy for long term reliability with just soldered connections for mounting, so should be screwed down as recommended by JBPerf. Only use the plastic screws/nuts/spacers that are provided, though, or you may damage the power supply. The diameter of the head of an M3 or #5 screw that fits the 3.2mm hole overlaps both 5V and ground traces and could cause a short. Finally, the spacing of the header holes is 21.6mm, putting one set exactly half way between the holes of your perf board, assuming that the other is aligned. This precludes mounting it close to the receiver board and forces the pins used to be on an angle ruling out socket use.
  10. The MAX992X ICs have adaptive peak threshold and can therefore cleanly receive signals in the range of tens of millivolts to hundreds of volts.
  11. This circuit requires tuning to specific voltage levels. What this means is that sometimes when tuned correctly for high RPM use, no signal is shown at low RPM. Conversely when tuned correctly for low RPM operation, noise in the higher ranges can sneak through.
  12. This board only has a single VR interface on it, therefore the cost is doubled for two inputs. Even if only one was required, BrickRPM would still be a cheaper option, and nearly as small. Convenience is marked as very good with the assumption that two are required. If only one is required the convenience level is excellent. Size is rated as small, and not tiny, because you only get half of the functionality for a similar size.
  13. SymtechLabs, in order to lower power handling requirements and board size have opted for 20k input resistors. Unfortunately this has a negative impact on noise immunity if used as-is, without a shunt resistor.
  14. From the available photographs it appears to use a 4.2k or 4.7k pull up resistor. This isn't too bad, allowing some headroom for additional loading if used remotely, though not as much as the Maxim-recommended 10k value does.