For a standard industrial 0–10V input signal scaled to a 0–10kHz output, a 10V input converts directly to 10,000 Hz (10 kHz). The transfer function relies on a fixed scaling factor ($K$) of 1,000 Hz/V. The governing formula is $f_{out} = V_{in} \times K$. Substituting our target values: $f_{out} = 10\text{V} \times 1000\text{ Hz/V} = 10,000\text{ Hz}$. This linear relationship allows microcontrollers without dedicated analog-to-digital converters (ADCs) to measure precise DC voltages simply by reading a digital square wave frequency via a GPIO interrupt.

The Transfer Function and ±20% Scaling Table

The assumption that fixes this answer is the hardware timing network. In a classic analog voltage to frequency converter (VFC) like the Texas Instruments LM331, the scaling factor $K$ is not arbitrary; it is physically set by an external timing resistor ($R_t$), a timing capacitor ($C_t$), and a scaling resistor ($R_s$). The internal charge-balancing architecture dictates the exact transfer function:

f_{out} = V_{in} / (2.09 \times R_t \times C_t \times R_s)

To achieve our 1,000 Hz/V scaling factor, you would typically select $C_t = 0.01\mu\text{F}$, $R_t = 6.8\text{k}\Omega$, and $R_s = 14.3\text{k}\Omega$. Because analog components have tolerances, $R_s$ is usually implemented as a 10kΩ fixed resistor in series with a 10kΩ trimmer potentiometer to allow for exact bench calibration.

Below is the expected output frequency for a ±20% range around the 10V nominal full-scale input. This overrange table is critical for designing the input protection clamping diodes on your microcontroller's capture pin.

Input Voltage ($V_{in}$) Expected Frequency ($f_{out}$) Period ($T$) System State
8.0V 8,000 Hz 125.0 µs Normal Operating Range
9.0V 9,000 Hz 111.1 µs Normal Operating Range
10.0V 10,000 Hz 100.0 µs Full Scale (Nominal Max)
11.0V 11,000 Hz 90.9 µs +10% Overrange (Valid)
12.0V 12,000 Hz 83.3 µs +20% Overrange (Clamp Required)

Shifting Input Ranges: 0-5V, 0-10V, and Mains Voltage Warnings

A common point of confusion for makers transitioning from AC power wiring to analog signal conditioning is asking how the conversion shifts for 120V vs 230V vs 3-phase. The direct answer: it doesn't, because applying mains AC to a VFC will cause catastrophic silicon failure. Voltage to frequency converters operate strictly on low-voltage DC control signals. If you need to monitor 120V/230V AC mains frequency, you do not use a VFC; you use a step-down transformer, a zero-crossing detector (like an H11AA1 optocoupler), and a microcontroller timer.

However, shifting between standard DC control ranges drastically alters your component selection:

  • 0–5V to 0–10kHz: If your sensor outputs 0-5V but your PLC expects 10kHz at full scale, your scaling factor $K$ must double to 2,000 Hz/V. You achieve this by halving the value of the scaling resistor ($R_s$) in the LM331 circuit, dropping it from 14.3kΩ to roughly 7.15kΩ.
  • Bipolar ±10V Signals: Standard VFCs like the LM331 only accept positive voltages. If your servo drive outputs a bipolar ±10V velocity command, feeding -10V into pin 1 will destroy the IC. You must either use a precision summing amplifier to offset the signal to 0-10V before the VFC, or switch to a specialized bipolar VFC architecture like the Analog Devices AD650, which supports bidirectional current integration.
Callout Tip: When scaling down from 10V to 5V inputs, remember that your resolution effectively halves. A 12-bit microcontroller timer counting a 5kHz signal over a 1-second gate time yields 5,000 discrete steps. The same timer counting a 10kHz signal yields 10,000 steps. Always maximize the VFC output frequency to match your microcontroller's maximum reliable interrupt capture rate (usually 50-100kHz for standard 16MHz AVRs).

