

The AD654 is a precision voltage-to-frequency converter manufactured by Analog Devices. It is designed to convert an analog input voltage into a frequency output that is linearly proportional to the input. This component is widely used in applications requiring high accuracy, low cost, and efficient signal processing.








The following table outlines the key technical specifications of the AD654:
| Parameter | Value |
|---|---|
| Supply Voltage Range | +4.5 V to +36 V |
| Input Voltage Range | 0 V to 10 V |
| Output Frequency Range | 1 Hz to 500 kHz |
| Linearity Error | ±0.03% (typical) |
| Temperature Range | 0°C to +70°C (commercial grade) |
| Supply Current | 1.2 mA (typical) |
| Output Drive Capability | TTL/CMOS compatible |
| Package Type | 8-pin PDIP (AD654JNZ) |
The AD654 is an 8-pin device. The pinout and descriptions are as follows:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VIN | Analog input voltage (0 V to 10 V). This is the signal to be converted to frequency. |
| 2 | GND | Ground reference for the device. |
| 3 | RSET | External resistor to set the full-scale frequency. |
| 4 | CSET | External capacitor to set the frequency range. |
| 5 | V+ | Positive supply voltage (+4.5 V to +36 V). |
| 6 | FOUT | Frequency output signal (TTL/CMOS compatible). |
| 7 | NC | No connection. Leave this pin unconnected. |
| 8 | VREF | Internal reference voltage output (nominally 1.2 V). |
The AD654 can be used with an Arduino UNO to measure an analog voltage and convert it to a frequency signal. Below is an example code snippet:
// Example: Reading frequency output from AD654 using Arduino UNO
// Connect AD654 FOUT pin to Arduino digital pin 2 (interrupt pin)
const int freqPin = 2; // Pin connected to AD654 FOUT
volatile unsigned long pulseCount = 0; // Variable to store pulse count
void setup() {
pinMode(freqPin, INPUT); // Set freqPin as input
attachInterrupt(digitalPinToInterrupt(freqPin), countPulses, RISING);
Serial.begin(9600); // Initialize serial communication
}
void loop() {
delay(1000); // Wait for 1 second
noInterrupts(); // Disable interrupts to read pulseCount safely
unsigned long frequency = pulseCount; // Frequency in Hz
pulseCount = 0; // Reset pulse count
interrupts(); // Re-enable interrupts
Serial.print("Frequency: ");
Serial.print(frequency);
Serial.println(" Hz");
}
void countPulses() {
pulseCount++; // Increment pulse count on each rising edge
}
No Output Signal:
Inaccurate Frequency Output:
High Frequency Jitter:
Q: Can the AD654 operate with a single supply voltage?
A: Yes, the AD654 is designed to operate with a single supply voltage ranging from +4.5 V to +36 V.
Q: What is the maximum output frequency of the AD654?
A: The maximum output frequency is 500 kHz, depending on the values of RSET and CSET.
Q: Is the output signal compatible with microcontrollers?
A: Yes, the output signal at the FOUT pin is TTL/CMOS compatible and can be directly interfaced with microcontrollers like Arduino.
Q: Can I use the AD654 for bidirectional voltage-to-frequency conversion?
A: No, the AD654 is designed for unidirectional voltage-to-frequency conversion only.