|
|
  |
Получить от АЦП полные 10 бит. Как? |
|
|
|
Dec 5 2011, 02:35
|

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

|
Так получилось, что для получения необходимого разрешения по измеряемому напряжению мне нужно 10+ бит. Использовать планирую ATmega48 с внутренним генератором на 4-8 МГц. Атмега будет мерить 2 входа АЦП (6 и 7, т.к. на них больше ничего нету), выполнять элементарный расчёт и выдавать на семисегментный индикатор в динамическом режиме. На входе имеем 7 вольт и померить их надо с разрешением (и точностью) 0,006946891517745 вольт. 10 бит на таком диапазоне, это 0,0068359375, то есть как раз. И того, надо получить 1024 чистые точки. Без дрожания. Хотелось бы услышать мнения, как это сделать.
Например, хватит ли внутреннего ИОНа для такой точности? В ДШ шум документирован как 0,5 LSB. Правда, нигде не нашёл, это при измерении в шутдауне, или при работающем ядре тоже?
Допустим, на время измерения я буду отправлять МК в шутдаун (хотя не хотелось бы, т.к. на нём ещё и динамическая индикация). Делать усреднение (оверсемплинг) по 8-16 выборкам подряд... Что ещё можно сделать?..
|
|
|
|
|
Dec 5 2011, 09:15
|

Местный
  
Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716

|
Я делал так значительно лучше результат, сравнение до 999 убери. CODE read_adc: // Чтение АЦП 64 раза , и вычисление среднеарифметического значения clr yl // clr yh // ldi loop,64 // Загружаем количество выборок read_cycle: // Цикл чтения АЦП sbi adcsra,6 // Запускаем АЦП w_adc: // sbic adcsra,6 // Ждем готовности АЦП к чтению данных rjmp w_adc // in xl,ADCL // считываем 8 младших битов АЦП in xh,ADCH // считываем 2 старших бита АЦП add yl,xl // adc yh,xh // dec loop // Счетчик циклов - 1 brne read_cycle // // Деление полученого результата на 64 , >> 6 , сдвигаем на 6 разрядов в право ldi loop,6 // devide_adc: // lsr yh // ror yl // dec loop // brne devide_adc // ldi xl,low (999) // ldi xh,high(999) // cp yl,xl // cpc yh,xh // brsh set_adc_data // ret // На выход , результат хранится в Y set_adc_data: // ldi yl,low (999) // ldi yh,high(999) // ret //
|
|
|
|
|
Dec 5 2011, 09:30
|

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

|
Цитата(arttab @ Dec 5 2011, 11:13)  не забудьте считывать результат из 2х регистров А я всегда считываю из одного: int v = ADC; //  Цитата(Павлик @ Dec 5 2011, 13:15)  Я делал так значительно лучше результат Это разгильдяйство.
|
|
|
|
|
Dec 5 2011, 10:23
|

Частый гость
 
Группа: Свой
Сообщений: 176
Регистрация: 2-04-08
Из: Днепропетровск
Пользователь №: 36 406

