Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: АЦП STM32
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Метрология, датчики, измерительная техника
kappafrom
Здравствуйте. Сделал платку на STM32F103 с 12-бит АЦП, на деле измерил собственное питание па плате - эффективная разрядность 9 бит, остальное шумы. Несмотря на то что на моей плате в качестве источника стоит DCDC, есть большой массив емкостей и дроссели для фильтрации питания, аналоговое питание получается чисткой основного, на осциллографе с питанием все хорошо. в следующей итеррации сделаю 27V->5V DCDC и 5V->3V3 LDO, несмотря на указания STM сделаю возможность подачи аналогового питания от собственного VREF на плате. но это потом.

что касается сигнала для измерения - пробовал разные варианты: измерять как собственное питание, так и напряжения с наружных собранных объемным монтажом источников опорного напряжения. в итоге не получалось вытянуть больше 9 эффективных бит из 12-битного ацп.

причем перемерил на отладочных китах Терраэлектроники для 103 и 107 контроллеров эффективная разрядность 8-9 бит. Подавал на вход АЦП выход LDO.

я бы хотел хотя бы 10 бит выжать, потому что шумы еще набегут с усилителя сигнала, а сейчас я тестил близкий к идеальному сигнал. на осциллографе дрожание питания 20-30 мВ, но меньше не получалось измерить, даже подпаяв коаксиал щупа разворотив оплетку максимально близко к соединению.

в общем вопрос
Кто добивался заявленной разрядности АЦП? STM - хорошая компания, вряд ли они сделали неработающий по заявленной битности АЦП.



ViKo
В больших корпусах есть спец.нога VREF, вот на нее можно подать чистое опорное напряжение, и будет счастье. А ваше питание так шумит, что больше 8 разрядов не получается. Попробуйте от батарейки запитать, проверить.
MegaVolt
Математика может помочь если есть запас по частоте. В теории цифруем в два раза чаще имеем одни бит дополнительный. В 4 раза чаще - 2 бита и т.д.
amaora
Попробуйте делать преобразование когда МК находится в режиме сна.
Plain
Цитата(kappafrom @ Jun 8 2017, 20:18) *
STM - хорошая компания, вряд ли они

...поставили бы гремучую смесь из генератора шума 34063 и голой гантели, ещё и при неизвестной разводке.
ViKo
Цитата(MegaVolt @ Jun 8 2017, 22:25) *
Математика может помочь если есть запас по частоте. В теории цифруем в два раза чаще имеем одни бит дополнительный. В 4 раза чаще - 2 бита и т.д.

Не так. В 4 раза чаще - 1 бит.
MegaVolt
Цитата(ViKo @ Jun 8 2017, 23:02) *
Не так. В 4 раза чаще - 1 бит.
Почему?? Среднее арифметическое от x+1 и x даст x+0,5 что есть как раз один дополнительный бит.
Четыре отсчёта дадут уже три дополнительных ступеньки 0.25, 0.5, 0.75
_pv
Цитата(MegaVolt @ Jun 9 2017, 04:13) *
Почему?? Среднее арифметическое от x+1 и x даст x+0,5 что есть как раз один дополнительный бит.

белый шум усредняется как корень, чтобы в два раза уменьшить, для дополнительного бита, надо в 4 раза больше отсчётов усреднить.
adnega
Цитата(kappafrom @ Jun 8 2017, 20:18) *
Кто добивался заявленной разрядности АЦП? STM - хорошая компания, вряд ли они сделали неработающий по заявленной битности АЦП.

У STM много AN на тему улучшения показаний АЦП. Советую ознакомиться.
Следование рекомендациям очень сильно помогает (я бодался, правда, на F4xx).
Но и про Котельникова не забываем.
Кста, если память не изменяет, то про PA0 частенько писали в ES в части АЦП.
Tanya
Цитата(kappafrom @ Jun 8 2017, 20:18) *
я бы хотел хотя бы 10 бит выжать, потому что шумы еще набегут с усилителя сигнала, а сейчас я тестил близкий к идеальному сигнал. на осциллографе дрожание питания 20-30 мВ, но меньше не получалось измерить, даже подпаяв коаксиал щупа разворотив оплетку максимально близко к соединению.

в общем вопрос
Кто добивался заявленной разрядности АЦП? STM - хорошая компания, вряд ли они сделали неработающий по заявленной битности АЦП.

