Я пишу встроенное приложение для ATtiny88 - одной из его задач является измерение напряжения двух последовательно соединенных автомобильных аккумуляторов 12 В.
Микроконтроллер питается примерно от 4,5-5 В (LM317), измеряемые напряжения (~24 В и ~12 В) подключаются к двум каналам АЦП через соответствующие делители напряжения. В моем приложении я должен использовать внутреннюю опорную ширину запрещенной зоны, теоретически равную 1,1 В.
Вероятно, мне следует выполнить какую-то процедуру калибровки, поэтому сейчас я понял что-то вроде этого:
Я попытался измерить внутреннюю опорную ширину запрещенной зоны — к ней внутренне подключен один из каналов АЦП — но он всегда возвращает 1023 — максимальное значение для 10-разрядного АЦП.
У меня вопрос, как наиболее точно измерить напряжения? Опорное напряжение запрещенной зоны, вероятно, различается между разными чипами (в техническом описании указано 1-1,2 В). Есть ли лучший способ сделать калибровку, чем тот, который я делаю прямо сейчас? Пожалуйста помоги.
Эталон ширины запрещенной зоны определяет верхний предел диапазона АЦП, поэтому вы всегда получите показание 1023. Даже деление его на меньшую сторону не поможет, так как АЦП всегда будет измерять фиксированную часть своего эталона.
В то время как последний пункт позволяет откалибровать АЦП для определенного напряжения с высочайшей точностью, вы также можете выполнить измерение для нескольких напряжений. Таким образом, вы узнаете, есть ли смещение (0V не является 0x0000
), нелинейный или другой эффект. Вот результат моей работы:
Это калибровка 16-битного биполярного АЦП с некоторыми входными электронными устройствами, которые также влияют на качество измерения. В целом с линейностью все в порядке, и вы можете использовать линейную функцию для преобразования показаний АЦП в напряжение наоборот. Однако остаток (разница между считанным и ожидаемым значением АЦП) показывает эту волнообразную кривую. Эффект не большой, но он есть.
Обратите также внимание, что я не использовал самое высокое и самое низкое значение для расчета функции, так как это привело бы к изгибу левой стороны и к изгибу правой стороны остатка и, таким образом, дало бы меньшую точность. Вместо этого функция определяется так, чтобы она хорошо соответствовала показаниям во всем диапазоне. (Я мог бы выбрать что-то нелинейное для еще лучших результатов)
Хорошо, я думаю, это больше, чем то, что вам нужно знать. Последний пункт:
Всегда думайте о том, какая точность достижима и осуществима. Ваш АЦП имеет динамический диапазон 0,1% (1/1023), поэтому вам следует учитывать, когда вы используете резисторы 1% для делителя, но резисторы 0,1% будут в порядке. И если ваш мультиметр имеет точность 3%, это лучшее, что вы можете получить для калибровки. Наконец, 0,1% от 24 В составляет 24 мВ, поэтому решите, какая точность вам нужна.
Внутренний эталон ширины запрещенной зоны не очень точен - он просто стабилен (т.е. не будет сильно меняться в зависимости от температуры и в течение срока службы чипа). Поэтому вам нужно будет выполнить калибровку с использованием известного напряжения и сохранить его в устройстве, как вы описали.
Поскольку АЦП имеет хорошую линейность по своей конструкции, вы можете использовать практически любое напряжение для расчета коэффициента масштабирования, если вы знаете, что это такое.
Другим вариантом, хотя и более дорогим, является подключение к схеме внешнего эталона ширины запрещенной зоны и использование его в качестве эталона для АЦП.