

The FMC920 is a high-performance, low-power analog-to-digital converter (ADC) manufactured by Teltonika. Designed for precision data acquisition and signal processing, the FMC920 offers a flexible interface and supports multiple input channels, making it ideal for complex measurement systems. Its compact design and robust performance make it suitable for a wide range of applications, including industrial automation, medical instrumentation, and environmental monitoring.








| Parameter | Value |
|---|---|
| Manufacturer | Teltonika |
| Part ID | GPS |
| Resolution | 12-bit |
| Number of Input Channels | 4 |
| Input Voltage Range | 0–5 V |
| Sampling Rate | Up to 1 MSPS (Mega Samples Per Second) |
| Power Supply Voltage | 3.3 V or 5 V |
| Power Consumption | < 10 mW |
| Operating Temperature | -40°C to +85°C |
| Interface | SPI (Serial Peripheral Interface) |
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (3.3 V or 5 V) |
| 2 | GND | Ground connection |
| 3 | CH1 | Analog input channel 1 |
| 4 | CH2 | Analog input channel 2 |
| 5 | CH3 | Analog input channel 3 |
| 6 | CH4 | Analog input channel 4 |
| 7 | SCLK | SPI clock input |
| 8 | MISO | SPI data output (Master In Slave Out) |
| 9 | MOSI | SPI data input (Master Out Slave In) |
| 10 | CS | Chip select (active low) |
Below is an example of how to interface the FMC920 with an Arduino UNO using the SPI library:
#include <SPI.h>
// Define SPI pins for the FMC920
const int CS_PIN = 10; // Chip select pin for the ADC
void setup() {
// Initialize serial communication for debugging
Serial.begin(9600);
// Set up SPI communication
SPI.begin();
pinMode(CS_PIN, OUTPUT);
digitalWrite(CS_PIN, HIGH); // Set CS pin to inactive state
Serial.println("FMC920 ADC Initialized");
}
void loop() {
// Select the ADC by pulling CS low
digitalWrite(CS_PIN, LOW);
// Send a command to read from channel 1 (example command: 0x01)
byte command = 0x01; // Replace with actual command for your application
SPI.transfer(command);
// Read the ADC data (12-bit result split into two bytes)
byte highByte = SPI.transfer(0x00); // Read high byte
byte lowByte = SPI.transfer(0x00); // Read low byte
// Combine the two bytes into a 12-bit result
int adcValue = (highByte << 8) | lowByte;
// Deselect the ADC by pulling CS high
digitalWrite(CS_PIN, HIGH);
// Print the ADC value to the serial monitor
Serial.print("ADC Value: ");
Serial.println(adcValue);
delay(1000); // Wait for 1 second before the next reading
}
No Output or Incorrect Readings
Noise in ADC Readings
Overvoltage on Input Channels
SPI Communication Fails
Q: Can the FMC920 operate at 3.3 V?
A: Yes, the FMC920 supports both 3.3 V and 5 V power supply levels.
Q: What is the maximum sampling rate of the FMC920?
A: The FMC920 supports a maximum sampling rate of 1 MSPS.
Q: How many channels can be used simultaneously?
A: The FMC920 has 4 input channels, but only one channel can be sampled at a time.
Q: Is the FMC920 compatible with Arduino boards?
A: Yes, the FMC920 can be interfaced with Arduino boards using the SPI interface.