Все там соответствует. Надо сравнивать распределение отсчетов при хороших опорном источнике и сигнале с данными производителя.
Соответствие или отклонение показывает качество Вашей схемотехники и разводки. Это справедливо для любых АЦП.
Lmx2315
..на входе АЦП нужно ограничить полосу сигнала аналоговым фильтром до одной зоны найквиста , а просто так цеплять вход ацп непойми куда нельзя , иначе шумы многократной сложаться и вы потеряете младшие биты. И REF должен быть прецизионый и фильтрованый.
kappafrom
Цитата(ViKo @ Jun 8 2017, 21:24) *
В больших корпусах есть спец.нога VREF, вот на нее можно подать чистое опорное напряжение, и будет счастье. А ваше питание так шумит, что больше 8 разрядов не получается. Попробуйте от батарейки запитать, проверить.

действительно, при питании от батареек, шумит только последний бит, 11 эффективных блестяще. STM не обманул, они красавчики, ошибки мои. буду чистить питание. в текущем применении мне и 8 эффективных бит хватит, а для точной схемы поставлю LDO. К сожалению, не могу использовать корпус в 100 пин, VREF придется отщепить от основной сети.
Да, что касается аппноутов STM - пригодился конденсатор в 10nF, без него работало нестабильно. спасибо.
ViKo
Цитата(Lmx2315 @ Jun 9 2017, 11:23) *
..на входе АЦП нужно ограничить полосу сигнала аналоговым фильтром до одной зоны найквиста

Лучше до полосы входного сигнала, она же, небось, поуже будет. rolleyes.gif
Tanya
Цитата(ViKo @ Jun 9 2017, 12:15) *
Лучше до полосы входного сигнала, она же, небось, поуже будет. rolleyes.gif

А зачем? Измерять нужно постоянное напряжение. Там внутри стоит УВХ с регулируемым временем выборки, известна емкость, поэтому внешние цепи уже будут определять переходные процессы.
kappafrom
в общем не так все круто с батарейкой. задаю N - разное количество отсчетов АЦП, и среди них ищу минимальные и максимальные значения, вычитаю одно из другого и смотрю разброс. питание от двух батареек AA, снимаемое напряжение с одной. статистика:
N_Разброс*_Эффективная разрядность *(0..4096 для 12 бит АЦП)
10_2_10бит
100_4_10бит
1000_10_8бит
10000_11_8бит
100000_12_8бит
1000000_13_8бит
Причем моментальный единичный отсчет почти не дрожит (10-11 эффективных бит).

как это понимать? что я делаю не так?

текст программы:
while (1)
{
mV_min = 4096;
mV_max = 0;
for (int i=0; i<1000; i++)
{
mV = ADC_GetConversionValue(ADC1);
if (mV < mV_min)
mV_min = mV;
if (mV > mV_max)
mV_max = mV;
};
mV_ampl = mV_max - mV_min;
}
Tanya
Цитата(kappafrom @ Jun 9 2017, 14:27) *
как это понимать? что я делаю не так?


Надо построить распределение, как это делают все производители. Приличные.
ViKo
Цитата(Tanya @ Jun 9 2017, 14:22) *
А зачем?

Чем уже полоса, тем меньше шума.
Цитата
Измерять нужно постоянное напряжение.

Кто сказал? Постоянное напряжение редко кого интересует. Топикстартер, кстати, упомянул усилитель сигнала.
Цитата
Там внутри стоит УВХ с регулируемым временем выборки, известна емкость, поэтому внешние цепи уже будут определять переходные процессы.

Можно представить, как ФНЧ, дополняющий тот, что на входе. + в общий вклад АЧХ.

Цитата(kappafrom @ Jun 9 2017, 14:27) *
как это понимать? что я делаю не так?

Среднеквадратическое отклонение ищите, а не максимальное.
kappafrom
у меня медленно меняющийся сигнал, контролю близкое к постоянному входное напряжение, соответственно тестирую вначале чистый постоянный уровень и уже тут непонятный разброс и большая потеря разрядности
Baser
Цитата(kappafrom @ Jun 9 2017, 14:27) *
как это понимать? что я делаю не так?

