Страница 1 из 3
опять про АЦП
Добавлено: Сб июл 12, 2008 14:44:31
DimonPhysic
Вопрос такой: собрал "вольтметр" на АТмеге8, опорное напряжение-внутренний источник, напряжение меряется постоянное, причём чисто "качественно", поэтому подаю сигнал напрямую на вход, через сглаживающий кондёр, но при подаче заведомо стабильного сигнала контроллер его определяет "как карта ляжет". То есть АЦП оцифровует сигнал по разному, с разбросом в младший бит. АЦП работает на частоте 7кГц, наводок никаких. Это наблюдается лишь при определённых значениях входного сигнала. Для подавления проблемы я использовал алгоритм усреднения за 256 измерений, но полностью проблема не решилась-числа то и дело "блымают"(особое западло когда FF и 100 меняются-ничего не видно).
Кто чё подскажет?
Может ИОН калечный? А может тут надо алгоритм отбора данных хитрый?
Добавлено: Сб июл 12, 2008 15:00:32
ARV
для любого АЦП погрешность в 1 младший бит - нормальное состояние. для многих АЦП (например, в некоторых AVR) гарантируется точность плюс-минус 2 единицы младшего разряда, т.е. это уже 2 бита (4 значения)...
Добавлено: Сб июл 12, 2008 16:10:02
DimonPhysic
Ну дык как сделать, чтоб мк что-то одно выбирал? Дергает его так что число не видно, особенно когда старшие биты из-за младшего меняются(0111-1000). Наверное алгоритм какой-нить есть?
Добавлено: Сб июл 12, 2008 17:29:45
Нехочуха
DimonPhysic писал(а):Ну дык как сделать, чтоб мк что-то одно выбирал? Дергает его так что число не видно, особенно когда старшие биты из-за младшего меняются(0111-1000). Наверное алгоритм какой-нить есть?
Ну кроме усреднения человечество ничего лучше не придумало. Если хотите делать грамотно, избавляясь от методической и инструментальной погрешности, то делайте калибровку. Допустим измеряете напряжение с динамическим диапазоном от 0 до 2,5 вольт. Выглядеть это должно примерно так - подаете 0 вольт и запоминаете в eeprom значение кода АЦП, затем подаете 2,5 вольт - и опять запоминаете значение кода. Получаете две точки начала и конца шкалы измерения. Далее в программе элементарно вычисляется любое значение, используя полученные константы и уравнение прямой (y=ax+b). Надеюсь, идея понятна. Ну и конечно усредняйте.
Добавлено: Сб июл 12, 2008 18:32:54
ARV
хоть вывернись наизнанку - никак от плавания младшего бита не избавиться... хоть калибруй, хоть фильтруй, хоть как еще извращайся - всегда будет момент, когда показания скакать будут...
из практики: скачки показаний (смена цифр) не чаще 2 раз в секунду - не раздражают, и не нарушают быстроту смены показаний...
Добавлено: Сб июл 12, 2008 21:33:49
DimonPhysic
AVR, спасибо. Дальше долбаться не буду, тока усредню замеров 1024.
Добавлено: Сб июл 12, 2008 21:50:45
alex2103
DimonPhysic а зачем этот младший разряд? 1024 ИМХО очень много, медленно будет. Когда-то делал так: 16 измерений -> сортировка пузырьком -> среднее арифметическое. Вроде неплохо работало...да...последний разряд не использовал.
Добавлено: Сб июл 12, 2008 22:34:11
DimonPhysic
Alex2103, это чтоб зря время не тратить, при усреднении 1024 отсчётов частота обновления результата будет где-то 4 раза в секунду. А вы можете алгоритм подробней описать, что вы усредняете, предельные значения ? Я боюсь чтоб случайные помехи сильно на результат не влияли.
Я слышал, что есть математические методы как ''разогнать'' АЦП меги до 16 бит! Это реально? Как это делается?
Добавлено: Вс июл 13, 2008 20:57:19
Сэр Мурр
Да вроде просто суммируются 8 последовательных отсчётов. Применяется для полного использования 2 байтов информации.
Добавлено: Вс июл 13, 2008 22:42:02
DimonPhysic
Да слышал я про это(сёдня специально погуглил), Сэр Мурр. Там предлагают суммировать, а потом сдвигать, усреднять короче... То есть, как я понял, меряем линейкой стул, десять раз получаем 100 см, усредняем и получаем 100,1 см!!! Опупеть! Я так до размера атомов до усредняюсь:)!
Другое дело метода, когда к сигналу подмешивают шум, а потом програмно его фильтруют. Там реально можно быстродействие превратить в точность. Это я вычитал на каком-то форуме, но когда спросил на этом форуме подробности(нахрена регился?) то мне сказали шо это не оправдывает затраты(нифига они не знают, короче)! Как же не оправдывает??? АЦП на 16 бит стоит раза в 3 дороже АТмега8, а потом учи даташиты, разводи плату, терпи сюрпризы от АЦП(ИОН там внешний, да мало ли). И это при том, что шуму и контроллер может наделать, да и скорости меги для мнохих целей хватит и на программный фильтр останется(мне, к примеру, надо медленный график снять, кроме АЦП мне от контроллера почти ничего не нужно). Или пальцы об клаву морать не охота?
Кошаки, чё б не поработать над этой темой? Или ответьте, по каким причинам это не имеет смысла! Хотя смысл попробовать точно есть.
Добавлено: Пн июл 14, 2008 09:05:06
Mamonth
У тебя три варианта далее:
1. Обновлять данные на дисплее в два раза медленнее
2. Откинуть младший бит
3. Усреднять
Добавлено: Пн июл 14, 2008 19:51:46
Сэр Мурр
Простите, подмешивание шума к сигналу никак не может увеличить точность или разрядность. Главный вопрос- для чего нужен именно 16-разрядный АЦП? И нет ничего плохого в процедуре усреднения нескольких отсчётов. "Дрожание" младших разрядов носит случайный характер. При работе с настоящим 16-разрядным АЦП Вы столкнётесь с той же самой проблемой, и будете решать её теми же способами- накоплением и усреднением (ессно, всё сказанное относится к постоянно-токовому или медленно меняющемуся сигналу)
Добавлено: Вт июл 15, 2008 12:33:24
Krik99
Я когдато с таким тоже сталкивался, а потом забросил проект...

