Как проинтегрировать уравнение

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

1. Метод прямоугольников

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

Суть метода прямоугольников сводится к тому, чтобы разбить всю площадь под кривой на равные по ширине прямоугольники (см. рисунок), а затем сложить вместе их площадь. Вычисление площадей прямоугольников будем выполнять последовательно, шаг за шагом. Таким образом, на шаге n нам потребуется вычислить следующее выражение:

y(n) = y(n-1) + x(n-1)*T

где:
n — номер текущего шага;
y(n) — значение интеграла на шаге n;
y(n-1) — значение интеграла на предыдущем шаге n-1;
x(n-1) — значение подынтегральной функции на предыдущем шаге n-1;
T — приращение времени на текущем шаге.

Другими словами, на каждом этапе работы алгоритма мы прибавляем к уже накопленной площади, новый прямоугольник, который на картинке отмечен пунктиром.

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

2. Метод трапеций

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

Как известно, площадь трапеции со сторонами a и b равна:

S = a*b*h/2

Исходя из этого, разностное уравнение для данного метода интеграции принимает вид:

y(n) = y(n-1) + (x(n-1) + x(n))*T/2

Использование трапеций позволяет снизить погрешность интегрирования, но не может полностью его устранить. На рисунке видно, что между кривой и краем трапеции все еще присутствует небольшой зазор. Для достижения более точных значений интеграла применяются другие, более сложные методы. Например, комбинированный метод использует взвешенную комбинацию двух рассмотренных методов, а в методе параболической аппроксимации на каждом шаге интегрирования вычисляется площадь параболы.

В компьютерном моделировании физических процессов применяются еще более точные, но чрезвычайно ресурсоемкие подходы, такие, как, например, метод Рунге-Кутта.

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

3. Физический смысл интеграла

Рассмотрим применение интеграла в классической динамике. Пусть некоторое тело (большой человекоподобный робот) двигается постоянным ускорением a. Другими словами тело двигается равноускоренно (либо равнозамедленно). Следовательно, функцию ускорения от времени можно записать следующим образом:

a(t) = a0

Интегрируя данную функцию по времени t мы получим выражение для функции скорости v от времени t:

v(t) = v0 + a0*t

Еще раз интегрируя полученное выражение мы получим уже функцию расстояния s от t:

s(t) = s0 + v(t)*t = s0 + v0*t + a0*t*t/2

Таким образом, зная скорость тела мы легко можем узнать расстояние, которое оно преодолело за некоторое время.

4. Интегрирование показаний гироскопа

Как уже неоднократно говорилось, на выходе типичного MEMS-гироскопа мы имеем вовсе не угол наклона датчика, а угловую скорость его вращения. Другими словами, MEMS-гироскоп — это на самом деле гиротахометр, и чтобы узнать угол наклона нам потребуется проинтегрировать его показания.

Пусть угол поворота датчика angle измеряется в градусах (гр), а угловая скорость вращения aspeed в градусах за секунду (гр/сек). Для вычисления интеграла применим метод прямоугольников. Для этого разобьем временную ось на небольшие отрезки по delta секунд в каждом. Таким образом, каждые delta секунд мы будем вычислять площадь очередного прямоугольника и прибавлять полученное значение к уже накопленной площади:

angle = angle + aspeed * delta

Ниже представлен код соответствующей программы для Arduino.

const int gyrPin = A0; const int INTEGR_DELAY = 20; const int SERIAL_DELAY = 100; // Датчик Pololu LPR550AL const float vref = 3.3; const float vzero = 1.23; const float sens = 0.0005; const float adc = 1023; int integr_time, serial_time, real_delta; short gyr_raw; float angle, aspeed; void setup() { Serial.begin(9600); angle = 0; } void loop() { // Интегрирование скорости поворота гироскопа time = millis(); real_delta = time — integr_time; if( real_delta > INTEGR_DELAY ){ integr_time = time; gyr_raw = analogRead(gyrPin); aspeed = ((gyr_raw * vref)/adc — vzero)/sens; angle = angle + aspeed * real_delta; } // Отправка угла через последовательный порт на ПК time = millis(); if( time — serial_time > SERIAL_DELAY ){ serial_time = time; Serial.print(angle, 4); } }

Данный Arduino-скетч рассчитывает угол наклона гироскопа и отправляет данное значение на рабочую станцию через последовательный порт каждые 100мс.

Следует заметить, что для преобразования входного аналогового сигнала в конкретное значение угловой скорости нам потребовалось использовать известное выражение:

