реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Получить от АЦП полные 10 бит. Как?
Dikoy
сообщение Dec 5 2011, 19:48
Сообщение #31


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 4-03-09
Из: Богота, Колумбия
Пользователь №: 45 676



Попробую объяснить на пальцах.
Допустим имеем 8 бит АЦП, которое дало результат 148 = 10010100. Сдвигаем результат на 7 бит влево: 0b100101000000000 Условно, в реале величину сдвига надо считать.
Теперь прибавляем сюда случайно выхваченное значение 8-и битного счётчика, до кучи преобразованное к знаковому виду. Вот тебе и шум - он может быть меньше веса младшего значащего бита и не привести к его переключению (или нескольких младших бит)), а может быть больше, и бит перескочит. Всё как в жизни.
Тут возможны варианты. Можно реализовать программный компаратор и щёлкать младший бит согласно условию больше/меньше счётчика. То, о чём писала Татьяна, по сути. Собственно, эти методы были описаны ещё во времена СССР, но тогда подмешивание реального электрического шума было простейшим решением для полуаналоговых ЭВМ. Зачем это делать сейчас?..
При дальнейшем накоплении (самплировании реального сигнала) прибавленный шум также суммируется (или вычитается).
Результатом будет усреднение выборок со сдвигом до исходных 8 бит, или той разрядности, что нам нужна.
То есть ключом является сдвиг результата АЦП влево. Если вы не делаете сдвиг а просто суммируете шум к результату, вот тут уже будет бред.

Теперь хотелось бы посмотреть на вашу реализацию и найти общие точки sm.gif



Цитата(rx3apf @ Dec 5 2011, 23:33) *
А опыт ? Делайте, экспериментируйте...

Ну, это, какбэ, колхоз...

Сообщение отредактировал Dikoy - Dec 5 2011, 19:51
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 5 2011, 19:59
Сообщение #32


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Dikoy @ Dec 5 2011, 23:48) *
Попробую объяснить на пальцах.
Допустим имеем 8 бит АЦП, которое дало результат 148 = 10010100. Сдвигаем результат на 7 бит влево: 0b100101000000000 Условно, в реале величину сдвига надо считать.
Теперь прибавляем сюда случайно выхваченное значение 8-и битного счётчика, до кучи преобразованное к знаковому виду. Вот тебе и шум - он может быть меньше веса младшего значащего бита и не привести к его переключению (или нескольких младших бит)), а может быть больше, и бит перескочит. Всё как в жизни.

Еще раз - показания ADC стоят как влитые, пока входной уровень не изменится на 1LSB. Вы можете прибавлять туда шум, возраст Вселенной в секундах, умножать на свой рост в миллиметрах и заниматься еще кучей бесполезных арифметических действий. Но различить изменение входного уровня меньше 1LSB - не сможете. Неужели это не очевидно ? Нет ? Ладно, я запасаюсь попкорном и буду просто наблюдать этот цирк...
Go to the top of the page
 
+Quote Post
xemul
сообщение Dec 5 2011, 20:21
Сообщение #33



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Dikoy @ Dec 5 2011, 23:48) *
Всё как в жизни...

Бессмысленные шаманские пляски? Здесь сложно получить что-то отличающееся от лишнего шума и погрешности от возможной неслучайности. Элементарный ФНЧ (при правильном округлении) даст не-худший результат. Но ровнее != точнее.

Дизеринг и дельта-сигма - однояйцевые близнецы, только причёски слегка разные.
Go to the top of the page
 
+Quote Post
Dikoy
сообщение Dec 5 2011, 20:31
Сообщение #34


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 4-03-09
Из: Богота, Колумбия
Пользователь №: 45 676



Цитата(rx3apf @ Dec 5 2011, 23:59) *
Еще раз - показания ADC стоят как влитые, пока входной уровень не изменится на 1LSB. Вы можете прибавлять туда шум, возраст Вселенной в секундах, умножать на свой рост в миллиметрах и заниматься еще кучей бесполезных арифметических действий. Но различить изменение входного уровня меньше 1LSB - не сможете. Неужели это не очевидно ? Нет ? Ладно, я запасаюсь попкорном и буду просто наблюдать этот цирк...

Твой имат! Что в переводе означает "умрём за царя".
У меня есть конкретная задача - получить 10 бит на 10-и битном АЦП, без дрожания. Какое нафиг получение уровня меньше 1LSB? Вы себе придумали повышения разрядности до 12 бит и прёте к этой эмпирической цели. А задача то намного проще. Чувствительность АЦП УЖЕ достаточна. Шум ВНУТРИ АЦП, внешними пилами вы его не выпилите. "Неужели это не очевидно ?" (с)
Или хотелось за ДСП поболтать? :/