|
Кокос, кокос, не издевайтесь... Стремление измерить 7000 mV с точностью +/- 7 mV мне непонятно. Ну и вообще как такой потенциал попадет в конечном итоге на мегу без делителя дело лично топикстартера. Время было 4:30 утра, человек перед сном задал вопрос Если по сути вопроса. Вы сами в курсе общих требованией: 1. правильная топология печатной платы; 2. фильтрация питающих цепей; 3. фильтрация измеряемых сигналов; 4. выбор ион (начальная точность, временная/температурная стабильность)ж 5. оверсемплинг в разумных пределах. Просто когда вы натыкаетесь на какую-то сложную задачу в простых приложениях, значит вы что-то делаете не так. Измените ее, измените решение etc.
--------------------
Ребята, как же это вы без гравицапы пепелац выкатываете из гаража? Это непорядок. ©
|
|
|
|
|
Dec 5 2011, 12:54
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(rx3apf @ Dec 5 2011, 16:27)  - меандр превратить в подобие треугольника и подмешать Это можно даже не особо трудиться - меандр с ножки ШИМа на RC-цепочку... Только смещение нужно измерить... Цитата(rx3apf @ Dec 5 2011, 16:27)  сделать цифровой генератор шума и тоже отфильтровать и подмешать.... Это как?
|
|
|
|
|
Dec 5 2011, 13:14
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Tanya @ Dec 5 2011, 16:54)  Это можно даже не особо трудиться - меандр с ножки ШИМа на RC-цепочку... Это и имелось в виду. Цитата Только смещение нужно измерить... DC проще обрезать.
|
|
|
|
|
Dec 5 2011, 13:27
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(ViKo @ Dec 5 2011, 17:06)  Псевдослучайная последовательность, на регистре сдвига. Не понимаю... ШИМ сам-собой работает. А это другим контроллером? Тогда уж стабилитроном каким-нибудь... Вроде бы были какие-то даже транзисторы специальные... Цитата(rx3apf @ Dec 5 2011, 17:14)  DC проще обрезать. В нуле плохо будет. Около нуля. Или кажется?
|
|
|
|
|
Dec 5 2011, 14:08
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Tanya @ Dec 5 2011, 17:27)  Не понимаю... ШИМ сам-собой работает. А это другим контроллером? Тогда уж стабилитроном каким-нибудь... Вроде бы были какие-то даже транзисторы специальные... Стабилитроны, транзисторы - лишнее усложнение. Уровни согласовывать, запитку (повышенным напряжением !) обеспечивать, жрет оно... А генерировать ПСП можно хоть в обработчике прерываний ADC (все равно оверсемплинг надо делать). Резистивный DAC тоже там же обновлять. А асинхронная пила от независимого таймера - можно словить биения между частотами семплирования и дизеринга. Я все ж предпочитаю DAC с предсказуемым поведением, и код менять синхронно с семплером. Цитата В нуле плохо будет. Около нуля. Или кажется? А, ну если вблизи нулевых и максимальных значений - то да. Так там еще и собственная ошибка смещения ADC может подгадить (и подгадит).
|
|
|
|
|
Dec 5 2011, 15:41
|

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

