Программно увеличить разрядность АЦП до 11 бит
- КРАМ
- Друг Кота
- Сообщения: 25219
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Программно увеличить разрядность АЦП до 11 бит
То есть желания обосновать математику повышения точности оверсемплингом так и не появилось?

- Реклама
-
Pnjom-Penb
- Мучитель микросхем
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
Re: Программно увеличить разрядность АЦП до 11 бит
Вы все еще расчитываете на то, что ерничанье поможет скрыть ну ооочень белые нитки? Напрасно, мир не без умных людей, что бы вам ни казалось по этому поводу. 

- КРАМ
- Друг Кота
- Сообщения: 25219
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Программно увеличить разрядность АЦП до 11 бит
Тут важно отличать умных от дураков и правых от ошибающихся.
Для этого нужно ДУМАТЬ САМОМУ.
А не надеяться на силабс или микрочип.
ЗЫ. А с чего Вы решили, что я ерничаю? Как раз я с радостью приму Ваши доказательства. Потому что сам не представляю как это доказать.
ЗЗЫ. Более того, я с трудом представляю доказательство, которое опровергнет мой личный опыт. И опыт совсем не разовый. потому как обработка сигналов - мое основное занятие на работе.
Для этого нужно ДУМАТЬ САМОМУ.
А не надеяться на силабс или микрочип.
ЗЫ. А с чего Вы решили, что я ерничаю? Как раз я с радостью приму Ваши доказательства. Потому что сам не представляю как это доказать.
ЗЗЫ. Более того, я с трудом представляю доказательство, которое опровергнет мой личный опыт. И опыт совсем не разовый. потому как обработка сигналов - мое основное занятие на работе.
Re: Программно увеличить разрядность АЦП до 11 бит
Блин, парни. Вот вы все такие умные, а из-за срача, который здесь развёлся, хрен потом увидишь суть. Как и обычно впрочем.
Давайте лучше я сформулирую проблему и её решение с позиции любителя ассемблера-самоучки, далёкого от теории, но близкого к практике (то бишь себя).
Иногда так бывает, что для выбранного диапазона измерения и цены деления немного не хватает разрядности АЦП. Немного - это один, максимум 2 бита. Например, есть 10-битный АЦП (любой современный младший PIC), а надо 11- или 12-битный.
Немного нарастить разрядность (без улучшения абсолютной точности) поможет метод оверсэмплинга. Суть заключается в том, что нужно взять несколько измеренных 10-битных значений (для удобства кол-во значений должно быть одной из степеней двойки), вычислить их 10-битное среднее арифметическое, и умножить его на 2 столько раз, сколько бит разрядности надо добавить. Например, берём 8 10-битных отсчётов (буфер не стековый, а кольцевой, т.е., при записи нового значения затирается самое старое из 8-ми существующих), складываем эти 8 10-битных чисел (получается 13-битная сумма), и делим не на 8, а на 4 или 2. При этом получается 11-и или 12-и битное число, которое мы и используем в дальнейшем как результат работы 11-и или 12-и битного АЦП.
Для нормальной работы данного метода нужно, чтобы во входном измеряемом напряжении присутствовал белый шум, в качестве которого может послужить цифровой шум самого процессора, или шум ОУ предварительного масштабирующего усилителя.
Кол-во отсчётов нужно брать чем больше, тем лучше. Ограничение здесь - объём ОЗУ и результирующая скорость измерения.
Результат с метрологической точки зрения спорный, оверсэмплинг не заменяет честного более разрядного АЦП.
Подробнее о методе здесь: http://www.atmel.com/Images/doc8003.pdf
Так? Или что-то не так?
Давайте лучше я сформулирую проблему и её решение с позиции любителя ассемблера-самоучки, далёкого от теории, но близкого к практике (то бишь себя).
Иногда так бывает, что для выбранного диапазона измерения и цены деления немного не хватает разрядности АЦП. Немного - это один, максимум 2 бита. Например, есть 10-битный АЦП (любой современный младший PIC), а надо 11- или 12-битный.
Немного нарастить разрядность (без улучшения абсолютной точности) поможет метод оверсэмплинга. Суть заключается в том, что нужно взять несколько измеренных 10-битных значений (для удобства кол-во значений должно быть одной из степеней двойки), вычислить их 10-битное среднее арифметическое, и умножить его на 2 столько раз, сколько бит разрядности надо добавить. Например, берём 8 10-битных отсчётов (буфер не стековый, а кольцевой, т.е., при записи нового значения затирается самое старое из 8-ми существующих), складываем эти 8 10-битных чисел (получается 13-битная сумма), и делим не на 8, а на 4 или 2. При этом получается 11-и или 12-и битное число, которое мы и используем в дальнейшем как результат работы 11-и или 12-и битного АЦП.
Для нормальной работы данного метода нужно, чтобы во входном измеряемом напряжении присутствовал белый шум, в качестве которого может послужить цифровой шум самого процессора, или шум ОУ предварительного масштабирующего усилителя.
Кол-во отсчётов нужно брать чем больше, тем лучше. Ограничение здесь - объём ОЗУ и результирующая скорость измерения.
Результат с метрологической точки зрения спорный, оверсэмплинг не заменяет честного более разрядного АЦП.
Подробнее о методе здесь: http://www.atmel.com/Images/doc8003.pdf
Так? Или что-то не так?
(c) 1982 Sinclair Research Ltd
- КРАМ
- Друг Кота
- Сообщения: 25219
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Программно увеличить разрядность АЦП до 11 бит
Все именно так, с тем лишь добавлением, что при необходимости цифровой фильтрации не требуется специально делать оверсемплинг для повышения разрядности. Достаточно провести нормировку текущей суммы в КИХ фильтре не длиной массива, а в 2^N меньшей величиной. то есть и фильтр останется и разрядность повысится.
Это, правда, потребует увеличения порядка фильтра, поскольку мы увеличиваем чувствительность тракта.
Это, правда, потребует увеличения порядка фильтра, поскольку мы увеличиваем чувствительность тракта.
- Реклама
-
Pnjom-Penb
- Мучитель микросхем
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
Re: Программно увеличить разрядность АЦП до 11 бит
С трех раз догадаетесь? И второе - не только я так решил. Это даже не шило в мешке.КРАМ писал(а):А с чего Вы решили, что я ерничаю?
Re: Программно увеличить разрядность АЦП до 11 бит
Ну тогда прощай кольцевой буфер.E30M20B20 писал(а):А почему? 64 отсчёта мне в RAM не влезет, у 675-го PICа всего 64 байта RAM!
Но можно просто суммировать все результаты в одну переменную, а в другую считать количество. Когда достигнешь нужного количества то делишь и опять начинаешь с начала.