Цитата(xemul @ Dec 6 2011, 00:21) *
Но ровнее != точнее.

Да. Однако систематическая погрешность компенсируется, а случайная - нет.

Цитата(xemul @ Dec 6 2011, 00:21) *
Бессмысленные шаманские пляски?

А то. А апогей шаманства - фильтр Калмана.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 5 2011, 20:37
Сообщение #35


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Dikoy @ Dec 6 2011, 00:29) *
У меня есть конкретная задача - получить 10 бит на 10-и битном АЦП, без дрожания. Какое нафиг получение уровня меньше 1LSB? Вы себе придумали повышения разрядности до 12 бит и прёте к этой эмпирической цели. А задача то намного проще.

И Вам с самого начала сказали - никаких сложностей в этом нет. _Вообще_ нет. Если, конечно, учтете сказанное. Но +/- младший разряд - будет всегда, как у любого цифрового измерительного прибора. Не нравится - увеличивайте разрядность. Механизм увеличения разрядности был приведен всего лишь как пример пользы "дрожания" младшего бита. А вот Ваше теоретизирование по поводу тождественности аппаратного и программного добавления шума - это лично Ваши измышления, к реальности отношения не имеющие.

Цитата
Чувствительность АЦП УЖЕ достаточна. Шум ВНУТРИ АЦП, внешними пилами вы его не выпилите.

Шум _внутри_ АЦП много меньше 1LSB. Как бы не на порядок.


Go to the top of the page
 
+Quote Post
Dikoy
сообщение Dec 5 2011, 21:05
Сообщение #36


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 4-03-09
Из: Богота, Колумбия
Пользователь №: 45 676



Знать значение младШИХ битОВ или младШЕГО битА - разные вещи. Последнее можно определить тупо усреднением, что является формой вероятностной дисперсии. Ви таки удивитесь, но ваша внешняя городушка работает по аналогичному принципу.
Что до "моих теоретизирований", то без коментариев. Это даже в Кнуте есть. А уж про Калмана или модовую декомпозицию вообще молчу. Другой вопрос, что Вы этого не знаете.
Хотя, для повышения разрядности такой метод действительно не годится. Но о повышении никто, кроме Вас, и не говорил.

Цитата(rx3apf @ Dec 5 2011, 23:37) *
И Вам с самого начала сказали - никаких сложностей в этом нет. _Вообще_ нет.

Я категорически не хочу вводить внешние элементы. Во-1 дефицит лап, во-2 дефицит площади, в-3 ограничение себистоимости.
Потому все решения с внешней городушкой не годятся.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 5 2011, 21:16
Сообщение #37


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Dikoy @ Dec 6 2011, 01:05) *
Я категорически не хочу вводить внешние элементы. Во-1 дефицит лап, во-2 дефицит площади, в-3 ограничение себистоимости.
Потому все решения с внешней городушкой не годятся.

Тогда убейте себя апстену. Начальной точности и температурной стабильности (между прочим, график Vbg vs Vcc, причем для разных температур, в даташите тоже есть) встроенного опорника недостаточно. Что же касается "дефицита лап" - намекну, что у ATmega48 вход Aref - отдельная нога, ни с чем больше не разделяемая. И про ошибку смещения ADC Вам тоже было сказано (это к вопросу о 1024 отсчетах).

Сообщение отредактировал rx3apf - Dec 5 2011, 21:23
Go to the top of the page
 
+Quote Post
777777
сообщение Dec 6 2011, 07:26
Сообщение #38


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(Dikoy @ Dec 6 2011, 00:31) *
Твой имат! Что в переводе означает "умрём за царя".
У меня есть конкретная задача - получить 10 бит на 10-и битном АЦП, без дрожания. Какое нафиг получение уровня меньше 1LSB? Вы себе придумали повышения разрядности до 12 бит и прёте к этой эмпирической цели. А задача то намного проще. Чувствительность АЦП УЖЕ достаточна.