|
Цитата(777777 @ Dec 5 2011, 08:22)  Я еще понимаю когда речь идет о 14-16 разрядном АЦП, но как можно добиться дрожания хотя бы одного бита у 10-разрядного? Все АЦП дрожат. И понятие ENOB никто ещё не отменял. У АВР документировано 0,5 LSB, но стыдливо скрыто в каком режиме. Понятно, что минимальный такт, но нужна ли остановка ядра? Цитата(rx3apf @ Dec 5 2011, 11:05)  А начальной точности опорника - не хватит однозначно, необходимо калибровать. Да и ошибка смещения у них очень даже изрядная. Вот. Точности опорника я в ДШ вообще не нашёл. И ухода тоже. Откалибровать не проблема, есть эталонный источник напряжения до 3 знака после запятой. Определить систематическую погрешность можно легко. Но насколько калибровка сохраниться со временем? Диапазон рабочих температур будующего прибора +15..+40. Цитата(Navovvol @ Dec 5 2011, 13:45)  "0,006946891517745 вольт. " И зачем такая точность ? Ни один датчик или другое устройство не сможет поддерживать на выходе такую точность. Абсолютной линейности вых. сигналов в аналоговых датчиках не бывает. Объясняю. Делается аналог древнего измерительного прибора. Тот прибор кажет 3 разряда (2 целых и 1 дробный) http://electronix.ru/forum/index.php?act=a...st&id=63263 Входной сигнал прибора - 0..7 вольт. Этот сигнал линейно преобразуется к отображаемым величинам. А это 999 точек. Наиболее близко к 1024, то есть к 10 битам. 7/(999) = 0,007 7/(2^10) = 0,0068359375 Вот и вся арифметика. Цитата(xemul @ Dec 5 2011, 13:52)  В Колумбии именно с такой точностью взвешивают кокс. Заморачиваться с правилами округления там не принято. В колумбии люди умеют в уме (!!!) округлять сами. Это совсем не сложно. Цитата(rx3apf @ Dec 5 2011, 14:44)  Это как бы самоочевидно. А реализовав дизеринг, эту "дрожь" можно и с пользой применить, уж два-три бита совсем просто добавляются... Дизеринг подразумевает известный спектр шумовой составляющей, в противном случае всё вырождается в простое усреднение. Или вы о чём? Цитата(Tanya @ Dec 5 2011, 17:27)  Не понимаю... ШИМ сам-собой работает. А это другим контроллером? Тогда уж стабилитроном каким-нибудь... Вроде бы были какие-то даже транзисторы специальные... Он логично предлагает генерировать шум в программе и подмешивать этот шум опять же программно, арифметически, если хотите. А опоры для шума в АВР валом. Тот же термометр встроенный... Цитата(delamoure @ Dec 5 2011, 14:23)  Ну и вообще как такой потенциал попадет в конечном итоге на мегу без делителя дело лично топикстартера. Ну во-1 есно с делителем. Не думал, что такие вещи надо уточнять  , во-2 а какая разница с делителем или без? 1024 точки на диапазон остаются, не важно, 2, 5, или 50 там вольт. Я привёл разрешения для диапазона 7 вольт, остальные мне побоку.
Сообщение отредактировал Dikoy - Dec 5 2011, 15:37
|
|
|
|
|
Dec 5 2011, 15:49
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Dikoy @ Dec 5 2011, 19:41)  Вот. Точности опорника я в ДШ вообще не нашёл. Есть. Может быть не на все кристаллы, но есть. Цитата Дизеринг подразумевает известный спектр шумовой составляющей, в противном случае всё вырождается в простое усреднение. Или вы о чём? Дизеринг подразумевает только _подмешивание_. Чего именно - вопрос другой. Я, например, подмешиваю пилу. С белым шумом при достаточном оверсемплинге результат будет тот же. В любом случае, 10 бит - это смешное требование. Дизеринг элементарно обеспечивает _дополнительные_ два-три бита минимум. Без каких-то особых усилий. Цитата Он логично предлагает генерировать шум в программе и подмешивать этот шум опять же программно, арифметически, если хотите. А опоры для шума в АВР валом. Тот же термометр встроенный... Кто такой бред предлагает ? Какой смысл что-то "подмешивать" _программно_ ?
|
|
|
|
|
Dec 5 2011, 15:51
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Dikoy @ Dec 5 2011, 19:41)  Дизеринг подразумевает известный спектр шумовой составляющей, в противном случае всё вырождается в простое усреднение. Или вы о чём?
Он логично предлагает генерировать шум в программе и подмешивать этот шум опять же программно, арифметически, если хотите. А опоры для шума в АВР валом. Тот же термометр встроенный... Вы не поняли сути - подмешивать нужно до АЦП. Аналоговый сигнал. Иначе, - какой в этом смысл? А если подмешивать сигнал шума... 2-3 младших разряда, то ошибка квантования после усреднения уходит. Вот представьте просто один компаратор с порогом 1 вольт и на входе сигнал на... 5 милливольт ниже порога. Без шума получаем ноль. А если добавить шум (10 - 20 милливольт) и долго-долго (миллион примерно раз) усреднять единицы и нули, то получим 995 милливольт. При этом спектр шума даже не очень важен. И одноразрядный АЦП стал 10 разрядным. А опорник нужен внешний хороший в этом случае.
|
|
|
|
|
Dec 5 2011, 17:50
|

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

