Pull to refresh

Три шага, которые увеличат шумы цифрового преобразователя

Reading time 4 min
Views 6K
Известно, что для контроля физических величин, например, температуры, вибрации, напряжения, тока, освещённости, звука и т.д. применяются различные датчики. У датчиков могут быть как цифровые выходы, так и аналоговые. С одной стороны, если выход цифровой, например, c SPI или I2C интерфейсом, или одиночный TTL, то датчик сразу подключается к микроконтроллеру. С другой стороны, для терморезистора, фотодиода, микрофона, токового шунта, делителя напряжения и т.д., понадобится преобразование аналогового сигнала в цифровой. В этом случае задача несколько усложняется, т.к. качество преобразования зависит уже от разработчика.

Существует ряд параметров, который определяется микросхемой преобразователя, а в остальном всё зависит от схемы подключения. Если предположить, что точно известна разрядность, полоса частот и частота дискретизации преобразователя, то в ряде случаев схема подключения состоит из резисторов схемы нормализации и возможно драйвера с ARC фильтром, тактового генератора и источника питания с нужным напряжением. Это далеко не полная схема подключения, но достаточная для того, чтобы оценить первые три шага, которые сведут на нет результат работы сколь угодно хорошей микросхемы преобразователя.

Для оценки последующих результатов, можно предположить, что диапазон входного напряжения — 0..1В, разрядность преобразователя — 24бита, эффективная полоса преобразования составляет 20кГц, а температура — комнатная.

Шаг первый — увеличение «тёплого звучания» резисторов, включенных последовательно со входом преобразователя или его драйвера.

Оценить результат в битах, которые будут в точности передавать все оттенки комнатной температуры можно по формуле теплового шума резистора. В этом важном деле поможет script для Matlab:

r = [100 1e3 1e4]';  % Resistance values.
t = 24; % Ambient temperature.
bw = 20e3;  % Frequency bandwidth.
u = 1;  % Voltage range.
N = 24; % Number of bits.

%% Thermal noise
u_t = 2*sqrt(physconst('Boltzmann')*(t+273.15)*r*bw);

%% Number of bits according to thermal noise.
thermal_bits = N+log2(u_t/u);

%% Plot the result
bar(log10(r),thermal_bits,0.2,'stacked');
title('Digitized thermal noise');
xlabel('Resistance, Ohm'), ylabel('Number of bits');
fig = gca;
fig.XTickLabel = {'100','1k','10k'};


Шаг второй — сокращение пассивных и активных фильтров в цепях питания преобразователя.

Например, в статье «Designing Second Stage Output Filters for Switching Power Supplies» утверждается, что увеличение количества секций фильтрации импульсного источника питания имеет смысл до уровня шума порядка 1мВ. Дальнейшее снижение шума достигается за счёт линейного стабилизатора напряжения.

У малошумящих линейных стабилизаторов уровень подавления шумов по питанию составляет 50..90дБ, а собственный шум в диапазоне частот от 10Гц до 100кГц — 1.6мкВ..20мкВ. Для оценки влияния шумов источника питания можно использовать следующий script:

N = 24; % Number of bits.
dcdc_noise = 1e-3;  % Output noise of the switching converter.
ldo_noise = [1.6e-6 6.5e-6 20e-6]'; % Output noise of the LDO.
ldo_psrr = [90 80 55]'; % PSRR of the LDO.

%% Number of bits according to LDO noise
ldo_noise_bits = N+log2(ldo_noise);
 
%% Number of bits according to LDO PSRR
ldo_psrr_bits = N+log2(dcdc_noise./db2mag(ldo_psrr));
 
%% Plot the result
bar([ldo_psrr_bits ldo_noise_bits],'grouped'),
title('Digitized power supply noise');
legend('PSRR','LDO','Location','northwest');
ylabel('Number of bits');
fig = gca;
fig.XTickLabel = {'ADM','LP','LT'};


Шаг третий — снижение требований к тактовому генератору.

Можно предположить, что относительно низкая максимальная частота сигнала способствует снижению требований к генератору. Для проверки этого предположения достаточно воспользоваться одним из многочисленных руководств по применению преобразователей. А также специальным калькулятором, с помощью которого можно рассчитать джиттер генератора для различных частот.

Для оценки влияния джиттера генератора на конечный результат удобно использовать следующий script:

bw = 20e3;  % Frequency bandwidth from previous step.
N = 24; % Number of bits from previous step.
fd = [1e6 6e6 40e6];    % Sampling frequency.
tjrms = [130e-12 26e-12 3.3e-12]'; % Jitter in RMS seconds vs fd.

%% Number of bits according to TJrms.
tj_noise_bits = N + log2(7.69*bw*tjrms);

%% Plot the result
bar(log10(fd),tj_noise_bits,0.2,'stacked');
title('Digitized jitter noise');
xlabel('Frequency, MHz'), ylabel('Number of bits');
fig = gca;
fig.XTick = log10(fd);
fig.XTickLabel = {'1','6','40'};


Как можно видеть, даже при относительно низких частотах дискретизации уровень шума из-за джиттера генератора представляет достаточно серьёзную проблему. Это ещё не резистор 10кОм, но уже почти малошумящий линейный стабилизатор. Однако с ростом частоты ситуация резко улучшается. Это даёт основание полагать, что разумный выбор типа преобразователя, может способствовать уменьшению уровня шумов. Например, при одном и том же темпе преобразования у сигма-дельта преобразователя гораздо меньше шансов пошуметь, по сравнению с преобразователем последовательного приближения.
Конечно, существует гораздо больше проблем, связанных с разработкой преобразователей сигналов. Но на мой взгляд, рассмотренные три шага представляют собой традиционный маршрут проектирования (у картинки есть свой автор, и я искренне надеюсь, что он не против):

Tags:
Hubs:
+13
Comments 21
Comments Comments 21

Articles