Но я делал так, циклом опрашивал АЦП 3 раза (можно больше или меньше) и с каждым циклом к переменной прибавлял прочитаное число, а потом когда выходил с цикла, всё делил на 3 и получал среднее-арифметическое...
Добавлено: Чт июл 17, 2008 20:17:57
DimonPhysic
Всем здрасте. Хотел раньше написать, но с дырнетом вечные напряги...
Да я уже разобрался с "дрожанием", просто пока разбирался наткнулся дето на тему увеличения разрядности АЦП. Но новую тему открывать не хотелось, вот я немного и изменил старую(ну в смысле эту). Вот я теперь и предлагаю поувеличивать разрядность АЦП.
Сэр мурр:
1.
подмешивание шума к сигналу никак не может увеличить точность или разрядность
. Здесь Вы ошибаетесь потому, что
"Дрожание" младших разрядов носит случайный характер
Есть даже специальное понятие
дитер. Кому интерестно может глянуть в википедии по теме АЦП.
2.
Главный вопрос- для чего нужен именно 16-разрядный АЦП?
Вот это какраз совсем не вопрос...[/url]
Добавлено: Чт июл 17, 2008 20:39:45
Сэр Мурр
DimonPhysic писал(а): поувеличивать разрядность АЦП.
Сэр мурр:
1.
подмешивание шума к сигналу никак не может увеличить точность или разрядность
. Здесь Вы ошибаетесь потому, что
"Дрожание" младших разрядов носит случайный характер
Есть даже специальное понятие
дитер. Кому интерестно может глянуть в википедии по теме АЦП.
Есть специальное понятие- ДЖИТТЕР (ДРОЖАНИЕ). Термин широко используется в описании процесса считывания информации с лазерных дисков. В отношении АЦП- это то же самое "Дрожание" разрядов. Может происходить, когда сигнал находится посредине между двумя соседними отсётами АЦП, или под воздействием дестабилизирующих факторов, или вследствие флуктуаций измеряемого сигнала.
Повышение надёжности считывания информации при подмешивании шума- это парадокс квантовой теории информации. Правда, и подмешиваемый шум тоже должен быть квантовым. Мы же работаем с реальными сигналами, а не квантовыми.
Добавлено: Чт июл 17, 2008 21:05:39
ARV
рекомендую ознакомиться с апноутом
AVR121 - там вполне понятно объяснено (по-английски), как повышается разрядность АЦП... и пример программы и схемы приведен
кстати, существует вполне устоявшийся термин для этого -
оверсэмплинг (
oversampling).
да, оверсэмплинг позволяет
при определенных условиях "перегнать" быстродействие в разрядность АЦП