|
Цитата(rx3apf @ Dec 5 2011, 19:49)  Есть. Может быть не на все кристаллы, но есть.
Дизеринг подразумевает только _подмешивание_. Чего именно - вопрос другой. Я, например, подмешиваю пилу. С белым шумом при достаточном оверсемплинге результат будет тот же. В любом случае, 10 бит - это смешное требование. Дизеринг элементарно обеспечивает _дополнительные_ два-три бита минимум. Без каких-то особых усилий.
Кто такой бред предлагает ? Какой смысл что-то "подмешивать" _программно_ ? На последние кристаллы с 1,1В я не нашёл. Нарыл в инете несколько тем по этому поводу - там тоже ничего не нашли. ИОН, допустим, я поставлю REF192. Хватит за уши на 10 битах. Но таки хочется ограничиться одним МК... Смысл такой же, как в фотошопах, фотоаппаратах и т.п. Цитата(Tanya @ Dec 5 2011, 19:51)  Вы не поняли сути - подмешивать нужно до АЦП. Аналоговый сигнал. Иначе, - какой в этом смысл? А если подмешивать сигнал шума... 2-3 младших разряда, то ошибка квантования после усреднения уходит. Вот представьте просто один компаратор с порогом 1 вольт и на входе сигнал на... 5 милливольт ниже порога. Без шума получаем ноль. А если добавить шум (10 - 20 милливольт) и долго-долго (миллион примерно раз) усреднять единицы и нули, то получим 995 милливольт. При этом спектр шума даже не очень важен. И одноразрядный АЦП стал 10 разрядным. А опорник нужен внешний хороший в этом случае. Это называется сигма/дельта, а не дизеринг То, что вы описываете, элементарно делается программно. Результат АЦП сдвигается влево, до принятия младшими разрядами необходимого веса шума. Добавляется шум, сгенерённый, например, от термодатчика или random-ом на крайний случай. И в таком виде всё суммируется. А потом делаем обратный сдвиг и имеем результат исходной разрядности. Нарисовал специально для Вас в матлабе:  Жёлтый график - программный шум. Синий - результат. Чёрный - уход гироскопа. И чем больше выборок, тем он точнее и ровнее. Или Вы считаете, что бит, переключённый внешним сигналом принципиально отличается от бита, переключённого программно?  Вся суть пилы на входе АЦП во внешнем масштабировании пилы к нужному размаху и легко достишимой случайности, т.к. мы не знаем на каком участке пилы у нас выхватит значение АЦП. Всё то же самое делается программно. То же самое будет, если вы будете читать регистр таймера, крутящегося по кругу. Но только при условии, что АЦП и таймер работают не синхронно. То есть АЦП не привязана к какому-нибудь стётчику тоже. Ибо в этом случае велика вероятность "попадания" ацп на те же точки. А если АЦП работает чисто программно, с вызовом по мере надобности, то такой метод абсолютно эквивалентен внешней пиле.
|
|
|
|
|
Dec 5 2011, 17:57
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Dikoy @ Dec 5 2011, 21:41)  На последние кристаллы с 1,1В я не нашёл. Нарыл в инете несколько тем по этому поводу - там тоже ничего не нашли. Смотреть допуск на Vbg. Вот, в даташите 2006-го года на 48V-88V-168V - уже есть. Допуск 1.0...1.2V. Цитата Смысл такой же, как в фотошопах, фотоаппаратах и т.п. Вы о чем-то своем, явно... Цитата Это называется сигма/дельта, а не дизеринг  А в огороде - бузина. Дизеринг - это сам факт "подмешивания" дополнительного сигнала к измеряемому. Цитата Или Вы считаете, что бит, переключённый внешним сигналом принципиально отличается от бита, переключённого программно?  Бред какой-то. Ну, возьмите вместо отсчета с ADC какую-нибудь константу, высосанную из, скажем, пальца. И сделайте с ней то же самое преобразование. В чем фокус-то ? Никаких лишних битов ниоткуда не возьмется, ибо просто неоткуда. Кроме того случая, когда младший бит уже на уровне порога переключения и _уже_ дрожит_.
|
|
|
|
|
Dec 5 2011, 19:17
|

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

