Я использую atmega328p для своего проекта. Я должен прочитать напряжение батареи и отобразить его в своем облаке. Для этого я использую АЦП. Теперь я получаю значение АЦП для приложенного входного напряжения. Но мне нужно преобразовать АЦП в напряжение.
Когда я перехожу к таблице данных, я заметил следующее уравнение
Итак, чтобы преобразовать АЦП, Vin=(ADC/1024)*Vref
.
Но когда я искал в Google, я нашел другое уравнение, и оно
Vin=(ADC/1023)*Vref
Теперь я сомневаюсь, какое уравнение использовать?
Если мы используем 1024, значение АЦП будет 0001, когда входное напряжение равно напряжению 1LSB( Vref/1024
).
Если мы используем 1023 (второе уравнение), значение АЦП будет 0000, когда входное напряжение равно напряжению 1LSB ( Vref/1024
)
Сначала позвольте мне процитировать картинку, на которой уже есть ответ: «0x000 представляет аналоговую землю, а 0x3FF представляет выбранное опорное напряжение минус один младший бит». Это означало бы, что для представления опорного напряжения Vref потребуется на один LSB больше, чтобы результат был 0x400 или 1024. Таким образом, напряжение, равное Vref, просто не может быть представлено в качестве результата, это особый случай. Для всех других напряжений, которые по крайней мере на 0,5 шага ниже Vref (между 1022,5 и 1023,5), результат действителен.
У Atmel есть примечания по применению АЦП для AVR, в которых объясняется, как работает последовательный АЦП, и это не очевидно, но помогает понять, какой из них правильный. На AVRFreaks также есть много тем о том, какая из них верна. И вооружившись этой информацией, 1024 правильный и в таблице данных нет ошибки.
На самом деле, АЦП не идеальны, так как результаты могут иметь более 1 отсчета ошибки, и на самом деле не имеет большого значения, используется ли 1023 или 1024, поскольку в любом случае вам редко требуется точность 1 отсчета из 1024 в крайнем случае Vin = Vref. .
10-битный АЦП означает, что вы можете представить ввод как число от 0 до 1023, поэтому правильный ответ - использовать 1023, а не 1024. Похоже, в таблице данных есть ошибка, поскольку 0x3FF - это 1023, а не 1024.
Vref-1LSB voltage
когда мы рассматриваем n-битный АЦП. Он будет читать опорное напряжение как (2 ^ n - 1),
но когда мы говорим о шагах, это ((2 ^ n - 1) + 1 (а также подсчет нулевого значения))
пример: когда вы начинаете считать что-то с «нуля». если у вас есть общее количество, скажем, 81 ... но на самом деле это не 81, это будет 82 (включая 0 как одно значение)
так что в вашем случае вы говорите о 10-битном АЦП, поэтому ... максимальное опорное напряжение, которое он может прочитать, равно (2 ^ 10 - 1) = 1023.
но он имеет максимальные шаги 1023 + 1 = 1024
значит надо брать 1024..
MCV
ЭКС-АВРФРИК
MCV