Исходные данные:
------------------------
Проектирую электропривод, который должен регулировать положение (заданный угол поворота от 0 до 360 град). Используется безколлектроный двигатель постоянного тока ( в двух словах: это синхронная машина с постоянными магнитами в роторе, статор создаёт некое произвольное направление магнитного поля и ротор поворачивается под это поле и таким образом регулируется его положение).
В качестве датчика положения используется абсолютный датчик положения, который даёт 8192 дискрет на оборот (т.е. число от 0 до 8191, которое достаточно точно даёт положение ротора)
В структуре САУ, регулирующей положение имеется петля регулирования угловой скорости вращения двигателя. (В двух словах САУ построена след. образом: внешняя петля - это петля регулирования положения (т.е. угла поворота); внутри этой петли как в матрёшке есть некое звено - самостоятельная САУ - петля регулирования скорости вращения а внутри этой второй САУ есть третья матрёшка - петля регулирования токов статора). Но это я привожу для информации только.
САУ проектирую в матлабе затем переношу в TMS320F28335. Время дискретизации 50 - 100 мкс. (т.е. сау, естественно, дискретная).
Вопрос:
----------
Как измерить скорость, имея данные абсолютного датчика положения? Если ротор вращается быстро - то пойдёт и элементарный подход - брать дискретную производную - [(z-1)/z*Ts] стандартный блочок матлаба. Если за ним повесить инерционное звено - то скорость более пол радиана в сек. измеряется достаточно точно и гладко. (можно производную считать и по нескольким точкам - пробовал 4 точки и 6 точек - нет сильной разницы)
Но я должен получить отрегулированное положение, т.е. ротор должен стоять с нулевой скоростью.
И здесь как раз возникает проблема измерения малой скорости из полученных дискрет датчика положения, когда ротор стоит или почти стоит на месте. Как это сделать? Стандартная производная [(z-1)/z*Ts] в этом случае изредка даёт выбросы (так как датчик положения изредка выдаёт данные - ротор стоит), т.е. в итоге я имею некое подобие частотно-импульсной модуляции, вместо того чтобы выдать некое малое значение скорости. Фильтры не помогают (т.е. они лишь чуть-чуть сглаживают палки и превращают их редкие зубья). В результате петлю регулирования скорости болтает.
И в общем ( по данным матлаба) ротор устанавливается в заданное положение но, гад, дрожит со скоростью 100 Гц с маленьклй амплитудой. я предполагаю, что наши механики это не поймут.
Был найден частичный выход из положения: сделан виртуальный экстраполятор положения, который наши 8192 дискреты-ступеньки ( это в классике наз. экстраполятор нулевого порядка+квантование по уровню) превращает в плавные линии - (это в классике наз. экстраполятор первого порядка). и уже от выхода ЭТОГО экстраполятора - брать производную и измерять скорость. Результат получен - значительно лучше - но всё равно болтанка в петле регулирования скорости остаётся.
Может кто-то сталкивался с подобной проблемой и может подсказать алгоритм. (Проблема, как я вижу, в том, чтобы грамотно построить экстраполятор положения). Или может в чём-то другом?