|
Цитата(rx3apf @ Dec 5 2011, 21:57)  Смотреть допуск на Vbg. Вот, в даташите 2006-го года на 48V-88V-168V - уже есть. Допуск 1.0...1.2V. Допуск допуском, это систематика, а уход? ТК? Шум? --Бред какой-то. Ну, возьмите вместо отсчета с ADC какую-нибудь константу, высосанную из, скажем, пальца. И сделайте с ней то же самое преобразование. В чем фокус-то ? Никаких лишних битов ниоткуда не возьмется, ибо просто неоткуда. Кроме того случая, когда младший бит уже на уровне порога переключения и _уже_ дрожит_. Вы пытаетесь в известный вам метод всунуть подмешивание после АЦП. А я вовсе не о том говорю. Читайте внимательней и осмысляйте. --Вы о чем-то своем, явно... Ну почитайте про интерполяцию например... Методы повышения разрешения изображений как в камере, так и уже в ПК. --А в огороде - бузина. Дизеринг - это сам факт "подмешивания" дополнительного сигнала к измеряемому. Но Таня то описала сигму дельту.
Сообщение отредактировал Dikoy - Dec 5 2011, 19:21
|
|
|
|
|
Dec 5 2011, 19:33
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Dikoy @ Dec 5 2011, 23:17)  Допуск допуском, это систематика, а уход? ТК? Шум? А опыт ? Делайте, экспериментируйте... Цитата А я вовсе не о том говорю. Читайте внимательней и осмысляйте. А что тут осмыслять ? Есть отсчет с ADC. Он фиксированный, до тех пор пока не вблизи границ переключения LSB. И хоть что делайте с этим отсчетом - результат останется прежним. Цитата Ну почитайте про интерполяцию например... Методы повышения разрешения изображений как в камере, так и уже в ПК. Из двух смежных отсчетов можно сделать промежуточный. Но в данном случае это ничем не поможет. Было 100, сделать можно хоть 100000 отсчетов. Но они все будут одинаковые...
|
|
|
|
|
Dec 5 2011, 19:48
|

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

|
Попробую объяснить на пальцах. Допустим имеем 8 бит АЦП, которое дало результат 148 = 10010100. Сдвигаем результат на 7 бит влево: 0b100101000000000 Условно, в реале величину сдвига надо считать. Теперь прибавляем сюда случайно выхваченное значение 8-и битного счётчика, до кучи преобразованное к знаковому виду. Вот тебе и шум - он может быть меньше веса младшего значащего бита и не привести к его переключению (или нескольких младших бит)), а может быть больше, и бит перескочит. Всё как в жизни. Тут возможны варианты. Можно реализовать программный компаратор и щёлкать младший бит согласно условию больше/меньше счётчика. То, о чём писала Татьяна, по сути. Собственно, эти методы были описаны ещё во времена СССР, но тогда подмешивание реального электрического шума было простейшим решением для полуаналоговых ЭВМ. Зачем это делать сейчас?.. При дальнейшем накоплении (самплировании реального сигнала) прибавленный шум также суммируется (или вычитается). Результатом будет усреднение выборок со сдвигом до исходных 8 бит, или той разрядности, что нам нужна. То есть ключом является сдвиг результата АЦП влево. Если вы не делаете сдвиг а просто суммируете шум к результату, вот тут уже будет бред. Теперь хотелось бы посмотреть на вашу реализацию и найти общие точки Цитата(rx3apf @ Dec 5 2011, 23:33)  А опыт ? Делайте, экспериментируйте... Ну, это, какбэ, колхоз...
Сообщение отредактировал Dikoy - Dec 5 2011, 19:51
|
|
|
|
|
Dec 5 2011, 19:59
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

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

Местный
  
Группа: Участник
Сообщений: 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)  Бессмысленные шаманские пляски? А то. А апогей шаманства - фильтр Калмана.
|
|
|
|
|
Dec 5 2011, 20:37
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Dikoy @ Dec 6 2011, 00:29)  У меня есть конкретная задача - получить 10 бит на 10-и битном АЦП, без дрожания. Какое нафиг получение уровня меньше 1LSB? Вы себе придумали повышения разрядности до 12 бит и прёте к этой эмпирической цели. А задача то намного проще. И Вам с самого начала сказали - никаких сложностей в этом нет. _Вообще_ нет. Если, конечно, учтете сказанное. Но +/- младший разряд - будет всегда, как у любого цифрового измерительного прибора. Не нравится - увеличивайте разрядность. Механизм увеличения разрядности был приведен всего лишь как пример пользы "дрожания" младшего бита. А вот Ваше теоретизирование по поводу тождественности аппаратного и программного добавления шума - это лично Ваши измышления, к реальности отношения не имеющие. Цитата Чувствительность АЦП УЖЕ достаточна. Шум ВНУТРИ АЦП, внешними пилами вы его не выпилите. Шум _внутри_ АЦП много меньше 1LSB. Как бы не на порядок.
|
|
|
|
|
Dec 5 2011, 21:05
|

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