Тогда нет ничего проще. Делаешь сплошную землю на внутренем слое, если плата двухслойная - подводишь ее толстыми проводниками, на каждый вывод питания проца в непосредственной близости от него вешаешь керамику 0.1 мкф (а лучше больше, сейчас есть керамика до 10 мкф), переходные отверстия к земле делаешь толстыми, не меньше 0.5 мм, опору заводишь через RC-фильтр причем конденсатор этого фильтра подключаешь к земле в непосредственной близости от проца, сигнал от датчика заводишь двумя проводами, причем земляной подключаешь рядом с аналоговой землей. Ну и, конечно, убеждаешься в том, что по земле мимо поцессора не протекают токи от мощных потребителей (светодиодов например). От них возвратные токи должны идти отдельным проводником сразу к источнику питания. Для стояния 10 разрядов этого более чем достаточно.

Цитата(rx3apf @ Dec 6 2011, 00:37) *
Но +/- младший разряд - будет всегда, как у любого цифрового измерительного прибора.

Да почему всегда?! Это будет только если измеряемый сигнал будет находиться вблизи границы переключения.

Цитата(rx3apf @ Dec 6 2011, 00:37) *
Не нравится - увеличивайте разрядность.

А при большей разрядности младший разряд не будет прыгать? sm.gif
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 6 2011, 08:24
Сообщение #39


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(777777 @ Dec 6 2011, 11:26) *
Да почему всегда?! Это будет только если измеряемый сигнал будет находиться вблизи границы переключения.

Да. Но неопределенность-то сохраняется.
Цитата
А при большей разрядности младший разряд не будет прыгать? sm.gif

Естественно будет. Но "вес" прыжка будет меньше.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Dec 6 2011, 08:37
Сообщение #40


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(rx3apf @ Dec 6 2011, 12:24) *
Да. Но неопределенность-то сохраняется.

Я бы даже сказала - квантовая неопределенность...
Не удержались...
Ни Вы, ни я.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 6 2011, 17:36
Сообщение #41


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Dikoy, вы неправы!
Про рандомизацию чуть-чуть написано в книжке Р. Лайонс "Цифровая обработка сигналов".
Кстати, дизеринг (он же рандомизация) и сигма-дельта - это разные вещи.
Go to the top of the page
 
+Quote Post
Dikoy
сообщение Dec 6 2011, 19:00
Сообщение #42


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 4-03-09
Из: Богота, Колумбия
Пользователь №: 45 676



Цитата(rx3apf @ Dec 6 2011, 01:16) *
Тогда убейте себя апстену. Начальной точности и температурной стабильности (между прочим, график Vbg vs Vcc, причем для разных температур, в даташите тоже есть) встроенного опорника недостаточно. Что же касается "дефицита лап" - намекну, что у ATmega48 вход Aref - отдельная нога, ни с чем больше не разделяемая. И про ошибку смещения ADC Вам тоже было сказано (это к вопросу о 1024 отсчетах).

На какой странице график? http://www.atmel.com/dyn/resources/prod_do...nts/doc2545.pdf Фоксит его не находит.
Ну, не хватит так не хватит. Буду делать 2 версии - со впаянным REF192 и без оного. Будет 1 и 2 сорт sm.gif
Намекну, что ARef визически соединена с опорой. Потому использование внутреннего ИОН подразумевает отсутствие наружнего. Хотя бы перемычкой.
Смещение, нелинейность и ошибка усиления удаляются калибровкой. Это систематические погрешности.
А вот шум - нет.
Сейчас обкатал в матлабе несколько вариантов из апнот силабса и атмела, лучше всего работает БИХ и КИХ.
Скользящее среднее не удаляет шум а только маскирует. Но тоже пригодно.

Цитата(ViKo @ Dec 6 2011, 21:36) *
Dikoy, вы неправы!
Про рандомизацию чуть-чуть написано в книжке Р. Лайонс "Цифровая обработка сигналов".
Кстати, дизеринг (он же рандомизация) и сигма-дельта - это разные вещи.

У кнута тоже есть. Не так явно и пальцеобразно, но есть. Про ковбоя и пулю.
Подмешивание шума применял ещё Фон Браун в своих Р2, добиваясь более-менее сносной работы гирокомпаса. Интеграторы там были аналоговые и шум генерировался тоже аналогово. С тех пор народ по привычке (или под действием старой литературы) тоже многое старается делать в аналоге. А зря.
Я не говорю про определение дробного порога сдвигом (сигма-дельта, или то о чём писала Татьяна) - тут да, только суммирование сигнала в аналоговом тракте. Но когда АЦП уже имеет достаточную чувствительность, всё это не нужно. Взять хотя бы современные 24 разрядные АЦП с ENOB бит 17. Разрешение есть, точности нет. Однако простой оверсемплинг с БИХ на выходе позволяет вытянуть аналоговый сигнал на 18-20 реальных бит. Как простейший пример.
Говоря про калмана, то по каналу наблюдения во многих реализациях вводится белый шум. Те же гироблоки работают на столе значительно хуже, чем в полёте, где ловят лишние вибрации.
Go to the top of the page
 
