Jump to content

    
Sign in to follow this  
zWitCh

Нелинейности внутреннего АЦП в STM32

Recommended Posts

А это не вы писали: "Вроде все хорошо, помехи и выбросы есть и на осциллограмме, они связаны с тем что источник плохой и длинными проводами подключен"?

 

Чудеса... :laughing:

источник СИГНАЛА который я подаю на вход ЦАП, и да это я написал, слово источник не всегда источник питания тем более когда оговорено иное...

Share this post


Link to post
Share on other sites
(проверено осциллографом на хорошей развертке)

ШУМИТ... или источник питания, или опорного напряжения (если оно есть), или измеряемый сигнал. На таких частотах, или импульсы короткие, так, что вы их не видите своим осциллографом.

 

источник СИГНАЛА который я подаю на вход ЦАП, и да это я написал, слово источник не всегда источник питания тем более когда оговорено иное...

ах, если СИГНАЛА, тогда его и фильтруйте!

 

Сами путаете:

"проводами на один из входов подключил источник питания регулируемый, и начал плавно его регулировать попутно записывая все измерения"

Share this post


Link to post
Share on other sites
вот тут была картинка в самом начале:

Нет, я не то хотела. Подгонку линейной функцией до и после. И вот эти числа. На глаз не видно по Вашим картинкам.

Share this post


Link to post
Share on other sites
А вход опорного напряжения имеет адекватный конденсатор? А на входе?

вход Vref отсутствует в моем корпусе, на входе Vdda стоит 10u и 0.1u плюс дроссль

Share this post


Link to post
Share on other sites
вход Vref отсутствует в моем корпусе, на входе Vdda стоит 10u и 0.1u плюс дроссль

А можете тактовую частоту уменьшить? И добавить сверху конденсатор... 10н?

Share this post


Link to post
Share on other sites
Нет, я не то хотела. Подгонку линейной функцией до и после. И вот эти числа. На глаз не видно по Вашим картинкам.

ну я уже новые данные поимел я подовая на вход ШУМ имею кучу значений разных с АЦП, так вот среди этих значений отсутствуют определенные значения всегда, в частности там нет цифр в промежутке 1024-1048, что мне кажется просто невероятным что бы в течении получаса сыпался условно случайный сигнал и в нем ниразу не встретилось напряжение эквивалентное значению с 1024 по 1048 но при этом все другие встречаются великое множество раз...

 

ШУМИТ... или источник питания, или опорного напряжения (если оно есть), или измеряемый сигнал. На таких частотах, или импульсы короткие, так, что вы их не видите своим осциллографом.

 

 

ах, если СИГНАЛА, тогда его и фильтруйте!

 

Сами путаете:

"проводами на один из входов подключил источник питания регулируемый, и начал плавно его регулировать попутно записывая все измерения"

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

 

Зачем мне фильтровать сигнал, меня не смущают момехи, напротив меня смущает то что АЦП не при каких входных напряжениях не выдает на выходе скажем "1030" или "1035" и еще пару десятков значений, как это связано с питанием которое мало того что независимое так еще и чистое, ок, допустим помехи, что это за такие синхронные помехи которые сбивают именно АЦП и именно тогда когда он хзочет выдать любую цифру в промежутке от 1024 до 1048 но при этом НИКОГДА не сбивают его в других случаях и в других значениях его передаточная функция гладкая...

Share this post


Link to post
Share on other sites
кажется просто невероятным что бы в течении получаса сыпался условно случайный сигнал и в нем ниразу не встретилось напряжение эквивалентное значению с 1024 по 1048 но при этом все другие встречаются великое множество раз...

Так конденсаторный АЦП внутри? Вот эти конденсаторы летают там, заряжаются, разряжаются. Один и них самый большой. На половине шкалы. После него внешний может не успеть зарядиться.

Share this post


Link to post
Share on other sites
Зачем мне фильтровать сигнал, меня не смущают момехи, напротив меня смущает то что АЦП не при каких входных напряжениях не выдает на выходе скажем "1030" или "1035" и еще пару десятков значений, как это связано с питанием которое мало того что независимое так еще и чистое, ок, допустим помехи, что это за такие синхронные помехи которые сбивают именно АЦП и именно тогда когда он хзочет выдать любую цифру в промежутке от 1024 до 1048 но при этом НИКОГДА не сбивают его в других случаях и в других значениях его передаточная функция гладкая...

