All streams
Search
Write a publication
Pull to refresh

Comments 8

Это статический стенд? И задача вентилятора поддерживать горизонтальное положение стол (луч)?

Хм, да

Я забыл дать ссылку на предыдущую часть, в которой описана конструкция

Держите

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

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

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

Всё так
Причина использования IMU в том, что энкодер на шарнире не позволит определить опрокидывание стенда, и такую систему сложнее монтировать.
Но истинная причина заключается в том, что мне очень хотелось пристроить куда-нибудь MPU6050.

Понимаю. Можно сделать свой коптер с использованием mpu6050. Стенд. Моторы купить (и их управление). Использовать чип (например последним esp32 на risc v (esp32-ce3)). Спроектировать плату и сделать монтаж. Вот это всё перспективно и более интересно.

Интересная задача. Попытался посмотреть аппроксимацию нелинейности звеном

Скрипт в Maxima для нахождения параметров колебательного звена

Программа
  V1:b[0]/(a[2]*p^2+a[1]*p+1)
 /*Переход к КЧХ*/;
    V2:p=%i*2*%pi*f;
 /*Комплексно-частотная характеристика КЧХ*/
	V3:V1,V2;
 /*Мнимая и действительная части*/
	V3R:realpart(V3);V3I:imagpart(V3);
 /*Точка с нулевой фазой - действительная часть равна нулю (частота свободных колебаний)*/
	V4:solve(V3R=0,[a[2]]);
 /*находим в точке f0*/
	V5:V4,f=f0;
 /*Подставляем в исходное выражение*/
	V6:factor(V1),V5;
 /*Обратное преобразование Лапласа (получение импульсной характеристики)
	выбрать n - дискриминант отрицательный*/
	V6i:ilt(V6,p,t);
 /*Амплитуда при синусе при t=0*/
	V6a1:V6i/sin(2*%pi*f0*sqrt(1-%pi^2*a[1]^2*f0^2)*t);
	V6a:V6a1,t=0;
 /*В самом начале амплитуда равна значению в точке A*/
	V6b:V6a=A;
 /*решение для корректировочного коэффициента b0*/
	Vb0:solve(V6b,b[0]);
 assume(τ>0,f0>0);
	/*Постоянная времени переходного процесса*/
	V7:2*%pi^2*a[1]*f0^2=τ;
 /*Решение для коэффициента a[1]*/
	V8:solve(V7,a[1]);
 Vb01:factor(Vb0),V8;
 /*Нахождение постоянной времени по уровню*/
	V9:A*exp(-τ*t0)=B;
 V10:solve(V9,τ);
 /*Нахождение численных параметров
	по графику f0 - за 16+1/4 периода время 15 секунд 
	точка A в самом начале, точка B - 10 периодов
	*/
	V11:[f0=(16+1/4)/15, A=39, B=10];V111:t0=10*f0,V11;
 /*полный набор численных параметров*/
	Num:push(V111,V11);
 /*Постоянная времени*/
	V12:V10,Num;;
 Num1:append(V12,Num);
 Vbn:factor(Vb01),Num1;
 /*коэффициенты a1 , a2, b[0]*/
	V13:[V8,V5,Vbn],Num1;
 float(V13);
 /*подстановка в импульсную характеристику*/;
	V14:factor(-V6i),[V13,Num];
 wxplot2d(V14,[t,0,25]);

В итоге получилась следующая аппроксимация звеном вида :b_0/(a_2 \cdot p^2+a_1 \cdot  p+1),

при этом, a_1=0.00542, a_2=0.02158,b_0=5.7286. В результате имеем следующую импульсную характеристику (с нулевыми начальными условиями, в исходной модели, видимо, они не нулевые, -40 начальный угол)

Импульсная характеристика линейного звена второго порядка
Импульсная характеристика линейного звена второго порядка

Видно, что +- график одинаковый с точки зрения общей "энергетики" переходного процесса. В конце имеется в оригинальной модели статическое значение порядка -2, и более быстрая диссипация, связанная с сухим трением (вязкий коэффициент). Поэтому для управления целесообразно рассмотреть применение корневых методов для линеаризированного объекта управления.
Что касается замкнутой системы то желаемый результат есть фактически предельно апериодический процесс с кратным апериодическим полюсом. В этом случае все полюса расположены рядом в левой полуплоскости на действительной оси. Как только появляются комплексно-сопряжённые полюса, то имеется перерегулирование. Чем левее они расположены - тем быстрее, но тем больше может быть всплеск, также он характерен и для апериодического процесса с разнесёнными постоянными времени. Круговая частота колебаний определяется мнимой осью, постоянная времени - действительной. В этом случае полюса рационально расположить в секторе порядка 45 град исходящего из нуля, там будет и быстродействие приемлемое и колебательность небольшая. Также ПИД-регулятор с таким объектом сразу в замкнутой системе даст 4й порядок (2+2). Поэтому рационально использовать компенсатор. Очень грубо он может быть синтезирован из указанного выше объекта управления как режекторный фильтр (a_2 \cdot p^2+a_1 \cdot  p+1)/(q_0+p)^2, то есть как обратная передаточная функция с вспомогательным дважды апериодическим полюсом q_0. Компенсатор позволяет "выровнять" АЧХ объекта управления, но уменьшает быстродействие. В этом случае он ставится в ошибку управления и к нему суммируется интегратор (и небольшая пропорциональная составляющая), либо на выходе интегратора, для таких объектов производная (дифференциальная) - явный путь к автоколебаниям, интересно взглянуть на результаты оптимизации по времени на соотношения этих постоянных времени, скорее всего дифференциальная будет практически нулевой. Ну и разумеется возможность применения апериодического управления - deadbeat control, но это только для дискретных систем.

Sign up to leave a comment.

Articles