+Quote Post
Михась
сообщение Dec 7 2011, 01:56
Сообщение #43


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 29-09-10
Пользователь №: 59 816



Цитата(Dikoy @ Dec 7 2011, 01:00) *
У кнута тоже есть. Не так явно и пальцеобразно, но есть. Про ковбоя и пулю.
Подмешивание шума применял ещё Фон Браун в своих Р2, добиваясь более-менее сносной работы гирокомпаса. Интеграторы там были аналоговые и шум генерировался тоже аналогово. С тех пор народ по привычке (или под действием старой литературы) тоже многое старается делать в аналоге. А зря.


Классно. biggrin.gif Только какое отношение это имеет к нашей реальности? Наприме знаете, зачем ставят такие маленькие катушечки на гироскопы и подают маленький синус? А для "оживления" подшипников гироскопа. А как бы вы оживили гироскоп программно. Не, не могу серьезно rolleyes.gif И ведь правильно совершенно говорит:

Цитата
Те же гироблоки работают на столе значительно хуже, чем в полёте, где ловят лишние вибрации.


А потом скатывается на программизм. А тут мемс систему "оживляют" реальные, а не программные вибрации
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 7 2011, 08:50
Сообщение #44


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Dikoy @ Dec 6 2011, 22:00) *
Взять хотя бы современные 24 разрядные АЦП с ENOB бит 17. Разрешение есть, точности нет. Однако простой оверсемплинг с БИХ на выходе позволяет вытянуть аналоговый сигнал на 18-20 реальных бит. Как простейший пример.

Конечно, именно так вы можете сделать. Если оверсемплинг будет очень большой, если будете усреднять очень много выборок, можете получить и все 24 разряда, и даже больше. Именно благодаря тому, что в сигнале всегда есть шум. Достаточно того, что есть. Если же вдруг недостаточно (например, АЦП 4-битовый), то тогда необходима рандомизация. До АЦП.
Go to the top of the page
 
+Quote Post
usav
сообщение Dec 8 2011, 19:28
Сообщение #45


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 22-01-10
Из: Kiev
Пользователь №: 55 001



Итак выводы (на основе опыта)!
1) AVR_ADC10 работает весьма стабильно и, если не делать явных глупостей, держит младшую
единицу даже при работе без усреднений.
2) Температурный коэффициент опорника (ATMEL умалчивает, разве что кто-то делал запрос - сообщите!),
видимо близок к 10 битам при уходе температуры на 20-30 градусов - тыкание паяльником показывает
даже удивительную стабильность!
3) А вот заводская точность опорника как по DS = +/-10%, так и в жизни! Калибровать нужно каждый прибор!
За 10 центов (TL431XX, в т.ч. sot23) можно получить 1% или даже 0,5%(?).
4) Усреднение очень полезно, я бы сказал - необходимо, но надо иметь в виду такие моменты:
5) Если АЦП работает стабильно, то грубо говоря, - усреднять нечего. Но обычно это не так и результат
становиться стабильнее.
6) Неплохие результаты - уверенно держит 11 бит показала прямая работа на LED-индикатор
с импульсами тока 20-50мА, которые, видимо неплохо подшумливают АЦП.
7) Чтобы не допускать "как получиться" можно искусственно покачивать АЦП туда-сюда добавкой
внешнего сигнала и, желательно НЕ шума, а чего-нибудь линейного во времени и пространстве.
Механизм увеличения разрядности легко показать на примере треугольной добавки, равной ровно
одному разряду (только для мысленного эксперимента - реально лучше с запасом - 2-4 единицы).
Пусть в абсолютно стабильном АЦП входное напряжение на 0,27 ед. выше порогового уровня,
например, "835". АЦП без раскачки замерзнет на "835", а с добавкой (считаем в плюс) - 27% времени
будет находиться выше уровня "836", что после суммирования даст нам результат 835,27!
8) Цикл суммирования желательно синхронизировать на целое количество покачиваний.
9) Белый шум использовать хуже (и генерить сложнее!). Линейная добавка туда-сюда при
суммировании дает ноль, а белый шум имеет спектр почти до нуля и его шум проникает в результат!
10) Добавлять шум программно бессмысленно - кроме своего шума он ничего в измерения не добавит!
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 02:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01509 секунд с 7
ELECTRONIX ©2004-2016