When the Conversion Becomes Meaningless

The mathematical conversion of Volts to Hertz breaks down and becomes meaningless under three specific bench conditions:

  1. Input Noise Exceeds LSB: If your 0-10V signal has 50mV of switching noise from a nearby buck converter, and your full-scale is 10V (1,000 Hz/V), that noise translates to ±50 Hz of jitter on your output square wave. If your microcontroller's timing resolution cannot filter this jitter, the frequency reading is meaningless. Fix: Add a 100nF ceramic and 10µF tantalum bypass network directly at the VFC input pin.
  2. Missing or Leaky Integration Capacitor: The internal integrator relies on a high-quality external capacitor (typically polypropylene or polystyrene). If you substitute a cheap Y5V ceramic capacitor, its capacitance drops significantly under DC bias and temperature shifts, destroying the linearity of the $f_{out}$ curve.
  3. Source Impedance Mismatch: VFC inputs are not infinite-impedance voltmeters. The LM331 input bias current is typically 10nA, but the dynamic charging pulses require a low-impedance drive. If your signal source has an output impedance greater than 10kΩ, the voltage at the VFC pin will sag during the integration cycle, resulting in a non-linear frequency drop at higher voltages.

Decision Tree: Selecting Your VFC Integrated Circuit

Do not default to the first IC you find in a legacy textbook. Use this decision matrix to select the exact part number for your 2026 build.

Application Constraint Required Performance Concrete Part Pick Approx. Unit Cost
Hobbyist / Basic Arduino Telemetry 0.1% Linearity, Max 10kHz LM331 (TI / National) $1.50 - $2.50
Industrial 4-20mA / Precision Lab 0.05% Linearity, Max 1MHz AD650 (Analog Devices) $18.00 - $24.00
Space-Constrained / No Analog Tuning Digital I2C Config, Silicon Oscillator LTC6990 (Analog Devices) $2.00 - $3.00
High-Voltage Isolated Feedback Galvanic Isolation Required AD7742 (with ADuM1201) $12.00 + Isolator

Default Recommendation: If you are building a standard 0-10V industrial sensor interface for an ESP32 or Arduino Mega and need a balance of cost and ease of calibration, buy the LM331. If you require better than 0.1% accuracy across a wide temperature range without manual trimpot tuning, skip the analog charge-balancers entirely and use the LTC6990 TimerBlox IC, which acts as a digitally programmed VFC via a single resistor or I2C interface.

FAQ: Bench Troubleshooting and Calibration

Q: My LM331 output frequency is stuck at a fixed value regardless of input voltage. What failed?
A: Check the timing capacitor ($C_t$) on pin 5. If this capacitor is shorted, or if the timing resistor ($R_t$) on pin 3 is open, the internal one-shot timer cannot reset. The IC will output a continuous high or low state, or a fixed frequency dictated by parasitic board capacitance. Verify $R_t$ and $C_t$ with a multimeter out-of-circuit.

Q: Can I power a VFC directly from the same 5V switching regulator that powers my microcontroller?
A: You can, but you shouldn't. Switching regulators introduce high-frequency ripple on the VCC rail. Because VFCs use internal current mirrors referenced to VCC, any ripple on the power supply directly modulates the output frequency, creating sideband noise. Power the VFC from a dedicated linear LDO (like an LM78L05 or LP2950) fed from the main supply.

Q: How do I calibrate the 10,000 Hz full-scale point without a frequency counter?
A: Feed a precise 10.00V reference into the input. Connect the VFC output to an Arduino digital pin configured with an interrupt. Write a sketch that counts pulses for exactly 1.000 seconds (using the millis() function or a hardware timer). Adjust the $R_s$ trimpot until the serial monitor reads exactly 10000. For higher precision, use the ESP32's built-in PCNT (Pulse Counter) peripheral, which handles high-frequency counting in hardware without CPU overhead.