shadowjack> Лучше сделать максимальную скорость, которую позволяет железо и софт.
Тут разное воспитание сказывается.
"Лишнего не надо, обойдусь малым".
"Нам много не мало, дают - бери".
Конечно, по 100 отсчетам в секунду нет никаких возражений, если сохранится реальный масштаб времени.
shadowjack> указать длительность данных сигналов и пауз.
Точка 300 мС, пауза 400 мС, тире 1000 мС.
>> ALx=ALx+Ox/32
>> ALy=ALy+Oy/32 (поправил опечатку)
shadowjack> Логичнее было бы просто накапливать отклонения (ALx=ALx+Ox).
Вот тут я "плаваю" (т.е. плохо разбираюсь).
Угол в градусах "в реале" равен предыдущему значению угла, плюс угловая скорость, умноженная на время "от предыдущего значения угла".
Если угловую скорость не умножать на время, то угол получается бОльше истинного во столько же раз, сколько отсчетов угловой скорости в секунду.
Ну и хрен с этим.
Тогда надо НАЧАЛЬНЫЙ стартовый угол тоже как-то по-другому считать, не в радианах.
В общем, надо грамотно указывать единицы измерения величин.
shadowjack> Второе. Данные уровнения имеют смысл, если нет вращения вокруг локальной оси Z. Если оно есть, то нужно уже множить матрицы.
До старта вращения нет. После старта корректирующие двигатели вращаются вместе с гироскопом.
Вроде как не надо множить матрицы. К тому же скорость вращения вряд ли будет более 1 оборота за 3-4 секунды, нет смысла их множить даже если и надо множить.
shadowjack> Поправь пожалуйста названия счетчиков в ЕСЛИ - там везде TA6.
Поправлю.
shadowjack> Есть предложения по улучшению
shadowjack> 1) ... Путем введения разных порогов для открытия и закрытия клапана можно избежать высокочастотных колебаний.
Увы, ток через клапан надо выключать через 0,3...0,4 секунды - иначе сгорит обмотка. 35 ампер на квадратный миллиметр - это 1...1,3 секунды до сгорания изоляции. Конечно, есть резервы (не фиг пускать такой ток после полного открытия клапана), но это "не для сейчас".
shadowjack> 2) Можно упростить условия
Подумаю "на свежую голову".
"на человеческом языке" получается так:
Угол вышел за порог - пшикать.
Если угол не вышел за порог - смотри угловую скорость, когда она превысила порог.
Если угловая скорость крутит "в нужную сторону" - не надо ничего делать.
Если угловая скорость (превысившая порог) крутит в сторону увеличения угла - пшикать.
shadowjack> 3) В данном алгоритме возможно одновременное включение 2-х противоположных корректирующих клапанов на одной оси. Например, когда ALx = 2*ALM, Ox = -2*OM включатся D6 и D11
Значит, я плохо описал алгоритм.
Если превышен порог по углу - надо пшикать, и потом до истечения времени "паузы между пшиками" ничего не делать, в том числе "пшикать по угловой скорости".
Буду еще раз переписывать "задачу".
Рад что ты следишь за темой, теперь спокойней будет вытачивать всякую фигню (выточу - сфотаю).