Еще могут быть случайные нерегулярные выбросы из-за внешних влияний (типа всплеск солнечного ветра накрыл sm.gif или по сети 220В, что вокруг вас в помещении, прошла мощная помеха и навелась на вашу схему).
В математике такие вещи называются "промах". Хорошо фильтруются медианным фильтром.
Т.е. сначала скользящий медианный фильтр, а уже потом усреднение.

А вообще, на встроенном в МК АЦП получить максимальную заявленную разрядность почти невозможно.
Всегда 1-2 разряда шумят...
ViKo
Усилитель сигнала сделайте с малой полосой, как уже говорил.
Время выборки сделайте максимально большим.
Частоту выборок сделайте максимально большой. Дальше в цифровом фильтре используете.
Медианный фильтр отбросит выбросы (промахи, как Baser написал).
Цифровой фильтр НЧ может дать вам массу дополнительных разрядов.
Естественно, результирующая полоса не должна быть меньше необходимой для измерения изменяющегося сигнала. В вашем случае - очень низкой.
kappafrom
1-2 разряда шума устроят, но на батареечном питания и измерении напряжения батарейки при 1 000 000 выборок я бы хотел видеть 1-2 разряда шума) надо гистограмму строить и смотреть, нормальное ли распределение и какой разброс.

сейчас у меня никакого усилителя нет, я снимаю сигнал с батарейки, плюс на входе ацп делитель напряжения 0.9 и конденсатор на 10нФ

вот распределение. одной половины колокола почему-то нет.



Ruslan1
Фильтровать надо базар.
Фильтрация- наше все.

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

Сначала определите что за шумы, и только после этого начинайте думать как перестать их замечать.

Перво-наперво: сохраните массив сырых данных Вашего АЦП и доставьте его в компьютер.
И уже в компьютере займитесь экспериментами: какие методы фильтрации дадут нужный результат.
Заодно и проанализируйте. Например, разложение в Фурье может дать интересную информацию о шумах и показать, действительно ли Вы со случайным шумом боретесь.

Софт- даже Екселя хватит (хотя Фурье в Екселе - это на любителя), сильно лучше- Матлаб.
Кстати, Матлаб хорош еще тем, что написанный в нем си-подобный код легко переносится в МК.
kappafrom
а, распределение кривое, потому что я переменные переполнял
Tanya
Цитата(kappafrom @ Jun 9 2017, 15:52) *
вот распределение. одной половины колокола почему-то нет.

Вот что-то у Вас не так...
Вашу безобразную картинку сожмите или уберите совсем.

Цитата(Ruslan1 @ Jun 9 2017, 16:01) *
Фильтровать надо базар.
Фильтрация- наше все.

А если у Вас нечто вроде осциллографа? И скорость нужна максимальная...
kappafrom
Цитата(Tanya @ Jun 9 2017, 17:05) *
А если у Вас нечто вроде осциллографа? И скорость нужна максимальная...

осциллограф на 600 MHz 10Gs/s обычными щупами дает 100mV шума, а подпаянный коаксиальный провод - 20 mV. это 4 мои шумных разряда, мой осцилл, либо мои методы измерения мне не позволяют отловить что там реально происходит. единственное что смог - снизить шум на осцилле, подпаяв провод к месту соединения и оплетку сразу на землю.
Ruslan1
Цитата(Tanya @ Jun 9 2017, 16:05) *
А если у Вас нечто вроде осциллографа? И скорость нужна максимальная...

Ну, тогда битва идет на уровне железа, раз нет резерва в вычислизме. Природу не обмануть, фильтровать все равно приходится.
нет возможности программно- фильтровать в электронике. Нет возможности в электронике- демпфировать саму физическую величину на уровне самого сенсора. Фильтрация всегда нужна sm.gif

Ну у ТС, мне кажется, все сильно проще- ему нужно только грамотно подойти к вопросу и обнаружить источник помех, там явно не белый шум. А самый простой и дубовый метод обнаружения- матобработка сырых данных на компьютере.
Lmx2315
Цитата(kappafrom @ Jun 9 2017, 18:12) *
единственное что смог - снизить шум на осцилле, подпаяв провод к месту соединения и оплетку сразу на землю.

..а вы поставьте на осцилографе AC вход и 50 ом , у вас шумы ещё упадут наверное. Ещё можно в настройках осцилографа полосу пропускания обузить - ещё шумы упадут . Только какой со всего этого прок?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.