Перейти к содержанию
    

Измерение угла поворота оси

Вот... Дожился...

Уже сам не могу сообразить - Имеем: потенциометр с логарифмической характеристикой, АЦП. Измеряю напряжение на движке резистора, получаю значительную нелинейность зависимости измеренного значения от угла поворота (ну конечно). Как линеаризовать эту зависимость? Требуется получить равенство изменения показаний при повороте оси на одинаковый угол от среднего положения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот... Дожился...

Уже сам не могу сообразить - Имеем: потенциометр с логарифмической характеристикой, АЦП. Измеряю напряжение на движке резистора, получаю значительную нелинейность зависимости измеренного значения от угла поворота (ну конечно). Как линеаризовать эту зависимость? Требуется получить равенство изменения показаний при повороте оси на одинаковый угол от среднего положения.

А какие средства для обработки имеются? Какая скорость обработки требуется?

 

В общем случае, предположим, что есть некий МК, время не слишком критично (десяток мс, скажем, есть в запасе). Тогда просто полученное значение подать на вход функции линеаризации - функции, обратной той, которая реализованна в потенциометре.

 

Если там чистый логарифм, то искомая функция степеннАя. Ее можно разложить в ряд и вычислять до энного члена - тут от требуемой точности зависит. Этот вариант скорее всего потребует плавающей точки, зато он самый простой в реализации.

 

Можно функцию реализовать путем выборки по таблице с последующей кусочно-линейной интерполяцией. Тут придется повозиться с диапазонами и погрешностями. Зато этот способ значительно быстрее предыдущего.

 

В общем, для конкретного совета слишком мало данных. А в общих чертах оно где-то так, как сказал чуть выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот... Дожился...

Уже сам не могу сообразить - Имеем: потенциометр с логарифмической характеристикой, АЦП. Измеряю напряжение на движке резистора, получаю значительную нелинейность зависимости измеренного значения от угла поворота (ну конечно). Как линеаризовать эту зависимость? Требуется получить равенство изменения показаний при повороте оси на одинаковый угол от среднего положения.

Нужно знать саму зависимость. В ряде случаев удается получить аналитическое решение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Cпасибо. подбираю вид кривой... А данных у меня у самого нет :(
Тогда - как предложил dxp. Только вместо линейной интерполяции лучше использовать квадратичную - при одинаковом количестве опорных точек ошибка будет меньше, а вычислений добавит немного.

Вообще-то, наиболее часто используемый подход - взять N опорных точек на интересующем отрезке и построить интерполяционный полином степени N-1 (хотя, здесь есть сложности: выбор критерия оптимизации, борьба с краевыми эффектами). Можно посмотреть в Матлабе или в справочнике по математике.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

A kakova razryadnost ADC? Esli 8 bitov to sdelay tablicu i odin na odin perekodiruy - vsego 256 baytov na eto udovolstvie uydet .

Kstati esli prostoy mcu s sirotnoy modulyaciey i ADC naydes voobse vse na odnoy mikruxe mozno sdelat .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Таблица это хорошо, да только резистор часто будет меняться, калибровка при каждом включении, используется не весь диапазон, а сектор, причем его положение каждый раз может быть сдвинуто. тут видимо, всё-таки аналитический путь... Тем более что основные вычисления во время калибровки - значит, проблема быстродействия не так остро стоит.

А какая точность достижима при квадратичной интерполяции по 3 точкам (из них 2 крайние) - навскидку оценку не подкинете? А я тем временем буду вспоминать математику...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Таблица это хорошо, да только резистор часто будет меняться, калибровка при каждом включении, используется не весь диапазон, а сектор, причем его положение каждый раз может быть сдвинуто. тут видимо, всё-таки аналитический путь... Тем более что основные вычисления во время калибровки - значит, проблема быстродействия не так остро стоит.

А какая точность достижима при квадратичной интерполяции по 3 точкам (из них 2 крайние) - навскидку оценку не подкинете? А я тем временем буду вспоминать математику...

 

Разрешите и мне:

Разложим еще раз по полочкам.

1. Уравнение преобразования Y=f(X) (градуирочная характеристика) имеет логарифмический характер и зависит от величины резистора.

2. Получить уравнение преобразования (или функцию, обратную уравнению преобразования X=F(Y)) можно экспериментально с помощью калибровки (градуировки). Этот процесс заключается в снятии зависимости (таблицы) {(Xi,Yi), i=0...n}.

3. Тогда для нахождения значения физической величины X можно использовать интерполяционную таблицу {(Xi,Yi), i=0...n} (тут все те алгоритмы, которые уже предложили dxp и Stanislav - линейная, квадратичная или n степени интерпол. полином). Погрешность вычисления X будет нулевая в узлах интеполяции и достигать максимального значения, оцениваемого формулой (приведена для полинома Лангранжа n степени)

 

|F(Y)-L(Y)|<=(Mn+1/(n+1)!)*|(Y-Y0)*(Y-Y1)...(Y-Yn)|
где L(Y) - интерполяц. полином, 
      Mn+1 - максим. значение (n+1) производной F(Y) на участке [Y0,Yn]

 

4. Можно также воспользоваться методом наименьших квадратов МНК (или методом максимального правдоподобия, если нужен другой критерий). При этом (в общем случае) ищутся коэффициенты аппроксимирующего полинома X=A0+A1*Y+A2*Y**2+...+AM*Y**M по критерию минимума СКО

min(SUM((A0+A1*Yi+A2*Yi**2+...+AM*Yi**M)-Xi)**2)

что в конечном счете приводит к решению системы (M+1) линейных уравнений (для линейной функции - 2 уравнения)

Достоинством МНК является минимизация ошибки "в среднем" (а также сглаживание исходной экспериментальной зависимости, т.к. данные калибровки {(Xi,Yi), i=0...n} - это тоже измерения и имеют свои погрешности, хотя бы погрешность установки эталона).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5. Вернемся к логарифмическому характеру уравнения преобразования (например, Y=ln(A*X)), где A - некоторый коэфф., вычисляемые например по МНК. Обратная функция - X=EXP(Y)/A). Для того чтобы получить коэфф. аппроксимирующего полинома нужно исходные экспериментальные данные линеризовать используя замену переменных x=X,y=ln(Y). Если логарифм не натуральный, то обратная функция степенная и формулы замены переменных другие.

Вообще, почти в любом учебнике по численным методам должны быть и эти преобразования, и выбор вида эмпирической формулы (если не найдете, могу отсканировать).

6. Главная проблема в другом, хотя, может и решаемая (вернемся к интерполяции). Если применять квадратичную интерполяцию к степенной функции то погрешности могут быть большие (уменьшение их за счет увеличения числа узлов интерполяции). Поэтому все равно лучше предварительная линеризация экспериментальных точек и использование кусочно-линейной интерполяции.

 

Ну вот получилось достаточно нудно :blink:

В конечном счете многое определяется более точной постановкой задачи (все может быть гораздо проще на самом деле :) ) и экспериментальными кривыми. Может можно и аналитически получить уравнение преобразования (как зависимость от величины сопротивления резистора и входа).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Думаю, теперь тему можно закрывать и выполнять рекомендации ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...