Суммирура выше сказанное о
преведённых решениях, то основной из недостаток - это аппаратные затраты.
Следовательно, размер, масса и энергопотребление системы возрастают и
требования не выполняются. Так же, стоит отметить, что программа
микроконтроллера немного усложняется, что приводит к увеличению вычислений.
Хотя это и не противоречит требованиям, а скорее наоборот. В следущем разделе
будет предложенно решение проблемы за счёт увеличения сложности программы, но
которое не увеличивает аппаратных затрат.
.5 Теоретические основы
предлогаемого решения и вывод аналитических выражений
В данном разделе предлагается решение проблемы, которое удовлетворяет всем поставленным требованиям. Применение этого решения должно обеспечить одновременное выполнение точности и динамики, при не увеличении аппаратных затрат. Идея этого решения будет раскрыта далее.
Рисунок11 - Дискретизация и ограничение
сигнала угловой скорости гироскопа
Далее рассматривается случай, когда сигнал ограничен. Поскольку, проблемы нет, когда сигнал не ограничен. Идея заключается в том, чтобы восстановить или, другими словами, реконструировать сигнал с помощью программных средств.
И так, на вход микроконтроллера поступает срезанный сигнал в цифровом коде. Также, известно время, когда этот код был полученн. Таки образом известны все координаты каждой точки. Предполагается, что можно найти амплитуду и фазу сигнала, используя эти точки. Также, используя знание о том, что частота сигнала постоянна и известна и дрейф сигнала близок к нулю.
Получается, что не известны две переменные, это амплиуда и фаза сигнала. Если найти их значение, то возможно реконструировать или восстановить сигнал. Это может быть сделано с помощью программного обеспечения, что не увеличивает аппаратные затраты.
Для того чтобы найти две неизвестных, нужна
система уравнений, состаящая из двух уравнений. Такая система (5) составленна
по двум точкам из не срезанной или не искажённой области. Эта система имеет две
неизвестные переменные и два уравнения. Следовательно, решение данной системы
уравнений существует.
(5)
Необходимо решить эту систему уравнений. Для
этого фаза (6) выражается из первого уравнения и подставляется вдругоеуравнение
(7).
(6)
(7)
Далее выражается амплитуда из этого уравнения и
получается уравнение (8). Для этих и других математических операций исползуются
фундаментальные правила тригонометрии. Также стоит отметить, что значение
амплитуды принималось положительным во время математических операций.
Полученное уравнение (8) позволяет найти значение амплитуды по двум точкам.
(8)
В данном уравнении все переменные известны. Достаточно подставить их в формулу и численное значение амплитуды будет найдено. После чего это значение амплитуды подставляется в формулу (6). И находится численное значение фазы. Но на самом деле это будет множество значений фазы. Потому что в формуле есть число n, где n - это любой элемент из множества целых чисел. Для решения достаточно одно значение n, например, если n приравнять к нулю. В результате, полученны значения фазы и амплитуды с помощью двух точек. Таким образом, информация о сигнале полностью известна. И возможно реконструировать сигнал в искаженной области.
Однако, предложенное решение не учитывает паразитные эффекты, такие как дрейф сигнала, шум и изменение частоты в пределах погрешности. Эти эффекты будут расмотренны позже, на модели. Кроме того, амплитуда и фаза сигнала изменяются во времени потому, что они несут в себе информацию об угловой скорости. И это не учитывалось при постановке задачи. Тем не менее, предполагается, что изменения амплитуды и фазы происходят медленно. И за время половины периода сигнала изменяются не сильно. Другими словами, изменениями амплитуды и фазы за половину периода сигнала можно пренебреч, поскольку угловая скорость изменяется не мгновенно. Если бы она изменялась быстро, то амплитуда, определённая по двум точкам, силно бы отличалась от реальной амплитуды в послудующие моменты времени. И, было бы хорошо выяснить граничные условия, когда можно пренебрегать, а когда пренебрегать нельзя. Это также можно посмотреть на модели.
Идея представленна и теперь, необходимо
разработать алгоритм, что бы микроконтроллер мог выполнить реконструирование
сигнала.
.6 Разработка алгоритма восстановления сигнала
на основе полученных аналитических выражений
В предыдущем разделе, была предложенна идея решеня. Эту идею нужно представить в виде алгоритма. Тогда работоспособность этой идеи может быть проверена путем моделирования. В случае положительных результатов моделирования этот алгоритм может быть легко адаптирован для выполнения микроконтроллера. Для начала, представленно словесное описание алгоритма.
На вход алгоритма поступают данные. Эти данные
есть дискреты сигнала угловой скорости. Другими словами, на вход алгоритма
поступает точка с двумя координатами: напряжение сигнала и время оцифровки
этого напряжения. Далее эта точка попадает в сдвиговый регистр, который хранит
информацию о двух точках. Эта информация обновляется с каждым приемом данных.
Далее проверяется условие, если принятое значение близко к максимальному или
минимальному значению, то стек больше не обновляется и вычисляются амплитуда и
фаза, на основе двух точек из сдвигового регистра. Максимальное и минимальное
возможные значения от АЦП известны. Например, в двоичной системе, это могут быть
все единицы и все нули, соответственно. Эти значения зависят от типа АЦП.
Потом, следующие данные поступают ограниченными или другими словами срезанными,
и тогда из этих данных берётся только значение времени (
),
а новое значение напряжения (
) рассчитывается на
основе этого времени (
), уже рассчитаной
амплитуды (A) и фазы (
), а также
известной частоты (
). Это показывает
уравнение (9).
(9)
Кроме того, новое значение напряжения (
)
передается в основную программу, и оно участвует в алгоритме стабилизации.
Другими словами, искаженое или ограниченое значение заменяется расчетным
значением (
). Ограничение
происходит значениями max и min показанными на рисунке 11.
Если сигнал имеет не большую амплитуду, то этот сигнал остается неизменным. Это показано на рисунке 11. В то же время, сдвиговый регистр из двух точек обновляется все время. Этот регистр действует как буфер для хранения точек.
Блок-схема алгоритма показана на рисунке 13.
Принятые данные поступают на вход алгоритма. Есть код с АЦП (buf_in) и значения
счетчика (t). Выход алгоритма является скорректированное значение c АЦП
(buf_out). Важно понимать, что алгоритм выполняется для каждого нового значения
АЦП. Другими словами, алгоритм выполняется в цикле.
Рисунок 13 - Блок сема разработанного алгоритма
Алгоритм имеет две симметричных ветви из блоков условия. Одна из них для положительных значений, а другая для отрицательных значений. Первое условие в этих ветвях есть проверка близость значений с АЦП к границе, которая заданна значениями a_max и a_min. Они немного не доходят до максимально возможной граници. Эти цифры выбираются вручную один раз. Затем амплитуда и фаза пересчитывается после выполнения этого условия. Это происходит один раз. Но верхнее условие продолжает работать и пересчитывается новое значение напряжения, на основе расчитанной амплитуды и фазы. В конце алгоритма буфер обновляется, то есть сдвигаются значения.
Суммируя вышесказанное, были рассмотренны существующие стандартные решения проблемы. Но, они увеличили аппаратные затраты, что не удовлетворяет требованиям. Тогда была предложенна идея решения и разработан алгоритм на её основе, что приводит к увеличению сложности программы, а аппаратные затраты не увеличиваются. Это полностью удовлетворяет требованиям. Что касается идеи, то сама по себе она не представляет нечто новое. Все математические расчёты, которые применялись, на уровне не сложной тригонометрии. Но, новое, заключается в том, что эту идею не применяли для решения данной задачи. Также, стоит отметить, что применить это решение возможно, благодаря определённой форме сигнала и для сигнала произвольной формы предложенное решение применить нельзя.
Далее, поскольку алгоритм будет работать на
микроконтроллере, возможность его запуска необходимо оценить. Кроме того,
алгоритм нужно проверить на работоспособность. Для этой цели необходимо
провести моделирование. Это будет сделано в следующем разделе.
.7 Разработка модели работы алгоритма в пакете
Matlab
Алгоритм выполняется посредством микроконтроллера. Моделирование позволяет взглянуть на работу программы до реализации этого алгоритма в реальной системе. И это хорошо. Ошибки программы могут быть обнаружены на ранней стадии. Это позволит избежать возможного повреждения системы.
Кроме моделирования самого алгоритма необходимо смоделировать систему в которой этот алгоритм запускается. Это нужно для того, чтобы сформировать тестовые сигналы для проверки. Конечно, это будет не полноценная модель системы, а только необходимые для проверки части. Таким образом, следующие особенности должны быть рассмотрены. Ограниченный синусоидальный сигнал подается на вход в программу. Этот сигнал дискретизируется по напряжению и времени. Сигнал имеет искажения, такие как шум и дрейф. Кроме того, сигнал может иметь различный уровень среза. Другими словами, необходимо реализовать алгоритм, а также для симуляции некоторый вид оболочки, в которой алгоритм будет работать.
И алгоритм, и оболочка были смоделированы в Matlab. Код для этих моделей представлен в Приложении 1. Matlab был выбран, потому что он простой в использовании. Также, программный код в Matlab близок к программному коду на языке C. Таким образом, легко адаптируется для работы на микроконтроллере. Кроме того, легко построить графики, используя стандартные средства Matlab. Модель состоит из нескольких м - файлов. Один из которых содержит реализацию алгоритма в виде функции. А другой является реализацией оболочки, в которой выполняется алгоритм.
Функция алгоритма реализованна в соответствии с
блок-схемой, которая была рассмотренна ранее. Осталось более подробно
рассмотреть оболочку в которой запускается программа. На рисунке 15 показан
заголовок функции оболочки.
Русунок 14 - Заголовок функции оболочки, котороя
задаёт тестовые сигналы на вход алгоритма
Это функция имеет большое количество входных переменных. С их помощью можно легко изменить параметры системы, которые могут повлиять на работу алгоритма в реальности. Таким образом, эффективность предложенного алгоритма может быть проверенна и оценена.
Существует возможность изменять параметры, такие как фактическая амплитуда еще не ограниченного сигнала, фаза, дрейф сигнала, число периодов стимуляции. Кроме этого, может быть изменён уровень ограничения сигнала, который выраженн в процентах от не ограниченной амплитуды.
И так, предлагаемое решение реализованно в
Matlab. Также была оценена возможность реализации этого решения на
микроконтроллере. Таким образом, остается запустить и протестировать модель.
Конечно, с первого раза модель не заработала. Но ошибки исправлялись по ходу
реализации и в итоге первые результаты были получены. Эти результаты
представлены в следующих разделах.
.8 Результаты моделирования
В начале надо просто проверить работу алгоритма.
В этом случае паразитные эффекты не учитываются, например, шум и дрейфа
сигнала. Другими словами, сигнал имеет идеальную синусоидальную форму, но это
только в не ограниченной, не искажённой или не срезанной области. В искаженной
области, сигнал отображается в виде горизонтальной линии. Рисунок 15 показывает
это. На этом же рисунке уже реконструированный, восстановленный сигнал. Это
целая синусоида.
Рисунок 15 - Идеальный ограниченный и восстановленный сигнал угловой скорости гироскопа
Итак, график показывает, что алгоритм работает. На вход алгоритма подаётся ограниченный сигнал. Правильнее сказать, поступают точки или дискреты ограниченного сигнала. Амплитуда 5 вольт. Это амплитуда ещё не срезанного сигнала и она задается в оболочки, где и потом обрезается. А алгоритм её точно восстанавливает, вычисления получаются без какой-либо ошибки. Это видно и на графике, и если выводить полученное числовое значение. Аналогично обстоит дело с определением фазы. На рисунке сигнал изображён с нулевой фазой. Частота сигнала 233 Гц. Частота дискретизации составляет 7 кГц. Уровень среза составляет 50 процентов. Сигнал ограничен значением половины амплитуды. Все это делается с помощью оболочки. Кроме того, оболочка имитирует прерывание в нужное время для алгоритма для каждой точки.
С такими параметрами видно, что количество точек на спадающем или нарастающем фронте равно пяти. Этого более чем достаточно для корректной работы алгоритма. Более того, минимальное количество точек на один фронт равно двум. Такая ситуация будет показана далее. Также будет рассмотренна ситуация, когда в среднем меньше двух точек на один фронт.
Таким образом, алгоритм правильно рассчитал фазу и амплитуду. Т.е. полученые уравнения (6) и (8) являются правильными. Потом, на основе рассчитанных амплитуды и фазы, программа реконструировала сигнал для каждой точки в искаженной области. Таким образом, алгоритм был разработан правильно. Более того, при расчёте не возникают ошибки и полученны точные значения амплитуда и фазы. Конечно, это модель и моделируются идеальные условия, и в реальности всё может оказаться не так хорошо. Поэтому, далее необходимо промоделировать не идеальные условия работы, какие как шумы и тому подобное.
Далее, на рисунке 16 показанна ситуация, когда
возникает дрейф сигнала. Другими словами, сигнал имеет постоянную составляющую.
В реальности это может быть смещение как в положительную, так и в отрицательную
область. Так же не обязательно постоянное смешение, но в большенстве случае оно
постоянно и вызванно не идеальной работой электро-радио изделий. На рисунке
изображён сигнас с дрейфом 0,5 В.
Рисунок 16 - Восстановление сигнала который
имеет постоянное смещение 0,5 В
Итак, в этом случае возникают некоторые ошибки. Это можно увидеть на графике. Ошибки возникают, потому что пол вольта очень большой дрейф сигнала. И в разработанных уравнениях (6) и (8), дрейф не был учтён. Также было экспериментально установлено, что 0,5 В является максимально возможное значением дрейфа сигнала, для которого алгоритм ещё работает. Или другими словами это порог работоспособности алгоритма. Но, на практике, дрейф сигнала менее одного милливольта. Получается, что в реальности дрейф сигнала не должен стать причиной отказа работы алгоритма.
Стоит отметить, что этот рисунок показывает интересную вещь. Алгоритм правильно определяет амплитуду по двум точкам. Можно сказать, что это наклон фронта. Но фаза определена неправильно из-за дрейфа. И алгоритма пытается восстановить сигнал, словно дрейфа нет, таким отбразом получаются перепады, при переходе от реальных значений к расчитанным. Конечно, система уравнений (5) может иметь три уравнения вместо двух уравнений, и с помощью этого можно учесть дрейф сигнала. Но это усложнит конечное решение. Следовательно, расходы на вычисления будет увеличиваться. Это абсолютно не нужно, потому что в действительности такой большой дрейф не возникает. И полученное решение должно работать правильно.
Далее, рисунок 17 показывает сигнал с шумами.
Амплитуда шума 200 милливольт. Все остальные параметры в норме, т.е. нет
поразитных явлений, таких как дрейф сигнала. Отношение сигнал-шум, очень
велико. Но это потому, что сигнал считается при высоких скоростях гироскопа.
Следовательно, амплитуда сигнала является большой в этот момент. При малых
угловых скоростях отношение сигнал-шум может достигать еденици. И на практике,
шум в 200 мВ это очень много для этой системы.