Еще раз внушаю - импульсные помехи лезут в АЦП, неважно, каким путем, и сбивают механизм последовательного приближения. Если должен быть код 1026, а старший разряд не установился, потому что помеха в момент его определения сбила его в 0, то больше 1023 уже не набрать.

Share this post


Link to post
Share on other sites
Еще раз внушаю - импульсные помехи лезут в АЦП, неважно, каким путем, и сбивают механизм последовательного приближения. Если должен быть код 1026, а старший разряд не установился, потому что помеха в момент его определения сбила его в 0, то больше 1023 уже не набрать.

Какая-то у Вас очень проницательная (избирательная) помеха.

Share this post


Link to post
Share on other sites
Какая-то у Вас очень проницательная (избирательная) помеха.

да вот и я о том же, вобщем пока мы тут общались на вход АЦП гнал я псевдослучайный сигнал (пилу с генератора), затем вывел всё что оцифровывал мне мой АЦП, так вот в его результатах напрочь отсутствует целая груда значений, то есть при любом входе он никогда не выдает определенные цифры на выходе...

post-19654-1393422019_thumb.png

На данной диаграмме хорошо видно что определенные значения я на выходе у АЦП не получаю никогда, хотя на входе была достаточно гладкая функция без разрывов...

 

Еще раз внушаю - импульсные помехи лезут в АЦП, неважно, каким путем, и сбивают механизм последовательного приближения. Если должен быть код 1026, а старший разряд не установился, потому что помеха в момент его определения сбила его в 0, то больше 1023 уже не набрать.

да все верно, только вот что это за помеха то такая которая сбивает только когда у меня ацп хочет выдать 1024 - 1049 (и еще пары диапазонов которые всегда одни и теже и мало вообще от чего зависят, просто есть) но никогда не сбивает при других выходных значениях, при этом источник питания и источник сигнала независимы и питание чистое...

Edited by zWitCh

Share this post


Link to post
Share on other sites
так вот в его результатах напрочь отсутствует целая груда значений,

Какая-то у Вас очень проницательная (избирательная) помеха.

:laughing:

Share this post


Link to post
Share on other sites
да все верно, только вот что это за помеха то такая которая сбивает только когда у меня ацп хочет выдать 1024 - 1049 (и еще пары диапазонов которые всегда одни и теже и мало вообще от чего зависят, просто есть) но никогда не сбивает при других выходных значениях, при этом источник питания и источник сигнала независимы и питание чистое...

Так можете тактовую частоту понизить на порядок?

Я даже догадываюсь, где еще сбоит.

Share this post


Link to post
Share on other sites
Так можете тактовую частоту понизить на порядок?

Я даже догадываюсь, где еще сбоит.

и так, теперь я вместо 72 МГц по дефолту, ставлю принудительно частоту как на Дискавери - 24 МГц и о чудо, помехи уже ничего не сбивают ни по питанию не по сигнальной шине, АЦП магическим образом обретает гладкую характеристику...

 

данные с АЦП при частоте 72 Мгц на ядре, хорошо видно дырки, определенные значения не выдаются АЦПхой не при каких входных воздействиях:

post-19654-1393423981_thumb.png

 

Данные с АЦП на частоте 24 Мгц, характеристика гладкая, нет дырок, всем входным воздействиям есть выходной аналог:

post-19654-1393424095_thumb.png

 

 

Что выходит что АЦП не успевал работать, или вернее не успевал заряжать свои внутренние конденсаторы и из-за этого сбоил если надо было сменить сразу много разрядов? Как бороться кроме понижения частоты, может таки оптимизировать разводку?

Edited by zWitCh

Share this post


Link to post
Share on other sites
- 24 МГц и о чудо, помехи уже ничего не сбивают ни по питанию не по сигнальной шине, АЦП магическим образом обретает гладкую характеристику...

Я же Вам сразу предлагала...

Как бороться кроме понижения частоты, может таки оптимизировать разводку?

Правильная разводка и правильные конденсаторы снаружи. А буфер для входного сигнала у Вас есть? Дроссель может даже вредить.

Share this post


Link to post
Share on other sites

Занизил частоту ADCCLK поделил на 16, все стало ок... Век живи век учись ;-)

 

    SystemInit();
    RCC_ADCCLKConfig(RCC_PCLK2_Div8);
    SystemCoreClockUpdate();

 

PS да буфер есть, достаточно конденсатор на 10мкФ, в боевой схеме мэрию медленно меняющееся напряжение (напряжение на большом ионисторе, так что эти мои 10vrA там просто что бы компенсировать подводящие провода).

 

Edited by zWitCh

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this