|
Знать значение младШИХ битОВ или младШЕГО битА - разные вещи. Последнее можно определить тупо усреднением, что является формой вероятностной дисперсии. Ви таки удивитесь, но ваша внешняя городушка работает по аналогичному принципу. Что до "моих теоретизирований", то без коментариев. Это даже в Кнуте есть. А уж про Калмана или модовую декомпозицию вообще молчу. Другой вопрос, что Вы этого не знаете. Хотя, для повышения разрядности такой метод действительно не годится. Но о повышении никто, кроме Вас, и не говорил. Цитата(rx3apf @ Dec 5 2011, 23:37)  И Вам с самого начала сказали - никаких сложностей в этом нет. _Вообще_ нет. Я категорически не хочу вводить внешние элементы. Во-1 дефицит лап, во-2 дефицит площади, в-3 ограничение себистоимости. Потому все решения с внешней городушкой не годятся.
|
|
|
|
|
Dec 5 2011, 21:16
|
Гуру
     
Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 6 2011, 07:26
|

Профессионал
    
Группа: Участник
Сообщений: 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)  Не нравится - увеличивайте разрядность. А при большей разрядности младший разряд не будет прыгать?
|
|
|
|
|
Dec 6 2011, 08:24
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(777777 @ Dec 6 2011, 11:26)  Да почему всегда?! Это будет только если измеряемый сигнал будет находиться вблизи границы переключения. Да. Но неопределенность-то сохраняется. Цитата А при большей разрядности младший разряд не будет прыгать?  Естественно будет. Но "вес" прыжка будет меньше.
|
|
|
|
|
Dec 6 2011, 19:00
|

Местный
  
Группа: Участник
Сообщений: 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 сорт Намекну, что ARef визически соединена с опорой. Потому использование внутреннего ИОН подразумевает отсутствие наружнего. Хотя бы перемычкой. Смещение, нелинейность и ошибка усиления удаляются калибровкой. Это систематические погрешности. А вот шум - нет. Сейчас обкатал в матлабе несколько вариантов из апнот силабса и атмела, лучше всего работает БИХ и КИХ. Скользящее среднее не удаляет шум а только маскирует. Но тоже пригодно. Цитата(ViKo @ Dec 6 2011, 21:36)  Dikoy, вы неправы! Про рандомизацию чуть-чуть написано в книжке Р. Лайонс "Цифровая обработка сигналов". Кстати, дизеринг (он же рандомизация) и сигма-дельта - это разные вещи. У кнута тоже есть. Не так явно и пальцеобразно, но есть. Про ковбоя и пулю. Подмешивание шума применял ещё Фон Браун в своих Р2, добиваясь более-менее сносной работы гирокомпаса. Интеграторы там были аналоговые и шум генерировался тоже аналогово. С тех пор народ по привычке (или под действием старой литературы) тоже многое старается делать в аналоге. А зря. Я не говорю про определение дробного порога сдвигом (сигма-дельта, или то о чём писала Татьяна) - тут да, только суммирование сигнала в аналоговом тракте. Но когда АЦП уже имеет достаточную чувствительность, всё это не нужно. Взять хотя бы современные 24 разрядные АЦП с ENOB бит 17. Разрешение есть, точности нет. Однако простой оверсемплинг с БИХ на выходе позволяет вытянуть аналоговый сигнал на 18-20 реальных бит. Как простейший пример. Говоря про калмана, то по каналу наблюдения во многих реализациях вводится белый шум. Те же гироблоки работают на столе значительно хуже, чем в полёте, где ловят лишние вибрации.
|
|
|
|
|
Dec 7 2011, 01:56
|
Частый гость
 
Группа: Участник
Сообщений: 161
Регистрация: 29-09-10
Пользователь №: 59 816

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

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

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

Группа: Участник
Сообщений: 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) Добавлять шум программно бессмысленно - кроме своего шума он ничего в измерения не добавит!
|
|
|
|
|
Dec 8 2011, 20:49
|

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