кстати, и обратный процесс так же реален - получение ШИМ с разрядностью больше, чем аппаратно реализованная

Добавлено: Пт июл 18, 2008 00:30:12
DimonPhysic
ARV, с этим документом я заком. Но я несовсем силён в английском, поэтому и спрашиваю. Если на форуме так много людей знакомых с данной темой, то почему бы не взять и не дать полный и понятный ответ как это реально сделать(а лучше в обучалке написать)??? Я думаю, что я далеко не один такой невдаха-халявщик, которому влом осилить 14 страниц текста, а увеличить разрядность оч хоцца! В интернете довольно много форумов посвященных этому вопросу, тока ответа на вопрос КАК СДЕЛАТЬ нигде невидно... Если кто занимался вопросом-отзовитесь, реально нужно!!!
Добавлено: Пт июл 18, 2008 13:40:24
Сэр Мурр
Ну дык надо просто суммировать соответствующее число отсчётов, и желательно использовать внешний, более стабильный ИОН, либо принять меры к снижению шума встроенного ИОНа.
Про подмешивание шума- Вы сможете реализовать шум, эквивалентный половине МЗР? Так что не заморачивайтесь- суммируйте, батенька, суммируйте... Не забывая, что при этом теряете скорость преобразования сигнала в цифру...
Добавлено: Пт июл 18, 2008 14:04:28
ARV
Сэр Мурр писал(а):Ну дык надо просто суммировать соответствующее число отсчётов, и желательно использовать внешний, более стабильный ИОН, либо принять меры к снижению шума встроенного ИОНа.
Про подмешивание шума- Вы сможете реализовать шум, эквивалентный половине МЗР? Так что не заморачивайтесь- суммируйте, батенька, суммируйте... Не забывая, что при этом теряете скорость преобразования сигнала в цифру...
Сэр Мурр, при всем уважении - вы не совсем правы... точнее, совсем не правы...
Просто суммирование толку не даст, как и улучшение качества ИОН. Шум, эквивалентный половине МЗР получить весьма просто, хотя конечно, придется для каждого экземпляра схемы регулировать подстроечник, добиваясь точности показаний и калибровать АЦП...
Другой вопрос: зачем надо повышать разрядность АЦП? Там, где оправдано применение AVR, вряд ли есть большой смысл добиваться 12 или 16 разрядов АЦП... А там, где оправданы 16 и более разрядов - вряд ли место AVR...
Добавлено: Пт июл 18, 2008 14:25:49
Yellow Tiger
DimonPhysic писал(а):но когда спросил на этом форуме подробности... то мне сказали шо это не оправдывает затраты
Скорее всего это была оценка в контексте чьего-то конкретного проекта. В общем случае, это, разумеется, оправданно.
Сэр Мурр писал(а):Простите, подмешивание шума к сигналу никак не может увеличить точность или разрядность.
Простите, сэр Мурр, но тут Вы определенно ошибаетесь, или не узнали "в лицо" по тому, весьма приблизительному описанию, которое дал
DimonPhysic, метод увеличения разрядности. Там используется именно подмешивание шума. Если есть необходимость (чем Собака не шутит?), подробности можно найти в апнотах от Атмела (не только, но к примеру) по слову
oversampling. Там достаточно очевидная математика, поэтому доки могут и не понадобиться, дело там не в джиттере. Просто суммирование/усреднение не дает эффекта повышения разрядности без шумовой составляющей с амплитудой превышающей цену деления.
О,
ARV, оказывается, про то же написал... бывает.
ARV писал(а):Шум, эквивалентный половине МЗР получить весьма просто, ...
Можно и без настоящего шума обойтись - гармоническим сигналом, лишь бы частота этого сигнала не переводилась в частоту сэмплирования целыми числами. Или, другими словами, отношение частот д.б. непериодической дробью.
ARV писал(а):Другой вопрос: зачем надо повышать разрядность АЦП? ... там, где оправданы 16 и более разрядов - вряд ли место AVR...
А разве повысить разрядность можно только у АЦП встроенных в AVR?

В этой задаче, если для устранения мелькания младшего разряда все равно накапливаются 1024 измерения, повышение разрядности м. рассматривать, как бесплатное (ну, почти - нашуметь только) приложение.