gyr = (gyr_raw * vdd — gyr_zero) / gyr_sens

где величины vdd, gyr_zero и gyr_sens следует брать из спецификаций используемого гироскопа.

5.

Повышение точности интегрирования

Мы знаем, что точность расчета интеграла тем больше, чем меньше отрезок дискретизации delta. В указанной выше программе, данный временной отрезок delta равен 20мс (INTEGR_DELAY), что в принципе позволяет достаточно сносно решать задачу стабилизации мультикоптера. Как вариант, для увеличения точности мы можем попробовать уменьшить delta, если конечно нам это позволит мощность микроконтроллера.

Либо, мы можем применить другой метод интегрирования, например метод трапеций. В последнем случае программа вычисления угла наклона гироскопа не слишком усложнится и примет следующий вид:

const int gyrPin = A0; const int INTEGR_DELAY = 20; const int SERIAL_DELAY = 100; // Датчик Pololu LPR550AL const float vref = 3.3; const float vzero = 1.23; const float sens = 0.0005; const float adc = 1023; int integr_time, serial_time, real_delta; short gyr_raw; float angle, old_aspeed, aspeed; void setup() { Serial.begin(9600); angle = 0; aspeed = 0; } void loop() { // Интегрирование скорости поворота гироскопа time = millis(); real_delta = time — integr_time; if( real_delta > INTEGR_DELAY ){ integr_time = time; gyr_raw = analogRead(gyrPin); aspeed = ((gyr_raw * vref)/adc — vzero)/sens; angle = angle + (aspeed + old_aspeed) * real_delta / 2; old_aspeed = aspeed; } // Отправка угла через последовательный порт на ПК time = millis(); if( time — serial_time > SERIAL_DELAY ){ serial_time = time; Serial.print(angle, 4); } }

Заключение

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

Об этом плохом эффекте и о том, как его победить, я поведаю в следующей статье под названием  «Комплементарный фильтр».

Изменено:

Законы сохранения в механике

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

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

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

Однородность пространства означает, что свойства пространства во всех его точках одинаковы. То есть выбор начала системы отсчета не влияет на протекание и характер механических явлений.

Этим свойством пространства обусловлено существование интеграла, который называется импульсом механической системы. Условие сохраняемости импульса системы в механике называется законом сохранения импульса.

— Изотропность пространства означает, что все направления в пространстве эквивалентны, то есть ориентация осей координат не влияет на механические процессы. Величина, постоянство которой обусловлено этим свойством пространства, называется моментом импульса механической системы, а соответствующий закон, устанавливающий условия сохраняемости этой величины, называется законом сохранения момента импульса.

Однородность времени означает, что все моменты времени физически равнозначны. Другими словами, протекание механических явлений не зависит от выбора начального момента времени.

С однородностью времени связано существование третьего аддитивного интеграла — энергии системы. Условия, определяющие постоянство энергии в механике, называются законом сохранения механической энергии.

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

Целью последующего изложения является поиск аддитивных интегралов движения и анализ важнейших следствий, вытекающих из их существования.

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

 


Дата добавления: 2014-01-07; Просмотров: 1497; Нарушение авторских прав?;




Читайте также:

Skip to main content.

  время интегрирования
Время, в течение которого интегральная составляющая регулятора изменяет выходной сигнал на значение, равное значению скачкообразного изменения входного сигнала.
[ГОСТ 9988-84]
EN integral action time
for an integral element, the reciprocal of the integral action coefficient, if its input and output variables have the same unit
Note 1 – The integral action time then is given by
TI=1/KI
where KI is the integral action coefficient.
Note 2 – The integral action time can also be given as that duration of the time interval which the output variable needs to reach the same value as a stepwise variation of the input variable.
[IEV ref 351-28-21]
FR constante de temps d'intégration
pour un élément à action par intégration, inverse du coefficient d'action par intégration, si ses variables d'entrée et de sortie sont dans la même unité
Note 1 – La constante de temps d'intégration est alors donnée par
TI=1/KI
où KI est le coefficient d'action par intégration.
Note 2 – La constante de temps d'intégration peut également être donnée comme la durée de l'intervalle de temps nécessaire pour que la variable de sortie atteigne la même valeur qu'une variation en échelon de la variable d'entrée.
[IEV ref 351-28-21]

Тематики

  • автоматизация, основные понятия

EN

  • integral action time
  • integral time
  • integration time

DE

FR

  • constante de temps d’intégration

 

Добавить комментарий

Закрыть меню