|
Цитата(Михась @ Dec 7 2011, 05:56)  Классно.  Только какое отношение это имеет к нашей реальности? Наприме знаете, зачем ставят такие маленькие катушечки на гироскопы и подают маленький синус? А для "оживления" подшипников гироскопа. А как бы вы оживили гироскоп программно. Не, не могу серьезно  И ведь правильно совершенно говорит: А потом скатывается на программизм. А тут мемс систему "оживляют" реальные, а не программные вибрации У мемсов подшипники? Вы случайно с магнитометрами их не попутали?  Им катушечки как раз лепят. Но не затем.  И не на все Во-1 МЕМСы, это ДУСы, а не гироскопы. И скажу по секрету, сами собой почти не шумят. Ошибку позиционирования даёт ошибка интегрирования или квантования. Накопительная. Вторая по счёту ошибка - от температуры. В моём комплексе используются в том числе и цифровые шумы: http://www.dikoy44.narod.ru/projects/UAV_berkuchi.htm И ведь летает и работает  Цитата(ViKo @ Dec 7 2011, 12:50)  Конечно, именно так вы можете сделать. Если оверсемплинг будет очень большой, если будете усреднять очень много выборок, можете получить и все 24 разряда, и даже больше. Именно благодаря тому, что в сигнале всегда есть шум. Достаточно того, что есть. Если же вдруг недостаточно (например, АЦП 4-битовый), то тогда необходима рандомизация. До АЦП. Вот по этому я и не мог понять 2 страницы, для чего мне в принудительно форме пытаются насоветовать всовывание шумов на вход АЦП  Цитата(usav @ Dec 8 2011, 23:28)  Итак выводы (на основе опыта)! 1) AVR_ADC10 работает весьма стабильно и, если не делать явных глупостей, держит младшую единицу даже при работе без усреднений. 2) Температурный коэффициент опорника (ATMEL умалчивает, разве что кто-то делал запрос - сообщите!), видимо близок к 10 битам при уходе температуры на 20-30 градусов - тыкание паяльником показывает даже удивительную стабильность! 3) А вот заводская точность опорника как по DS = +/-10%, так и в жизни! Калибровать нужно каждый прибор! За 10 центов (TL431XX, в т.ч. sot23) можно получить 1% или даже 0,5%(?). 10) Добавлять шум программно бессмысленно - кроме своего шума он ничего в измерения не добавит! 1-3: спасибо за опыт! В общем то претензий к АЦП АВР тоже небыло, но я никогда его точностью особо и не заморачивался. Я тоже подумал о ТЛ431 кстати  Как раз по точности к 10 битам подходит. Просто REF192 у меня лежат 3 штуки в выцветшем чиподиповском пакетике образца 2006 года... Разведу на плате обе. Первые партии выпущу с рефом, для затравки, а потом тл буду ставить. 10. Нифига. Для ФСС или усреднения конечно не добавит. Но тому же калману впаять шум по каналу наблюдения очень полезно. Можете сами поиграться в матлабе. И таких фильтров много. В данной ветке возникло недопонимание. Я думал мне советуют как-раз подобный фильтр. Кстати, чтобы заставить 431 выдавать свои 2.495В используется ведь эта схема?
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 9 2011, 04:01
|
Частый гость
 
Группа: Участник
Сообщений: 161
Регистрация: 29-09-10
Пользователь №: 59 816

|
Цитата У мемсов подшипники? Вы случайно с магнитометрами их не попутали? Им катушечки как раз лепят. Но не затем. И не на все Нет, я не про мемсы. А про настоящие большие гироскопы, которым подмешивают этот шум через механику. там дальше стоят сквт и подмешивать "шум" после гироскопов смысла нет. Вам намекают что шум нужен для узлов, грубо говоря имеющих гистерезис по своей сути. Наоборот, проинтегрируем сигнал после такого узла избавимся и от шума и от гистерезиса. Там ситуация, что пока машина едет, шум есть. Машина стоит и начинает работать автоматическая система компенсации прецессии и тут трение подшипников становится серьезным фактором. И тут подмешивание шума решает вопрос трения. Посмотрел сайт, круто! Удачи.
Сообщение отредактировал Михась - Dec 9 2011, 04:38
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|