@Anonymous5454587

Как из аналогового сигнала получить вольты?

Как из аналогового сигнала получить вольтаж (к примеру 1023 = 5V)?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
На ардуино есть отличная функция map и на англ., для преобразования диапазонов.
spoiler

_______________________
Математически функция map() может быть записана так:

long map(long x, long in_min, long in_max, long out_min, long out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
//а если заменить long на float или double, то она будет работать с плавающей точкой
//и соответственно изменить имя функции, что бы оно не пересекалось с родной библиотекой ардуины

_______________________

Если считать в милливольтах, т.е.
y = map(x, 0, 1023, 0, 5000), т.е. 1023 - соответствует 5000 мВ, т.е. 5 В.

Если надо можно сделать на ее основе свою, но переваривающую плавающие точки. Только помните, что плавающие точки считать немного дольше, чем целые числа.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@VT100
Embedded hardware & software.
Тащем-то, если в ЕГЭ не кончал, то есть т.н. "пропорции". Если А/Б=В/Г, то В=А*Г/Б.
Тут, конечно, может быть более сложный случай - опорное напряжение может отличаться от 5 В. Но принципиальных отличий нет.
Ответ написан
@res2001
Developer, ex-admin
Не знаю как там в ардуинах, но ...
Думаю, что аналоговый сигнал подается на АЦП и в программе вы имеете дело уже с дискретным (оцифрованным) сигналом.
Так вот, в АЦП, обычно существует пара коэффициентов (смещение нуля и масштаб), в документации к АЦП приводится формула как использовать эти коэффициенты с цифровым отсчетом сигнала, что бы получить вольты (кстати, АЦП не обязательно меряет именно напряжение). Обычно формула это что-то вроде: (X + offset)*scale. Но могут быть и другие варианты.
Коэффициенты на всех АЦП разные. Даже на двух одинаковых АЦП они могут быть разные (и как правило они разные). АЦП калибруются на заводе и коэффициенты зашиваются в чип. В документации к АЦП должен быть описан способ получения этих коэффициентов. Если АЦП многоканальное, то коэффициенты могут быть разными для каждого канала.
В библиотеке работы с АЦП, обычно присутствуют функции получения калибровочных коэффициентов и может быть даже получение уже преобразованного сигнала.

Вообще если бы АЦП было идеальным, то преобразовать цифровой отсчет в вольты было бы просто. Например АЦП выдает 16 битные без знаковые отсчеты (т.е. на выходе АЦП числа от 0 до 65535, тип данных uint16_t), диапазон измерений допустим [-5; +5]В. Пусть uint16_t Х - цифровой отсчет, полученный от АЦП, тогда преобразовать его в вольты можно так: ((double)(((int32_t)X) - 0x7FFF)) / 0x7FFF ) * 5.0. При желании можно раскрыть скобки и получить те самые 2 калибровочных коэффициента для идеального АЦП.
Но т.к. АЦП не идеальны и там присутствуют разнообразные погрешности и помехи, то и появляются те самые калибровочные коэффициенты. Формула преобразования остается примерно той же самой, но используются уже не точные числа, а подобранные коэффициенты.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы