How to design an ADC circuit with an external sampled signal

Status
Not open for further replies.

nadd

Member level 1
Joined
Oct 3, 2022
Messages
33
Helped
0
Reputation
0
Reaction score
0
Trophy points
6
Activity points
322
Hi everyone,

I'm very new to designing a circuit. So, I need some help.

I need to design an ADC for an external, sampled, single-ended signal. The frequency is 1 Mhz, and desired speed is at least 4msps and the resolution is at least 14 bits.
I checked ADC chips and found LTC2314-14 to use. But, LTC2314-14 has inputs for S/H, and my input signal is already sampled. Would it be a problem? (LTC2314-14 Datasheet: https://www.mouser.com/datasheet/2/609/231414fa-2954440.pdf )

Also, I found ADS1605, this one has differential input, so will I need a single-ended to differential converter? (ADS1605 Datasheet: https://www.ti.com/lit/ds/symlink/ads1605.pdf?ts=1664705456913 )

If there are any different ADC chips that you would recommend, please let me know. (Preferably, easy to solder). Also, which additional components should I use in my design?

Thanks in advance!
 

Regarding post #38 results. What's the idea behind a sample delay equal to sine period? In case of 100 Hz the actual delay results in a kind of imperfect equivalent time sampling.

If you target to 2 MHz sampling rate, you can stop Arduino experiments, even if you don't use ultra slow UART data transmission an get rid of unsuitable float arithmetic, you can't achievec more than a few 100 kHz rate.

I suggest to visualize with pencil and paper sampling of 1 MHz sine at e.g. 2.1 MHz. How many samples do you need to determine phase and magnitude with a certain accuracy, e.g. 1 %?
 

Thanks again to all.

I realized lately that I have a very big noise problem.

The noise without any analog input.

Hence, whatever I do I see distorted results because of the noise. The analog input is max/min +/- 200mV, then the opamp amplifies(about 10 gain) and lifts(about +2V) the signal to min/max 0V to 4V. The noise probably also gets these processes. The actual analog input will be reflected signals from the ground, so it has not a proper shape. So, how can I apply a filter?

The code I use:

Code:
#include <SPI.h> // include the SPI library

const int csPin = 10; // CS pin for ADC
const int sdoPin = 12; // SDO pin for ADC
const int sckPin = 13; // SCK pin for ADC

void setup() {
Serial.begin(2000000); // start serial communication
pinMode(csPin, OUTPUT); // set CS pin as output
digitalWrite(csPin, HIGH); // set CS pin high to disable ADC communication
SPI.begin(); // start SPI communication
}

void loop() {
digitalWrite(csPin, LOW); // enable ADC communication

// configure the SPI communication with the ADC
SPISettings spiSettings(2000000, MSBFIRST, SPI_MODE3); // 1MHz clock frequency, MSB first, and SPI mode 3
SPI.beginTransaction(spiSettings); // start the transaction

// initiate a read operation on the ADC
unsigned int adcValue = SPI.transfer16(0x0000);

digitalWrite(csPin, HIGH); // disable ADC communication

// end the transaction
//SPI.endTransaction();

adcValue >>= 1;

float voltage = (adcValue * 4.096) / 16384; // calculate voltage based on reference voltage and ADC resolution

Serial.println(voltage); // print voltage to serial port
//delay(0.00001);
}

Best regards
 

Hi,
I realized lately that I have a very big noise problem.
I don´t think so. You simply don´t accept what we try to teach you. Timing still is not correct and not stable.
Not stable timing (jitter) results in noisy ADC results. (post #32).

--> Just use a scope to validate the ADC input signal.
I bet it´s not that noisy/distorted than the signal shown in post#42.

Klaus
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…