ATmega + 12bit ADC
Re: ATmega + 12bit ADC
Ну вот, slav0n, наконец-то мы с тобой пришли к единому мнению.
- Реклама
- slav0n
- Опытный кот
- Сообщения: 882
- Зарегистрирован: Ср дек 01, 2010 00:38:15
- Откуда: Харьков
- Контактная информация:
Re: ATmega + 12bit ADC
ohmycode!
primuss3.com
primuss3.com
Re: ATmega + 12bit ADC
slav0n, тест с батарейкой прошел успешно.
- Starichok51
- Модератор
- Сообщения: 19054
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: ATmega + 12bit ADC
закончил я изготовление БП для брата и посмотрел погрешности вольтметра и амперметра по диапазонам.
вывод такой:
никакой оверсемплинг не поможет "кривизне" (полной погрешности) внутреннего АЦП.
по даташиту для АТмега8 полная погрешность может быть до 1,75 LSB.
на практике примерно так и есть.
после калибровки в одной точке диапазона измерения (ближе к концу диапазона) ошибка внутри диапазона измерения составила до 2 LSB - и по вольтметру и по амперметру, так как АЦП один и тот же для обоих измерителей.
так что моя сумма 1000 выборок не дала практически никакой пользы.
это в теории с оверсемплингом всё красиво, а на практике никакого толку от него не оказалось.
Dimon456, и именно такая погрешность внутреннего АЦП вынудила меня перейти на внешний АЦП с большим числом разрядов.
вывод такой:
никакой оверсемплинг не поможет "кривизне" (полной погрешности) внутреннего АЦП.
по даташиту для АТмега8 полная погрешность может быть до 1,75 LSB.
на практике примерно так и есть.
после калибровки в одной точке диапазона измерения (ближе к концу диапазона) ошибка внутри диапазона измерения составила до 2 LSB - и по вольтметру и по амперметру, так как АЦП один и тот же для обоих измерителей.
так что моя сумма 1000 выборок не дала практически никакой пользы.
это в теории с оверсемплингом всё красиво, а на практике никакого толку от него не оказалось.
Dimon456, и именно такая погрешность внутреннего АЦП вынудила меня перейти на внешний АЦП с большим числом разрядов.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: ATmega + 12bit ADC
Я ведь не просто так спрашивал выше про спектр шума и как отслеживается его распределение по спектру. Когда экспериментировал с измерением RMS, заметил, что при вычислении RMS в случае усреднения измерений за нечётное число периодов, погрешность была выше, чем при усреднении результатов за чётное число. А тут вы взяли АЦП, нашумели у него на входе фиг знает чем, после чего ждёте превращения 10 бит в 14. Это только в сказке тыква превращается в золотую карету. В жизни же тыква всегда остаётся тыквой.
- Реклама
- slav0n
- Опытный кот
- Сообщения: 882
- Зарегистрирован: Ср дек 01, 2010 00:38:15
- Откуда: Харьков
- Контактная информация:
Re: ATmega + 12bit ADC
погрешность погрешностью, а с разрешением как, увеличивается?Starichok51 писал(а):погрешность может быть до 1,75 LSB.
на практике примерно так и есть.
верней, уменьшается?
ohmycode!
primuss3.com
primuss3.com
Re: ATmega + 12bit ADC
Я то же так раньше думал, но при питании от батарейки там не чему шуметь, остался последний тест - один вход и батарейка.tonyk писал(а):А тут вы взяли АЦП, нашумели у него на входе фиг знает чем, после чего ждёте превращения 10 бит в 14.
Starichok51, 1000 выборок, этого мало, от шума не избавитесь.
Любой цифровой прибор имеет погрешность, +-1LSB.
Возьмем ваш пример:
АЦП 10 бит, давайте опустим опору до 4,096В, максимум 40,96В, итог 1LSB составит 0,04В. Погрешность составит +-0,04В.
ADS1115 16 бит, давайте опустим опору до 4,096В, максимум 40,96В, итог 1LSB составит 0,000625В. Погрешность составит +-0,000625В.
На практике вам в блок питания требуется измерять с точность 0,1В. С вольтами и 10 бит справится.
А что с током?
АЦП 10 бит, давайте опустим опору до 4,096В, максимум 10,24А, итог 1LSB составит 0,01А. Погрешность составит +-0,01А.
ADS1115 16 бит, давайте опустим опору до 4,096В, максимум 10,24А, итог 1LSB составит 0,00015625А. Погрешность составит +-0,00015625А.
А вот стоком, дела обстоят очень плохо, если для обыкновенно зарядки, то +-0,01А сойдет.
А для ЛБП хотелось бы хотя бы +-0,001А.
Starichok51, вот что вас вынудило перейти на внешний АЦП, а не какая-то "кривизна".
разрешение будет тогда, когда он положит соответствующее количество отсчетов, но не как не 1000, этого очень мало. Ни какие тебе фильтры не помогут, хоть зафильтруйся.slav0n писал(а):а с разрешением как, увеличивается?
- Starichok51
- Модератор
- Сообщения: 19054
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: ATmega + 12bit ADC
а как это можно узнать, если сам АЦП имеет такую погрешность, которая значительно больше, чем ожидаемое разрешение (дискретность)?slav0n писал(а):погрешность погрешностью, а с разрешением как
ADS1115 имеет 16 бит в ОБЕ полярности. а в положительную полярность (которая нужна) только 15 бит. то есть, максимум 32767 единиц. поэтому посчитанную тобой погрешность умножь на 2.Dimon456 писал(а):ADS1115 16 бит
я получил по току +/-0,02А - 2 LSB, о чем выше написал.Dimon456 писал(а):максимум 10,24А, итог 1LSB составит 0,01А. Погрешность составит +-0,01А.
именно "кривизна" вынудила.Dimon456 писал(а):а не какая-то "кривизна".
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- slav0n
- Опытный кот
- Сообщения: 882
- Зарегистрирован: Ср дек 01, 2010 00:38:15
- Откуда: Харьков
- Контактная информация:
Re: ATmega + 12bit ADC
снова-здарова...Starichok51 писал(а):а как это можно узнать, если сам АЦП имеет такую погрешность, которая значительно больше, чем ожидаемое разрешение
уже больше 10 страниц про оверсемплинг, а никто так и не догнал...
вот перевод апноута про погрешности.
там их целых четыре:
- погрешность квантования
- погрешность смещения
- передаточная погрешность
- нелинейность
хм... так какую же из них надо учитывать, если необходимый шум должен быть минимум несколько единиц младшего разряда
ohmycode!
primuss3.com
primuss3.com
- Starichok51
- Модератор
- Сообщения: 19054
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: ATmega + 12bit ADC
да при чем здесь шум, когда собственная нелинейность (погрешность) внутреннего АЦП большая?
если сам АЦП в некоторой точке врет на 1-2 единицы, то никакой шум эту собственную ошибку АЦП не исправит.
в даташите на АТмега8 указано:
Absolute accuracy (Including INL, DNL, Quantization Error, Gain, and Offset Error) типовая 1,75 единиц.
но, во-первых, это типовая, а максимальная не указана,
и во-вторых, дробных чисел там не бывает, поэтому сразу типовую округляем до 2 единиц.
и как ты собрался шумом исправить эту собственную ошибку в 2 единицы?
если сам АЦП в некоторой точке врет на 1-2 единицы, то никакой шум эту собственную ошибку АЦП не исправит.
в даташите на АТмега8 указано:
Absolute accuracy (Including INL, DNL, Quantization Error, Gain, and Offset Error) типовая 1,75 единиц.
но, во-первых, это типовая, а максимальная не указана,
и во-вторых, дробных чисел там не бывает, поэтому сразу типовую округляем до 2 единиц.
и как ты собрался шумом исправить эту собственную ошибку в 2 единицы?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- slav0n
- Опытный кот
- Сообщения: 882
- Зарегистрирован: Ср дек 01, 2010 00:38:15
- Откуда: Харьков
- Контактная информация:
Re: ATmega + 12bit ADC
ну ты даешь...Starichok51 писал(а):и во-вторых, дробных чисел там не бывает, поэтому сразу типовую округляем до 2 единиц.
а это что:
максимальная погрешность квантования всегда ±1/2 мл.разр.
Абсолютная погрешность - максимальное отклонение между идеальной прямолинейной и реальной передаточными функциями, в т.ч. внутри интервалов квантования. Минимальная абсолютная погрешность, таким образом, равна погрешности квантования 1/2 мл. разр.
ohmycode!
primuss3.com
primuss3.com
Re: ATmega + 12bit ADC
Посчитаем еще разокStarichok51 писал(а):ошибка внутри диапазона измерения составила до 2 LSB
Напряжение
Внутри диапазона 20,00В ошибка составила 2 LSB, на 1LSB приходится 0,04В.Dimon456 писал(а):АЦП 10 бит, давайте опустим опору до 4,096В, максимум 40,96В, итог 1LSB составит 0,04В. Погрешность составит +-0,04В.
Итог: 20,00В +-0,08В. И что это много?
Ток
Внутри диапазона 5,00А ошибка составила 2 LSB, на 1LSB приходится 0,01А.Dimon456 писал(а):АЦП 10 бит, давайте опустим опору до 4,096В, максимум 10,24А, итог 1LSB составит 0,01А. Погрешность составит +-0,01А.
Итог: 5,00А +-0,02А. И что это много?
О какой "кривизне"идет речь? Если это стандарт для АЦП 10 бит.
Или, может, вы хотите с точностью до 9 знака?
- Starichok51
- Модератор
- Сообщения: 19054
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: ATmega + 12bit ADC
диапазон у меня 10 Ампер, а не 5. а измерения я проводил в нескольких точках ВНУТРИ диапазона.Dimon456 писал(а):Внутри диапазона 5,00А ошибка составила 2 LSB, на 1LSB приходится 0,01А.
Итог: 5,00А +-0,02А. И что это много?
всё относительно.
погрешность 0,02А на диапазон 10А составит всего 0,2%, чего о многих случаях вполне достаточно.
напоминаю, что класс измерительного прибора определяется к концу шкалы (диапазона), а не в проверяемой точке.
и поэтому можно сказать, что класс моих измерителей на внутренним АЦП равн 0,2.
если сравнивать со стрелочным прибором класса 2,5, то всё очень прекрасно!
но мне захотелось получить измерители гораздо точнее, чем класс 0,2. и поэтому я взял внешний АЦП с 15 битами положительного результата.
и уж если зашла речь о моих проектах, то с внешним АЦП я применил внешние ЦАП с 12 битами - вместо ШИМ.
а ШИМ как ни фильтруй, всё равно останутся пульсации.
но примененный внешний ЦАП имеет огромную нелинейность - максимум интегральной нелинейности может достигать 14,5 единиц.
в итоге, без принятия каких-либо мер, этот внешний ЦАП окажется даже хуже, чем ШИМ. а ШИМ линеен абсолютно.
и я принял меру - поскольку измерители на внешнем АЦП имеют высокую точность, я сделал автоматическую коррекцию задания в ЦАП по результату измерения входной величины.
то есть, если я задал 5,00А, а измеритель показал 5,02А, то код в ЦАП будет уменьшаться до тех пор, пока измеритель не покажет 5,00А.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- slav0n
- Опытный кот
- Сообщения: 882
- Зарегистрирован: Ср дек 01, 2010 00:38:15
- Откуда: Харьков
- Контактная информация:
Re: ATmega + 12bit ADC
ну вот и появилась дробная часть в погрешности.Starichok51 писал(а):может достигать 14,5 единиц
Если немного упростить и взять только линейные погрешности, то имеем банальное линейное уравнение:
REAL = ADC * gain + offset
и кто сказал, что gain и offset не могут быть вещественными числами, да сколько угодно!
а нелинейность так и подавно.
ohmycode!
primuss3.com
primuss3.com
Re: ATmega + 12bit ADC
Starichok51 писал(а):диапазон у меня 10 Ампер,
все я правильно написал.Dimon456 писал(а):Внутри диапазона 5,00А
Создается таблица, цифры примерные будут:Starichok51 писал(а):но примененный внешний ЦАП имеет огромную нелинейность - максимум интегральной нелинейности может достигать 14,5 единиц.
для 9,00В - ЦАП=899
для 10,00В - ЦАП=985
Надо выставить 9,2 Вольта, берем из таблицы табличное значение для 9,00В - 899 (так как 9,2 больше 9 вольт) и следующее за ним 985.
Отнимаем 985-899=86, 86 ЦАП это нужно на 1 вольт, между диапазоном 9,00В и 10,00В.
Делим на 10. 86/10=8,6. Это 8,6 ЦАП на шаг перестройки 0,1 Вольта.
А нужно выставить 9,2В, 9,2-9,0 = 0,2В. То есть добавить 0,2 Вольта.
0,2В * шаг перестройки 0,1 Вольта. 8,6 + 8,6 =17,2. То есть нужно добавить 17 к табличному значению 899.
Итоговый ЦАП составит 899 + 17 = 916.
Табличный метод дает минимальную нелинейность между двумя точками.
- slav0n
- Опытный кот
- Сообщения: 882
- Зарегистрирован: Ср дек 01, 2010 00:38:15
- Откуда: Харьков
- Контактная информация:
Re: ATmega + 12bit ADC
зачем таблицы, если Старичок сделал программную ООС.
таблицы идут лесом
таблицы идут лесом
ohmycode!
primuss3.com
primuss3.com
Re: ATmega + 12bit ADC
вы создали идеальное устройство? использовали инструментальные оу? у вас заводская идеальная плата без подковырок? Я так и думал.slav0n писал(а):зачем таблицы
У вас показометр, с классом точности 0,2, а вот с погрешностью 14,5 единиц.
и зря, АЦП и ЦАП не должны быть связаны. Если что то пойдет не так, чему верить?slav0n писал(а):если Старичок сделал программную ООС.
- slav0n
- Опытный кот
- Сообщения: 882
- Зарегистрирован: Ср дек 01, 2010 00:38:15
- Откуда: Харьков
- Контактная информация:
Re: ATmega + 12bit ADC
верь Старичку, у него аппаратные 15 бит.
брату же делал, а брата западло обманывать
брату же делал, а брата западло обманывать
ohmycode!
primuss3.com
primuss3.com
- Starichok51
- Модератор
- Сообщения: 19054
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: ATmega + 12bit ADC
в ЦАПе да, погрешность (нелинейность) может оказаться дробной величиной. а в АЦП дробного кода просто быть не может.slav0n писал(а):ну вот и появилась дробная часть в погрешности.
ерунда. даже в узком участке полного диапазона погрешность у этого ЦАПа гуляет, как бык поссал. и интерполяция тут не поможет. исследовал я его во многих точках диапазона образцовым прибором.Dimon456 писал(а):Создается таблица
slav0n, брату я сделал на внутреннем 10-битном АЦП. ему достаточно и такой точности.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: ATmega + 12bit ADC
ну так создай таблицу с шагом 0,1В.Starichok51 писал(а):ерунда. даже в узком участке полного диапазона


