[image]

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

 
1 30 31 32 33 34 53
KZ Xan #03.01.2016 16:39  @Бывший генералиссимус#03.01.2016 13:21
+
-
edit
 

Xan

координатор

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

Использование твердотельных гироскопов в ракетомоделях [Xan#22.01.14 14:35]

Вот что пробовал симулировать. Датчик даёт величину угла отклонения (x) и скорость вращения (dx/dt). У управлялки есть два коэффициента: первый — "возвращающая сила" или "жёсткость пружинки"; второй — "сила трения" или "вязкость". Угловое ускорение, которое должно получиться, вычисляется так: a_x = - k1 * x - k2 * dx/dt Если взять k2 = 0, то получится маятник с периодом: T = 2 * pi * sqrt(1 / k1) Если k2 > 0, то колебания получаются затухающие. При любых ненулевых коэффициентах через…// Ракетомодельный
 
   
RU Бывший генералиссимус #03.01.2016 16:53  @Xan#03.01.2016 16:39
+
-
edit
 
Б.г.>> Кстати, Саша, помнишь, ты выкладывал графики смоделированных регуляторов с разными пропорциональными и дифференцирующими коэффициентами? Интересно сравнить. Можешь найти сейчас в треде?
Xan> Использование твердотельных гироскопов в ракетомоделях [Xan#22.01.14 14:35]
Два года пролетело, как один денёк! Ёлки-палки, трах-тибидох...
   11.011.0

Xan

координатор

В продолжение щаз вывалю черновики мыслей! :)

Идея такая: управлялка должна на ходу менять коэффициенты в законе регулирования.
Потому что на каждом этапе нужные коэффициенты могут отличаться на пару порядков.
Для этого надо знать, как меняются во времени механические параметры ракеты.
И какой момент создаст отклонение рулей.
Если рулить вектором тяги, то момент будет пропорционален тяге двигателя, которая легко измеряется бортовым акселерометром.
Так что всё можно легко посчитать.
Реальный момент инерции ракеты можно дома на столе померить. Во всех вариантах — полный двигатель топлива, наполовину сгоревший, совсем пустой. И т.д.

Повторюсь, это черновик, могут быть глюки:

===

Angular_Acceleration = k1 * Angular_Deviation + k2 * Angular_Velocity;

===

Коэффициент k1 зависит только от задержки в цепи управления.
Но не зависит от ускорений и инерций.
Точнее, он ограничен сверху, так как при достаточно большом значении начинаются
автоколебания — для выбранной задержки при k1 = 600 процесс идёт вразнос.
И есть значение, при котором отсутствует отрицательный выброс.
Для выбранной задержки это примерно k1 = 100, k2 = 16.

Надо из вычисленного желаемого углового ускорения и механических параметров получить
величину шима, который подаётся на рулевые машинки — Steering_Signal.

===

Нужно до старта знать, как будут меняться во времени (если точнее — от набранной скорости) эти параметры:
Масса m(t);
Момент инерции J(t);
Расстояние от сопла до центра масс z_m(t);
Угол вектора тяги от ШИМ k_pwm;

Момент силы будет:

M = a * m * z_m * k_pwm * PWM

Угловое ускорение:

aa = M / J = a * m * z_m * k_pwm * PWM / J

В проге считается, что оно должно быть:

aa = k1 * delta_angle

k1 * delta_angle = a * m * z_m * k_pwm * PWM / J

k_pwm = k1 * delta_angle * J / a / m / z_m / PWM

===

Вычисляем желаемое угловое ускорение и из него получаем ШИМ:

Steering_Signal = Steering_Coef * Angular_Acceleration;

ШИМ через механическую связь сервы с соплом даёт отклонение вектора тяги:

Thrust_Vector_Angle = Servo_Coefficient * Steering_Signal;

Из расстояния до центра масс и тяги получается момент силы:

Force_Moment = Centroidal_Distance * Thrust * Thrust_Vector_Angle;

Если его поделить на момент инерции, получится угловое ускорение:

Angular_Acceleration = Force_Moment / Moment_of_Inertia;

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

Servo_Coefficient * Steering_Coef = Moment_of_Inertia / Centroidal_Distance / Thrust

Так как механический коэффициент = константа, то остаётся только регулировать
коэффициент ШИМа:

Steering_Coef = Moment_of_Inertia / Centroidal_Distance / Thrust / Servo_Coefficient

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

JJ(v) = J(v) / m(v) / z_m(v)

Тогда получится:

Steering_Coef(v) = JJ(v) / Servo_Coefficient / a;

===
   
Это сообщение редактировалось 03.01.2016 в 17:06

Xan

координатор

Про MicroChip и её софт.

Давно хотел проверить, насколько компилятор XC16 в режиме "PRO" делает код лучше, чем в "студенческом".
В рекламе так аж в 4 раза обещали быстродействие поднять.
Но тыщщу баксов за это отдавать совершенно не хотелось.
А обещаный триальный режим (на два месяца) включить никак не удалось.

А тут новости — кроме покупки навсегда теперь MicroChip предлагает "аренду на месяц".
Всего за тридцатку баксов.

Задавил жабу, разбил копилку, зажал зелёные в кулак, пошёл в их лабаз.
Купил.

Стал всячески дёргать "рычаг скоростей" — ставить разные уровни оптимизации, и вот что получилось.

Первым делом всё сломалось!
Как оказалось, такая простенькая и естественная для эмбедеров задержка:

t = 1024;
while(t--);

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

while(t--) NOP1; — ассемблерная вставка команды NOP

В зависимости от уровня оптимизации, на такое тратится вот столько машинных циклов:

code text
  1. 0       13
  2. 1       5
  3. 2       4
  4. s       4
  5. 3       4


Потом взял свою арифметику для инерциальных датчиков и её подсунул компилятору.
Ну я надеялся, что он щаз как ускорит в несколько раз, так сразу мне и станет хорошо!
30 баксов-то плочены!!! :D
И вот что получилось (вычислений в секунду и размер кода):

code text
  1.            float          double         code
  2.  
  3. 0       136.2-138.1     75.99-76.22      8754
  4. 1       144.9-146.6     80.22-80.65      7419
  5. 2       142.5-143.3     80.00-80.26     11436
  6. s                                        7449
  7. 3       142.4-143.3     80.00-80.26     11619


(уровень s — это оптимизация по размеру кода)

Про float (32 бита) и double (64 бита):
Во всей арифметике есть 69 переменных float.
Из них шесть переменных желательно сделать double.
Ну вот первый раз я их сделал float, а второй раз double.

Эти шесть переменных встречаются только в трёх простых строчках:

VX += AX * dt; X += VX * dt;
VY += AY * dt; Y += VY * dt;
VZ += AZ * dt; Z += VZ * dt;

Тем не менее, время выполнения возросло аж в 1.8 раза.

Но самое главное, уровень оптимизации почти не влияет на скорость счёта!
И даже есть некоторое ухудшение!
Деньги пропали зря!!! :D

Наверное, вся плавающая арифметика засунута в библиотеку, которая уже оптимизирована до упора раз и навсегда.

Это измерялось с генератором 7.3728 МГц.
Если включить PLL с умножением на 4, то, соответственно, получится 320 вычислений в секунду, при необходимых примерно 100.
Так что всё хорошо.
   
RU Бывший генералиссимус #02.06.2016 23:47  @Бывший генералиссимус#03.01.2016 16:53
+
+1
-
edit
 
Б.г.> Два года пролетело, как один денёк! Ёлки-палки, трах-тибидох...
Разбирая старые фотки на компе, наткнулся на первую фотку устройства, на котором я начал экспериментировать с твердотельными гироскопами. Это были Murata ENC-03, а фотка датирована маем 2006 года.
10 лет бесплодных усилий!
Прикреплённые файлы:
IMG_0039.JPG (скачать) [1280x960, 603 кБ]
 
 
   11.011.0
KZ Xan #03.06.2016 05:50  @Бывший генералиссимус#02.06.2016 23:47
+
-
edit
 

Xan

координатор

Б.г.> 10 лет бесплодных усилий!

Дипы, дырочки и пучки мгтф — древние забытые технологии!!! :D
   46.046.0
RU Бывший генералиссимус #03.06.2016 09:37  @Xan#03.06.2016 05:50
+
-
edit
 
Б.г.>> 10 лет бесплодных усилий!
Xan> Дипы, дырочки и пучки мгтф — древние забытые технологии!!! :D
Кем-то забытые, а я всё ленюсь делать печатные платы...
   11.011.0

RLAN

старожил

Напишу сюда.
Теоретизирую пока.
Исходные.
2х ступенчатая ракета, вертикальный полет. Управления нет.
Задача - максимальная высота, соблюдение безопасности.
Когда делал АРМ-1 алгоритм запуска 2й ступени подразумевал анализ набранной высоты, ниже определенной границы запуск отменялся.
Но как то это криво.
Может все таки гироскопы твердотельные. Отклонение от вертикали шире некоторых границ (немалых, градусов 10) - отменяем запуск 2й ступени.
Можно, конечно, пытаться анализировать данные GPS/Глонасс, но думаю, это изврат.
Вот описание работы старого контроллера, этот еще без GPS/Глонасс, там вторая строка добавлялась в посылке, и это все под NMEA маскировалось, но чего то его описание не нашел, да и неважно это в данном вопросе
Прикреплённые файлы:
 
   1616
+
-
edit
 

Massaraksh

аксакал
★☆
RLAN> Может все таки гироскопы твердотельные. Отклонение от вертикали шире некоторых границ (немалых, градусов 10) - отменяем запуск 2й ступени.
Лучше вместе с акселерометрами. Что-то типа MPU-6050. Себе заказал, вот только пришли мне, но сейчас много работы, нет времени заниматься.
Прикреплённые файлы:
20160703_221329.jpg (скачать) [960x1280, 172 кБ]
 
 
   48.048.0
RU Бывший генералиссимус #04.07.2016 08:56  @RLAN#03.07.2016 21:01
+
-
edit
 
RLAN> Может все таки гироскопы твердотельные. Отклонение от вертикали шире некоторых границ (немалых, градусов 10) - отменяем запуск 2й ступени.

Десять мало. Чтобы уложиться в 10 градусов, надо предусматривать небольшую закрутку вокруг продольной оси. Без управления, малейшая несимметрия будет приводить к уходу от вертикали, плюс сдвиги ветра. По опыту могу сказать, и 20 градусов может не хватить без закрутки. Как только ракета поднялась достаточно высоко, рефлекторно поднимаешь взгляд, теряешь горизонт, и кажется, что ракета летит весьма ровно, а потом считаешь флэшку - да она уже на 30 градусов к этому времени отклонилась!

На семь градусов было настроено АВД в "семёрке", т.е., ей разрешалось отклонять продольную ось от программной траектории, скажем, на 5 градусов, а ведь это 30-метровая "дура", и нехилые должны быть возмущения, чтоб её на 5 градусов отклонить. Ну, понятно, что это мог быть не более, чем переходной процесс, но, всё же, всё же...

Я читал мемуары мужика, который "держал руку на кнопке", чтобы подорвать Р-5М с натуральным ядерным зарядом, если она выйдет за пределы разрешённого коридора, так там ширина этого коридора была аж пять градусов, это значит, что отклонение оси ракеты от плоскости стрельбы могло быть вдвое больше. А ведь это тоже управляемая ракета. Конечно, итоговое отклонение при нормальной работе гораздо меньше, даже у Фау-2 было всего 0,3 градуса, но переходные процессы есть переходные процессы.
   11.011.0
KZ Xan #04.07.2016 09:44  @Бывший генералиссимус#04.07.2016 08:56
+
-
edit
 

Xan

координатор

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

RLAN

старожил

В идеале надо первой ступенью пулять, куда полетит, отбрасывать ее сразу, и в период паузы рулить, пытаясь вернуть ее в рамки, потом уже решать, получилось или нет.
Но на это ни опыта ни ресурсов нет. А забраться надо повыше.
40+, показуха.
Хотя если до этого дело дойдет, то о там 30°58'25"S 136°28'32"E можно особенно безопасностью не заморачиваться.
А есть устройства где на выходе уже угол?
   1616

MartKot

опытный

RLAN> Хотя если до этого дело дойдет, то о там 30°58'25"S 136°28'32"E
Это здесь?
Прикреплённые файлы:
sas-1.png (скачать) [1920x1200, 1,02 МБ]
 
sas-2.png (скачать) [1920x1200, 1,03 МБ]
 
 
   

RU Бывший генералиссимус #29.07.2016 12:14  @RLAN#04.07.2016 18:54
+
-
edit
 
RLAN> А есть устройства где на выходе уже угол?
Есть, но они что-то очень запредельно стоят, по крайней мере, у аналог девайсез:

ADIS16488A Datasheet and Product Info | Analog Devices

The ADIS16488A iSensor® device is a complete inertial system that includes a triaxis gyroscope, a triaxis accelerometer, triaxis magnetometer, and pressure // www.analog.com
 

И углы даёт, и скорости. И стабильность побольше, чем у того, с чем я сейчас экспериментирую, но цена - упасть и не встать.
   11.011.0
KZ Xan #29.07.2016 12:32  @Бывший генералиссимус#29.07.2016 12:14
+
-
edit
 

Xan

координатор

Б.г.> но цена - упасть и не встать.

(ADIS16488CMLZ Analog Devices Inc. | Sensors, Transducers | DigiKey)

Хи-хи! :)

"Тактический", блин!
   47.047.0
RU Бывший генералиссимус #29.07.2016 15:27  @Xan#29.07.2016 12:32
+
-
edit
 
Б.г.>> но цена - упасть и не встать.
Xan> Хи-хи! :)
Xan> "Тактический", блин!
Я не знаю, что в нём "тактического", если его свободно продаёт дижикей, пусть даже и за 2000 долларов, просто там несколько сенсоров на каждую ось и усреднение внутри. И термостатирование своё, хотя и недостаточно мощное.
Но, кстати, ADIS16488 и ADIS16488A - это разные приборы.

P.S. при покупке этого девайса нужно дать "честное слово", что ты его не будешь применять в военной ракете. В гражданской можно, я выяснял. Собственно, в прошлом году, при попытке купить VxWorks, нет, даже не купить, взять демо-версию поиграть, "Лин индастриал" проверяли на принадлежность к военным и аффилированными с военными производствам.
   11.011.0
KZ Xan #29.07.2016 20:48  @Бывший генералиссимус#29.07.2016 15:27
+
-
edit
 

Xan

координатор

Xan>> "Тактический", блин!
Б.г.> Я не знаю, что в нём "тактического",

Это слово теперь применяется для обозначения крутизны (не технической).
"Обычный", "профессиональный", "тактический" и там ещё какие-то слова есть.
Вполне может быть "тактическая" футболка или портянки! :D

Б.г.> P.S. при покупке этого девайса нужно дать "честное слово", что ты его не будешь применять в военной ракете.

И в оружии массового поражения!
Ага, писал такое бумажное письмо с подписью и отправлял по почте! :)
Чтоб купить японские нитки, продаваемый в Америке.
   47.047.0

Xan

координатор

А покритикуйте мои во всём неправильные планы и измышления! :)

Во что я предполагаю в ракете натворить:

В голове ракеты будут: батарейка и три отдельные платы: мозги, радио, датчики.
У каждой ступени будет своя управлялка двумя сервами (X и Y) и двумя зажигалками.
Связь между всеми платами по RS485 на скорости 230400.
Обмен задаётся платой датчиков (около 100 циклов в секунду).
Питание всего — 3.7 вольта.
Между ступенями 4-контактный разъём с усилием выдёргивания 160 граммов.

Управления сервами.

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

Датчики.

Плата с гироскопами и акселерометрами, а также магнитометром, барометром, а также разъёмами для оптического датчика солнца (1D) и GPS приёмника.
(Барометр и GPS опционно.)
Главная функция платы — руля через шину сервами поддерживать заданное уставкой направление оси ракеты.
Вторая — по показаниям датчиков вычислять (интегрировать) положение и скорость ракеты.
Внутри себя корректирует гироскопы по магнитному и оптическому датчикам.
Чтоб рулить ракетой, надо из мозгов достаточно часто посылать в плату изменяющуюся с небольшим шагом уставку направления.
Кроме уставки направления надо засылать текущие механические параметры ракеты: момент инерции и коэффициент руления сервами (для управления вектором тяги и для аэродинамических рулей они разные).

Мозги.

Всегда подключена к батарейке, а остальным питание может включать/отключать.
В соответствии с программой полёта рулит зажигалками и посылает уставки плате датчиков.

Радио.

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

pinko

опытный

Xan> А покритикуйте мои во всём неправильные планы и измышления! :)

У меня давно есть подобная идея и медленно работают над различными модулями, но это только хобби... :)

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

Так на уровне идеи я решил поставить микроконтроллеры для каждой задачи и они будет выводить уже вычислен данные через быстрая SPI сеть, каторы будет делать запросы с аппаратных прерываний к центральному контроллеру, который будет только принемает решения об управление траектории с сервами.
   47.047.0

RLAN

старожил

Xan> Датчики.
Xan> Плата с гироскопами и акселерометрами, а также магнитометром, барометром, а также разъёмами для оптического датчика солнца (1D) и GPS приёмника.
Xan> (Барометр и GPS опционно.)

А ПВД типа трубки Прандтля не планируешь? Скорость рассчитывать хочешь?
   1616

Xan

координатор

Xan>> (Барометр и GPS опционно.)
RLAN> А ПВД типа трубки Прандтля не планируешь? Скорость рассчитывать хочешь?

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

Ракете скорость проще всего получить интегрированием ускорения.
Тем более, что большая часть скорости будет набираться в вакууме.
   47.047.0
RU Бывший генералиссимус #05.08.2016 13:30  @Xan#03.01.2016 16:39
+
-
edit
 
Б.г.>> Кстати, Саша, помнишь, ты выкладывал графики смоделированных регуляторов с разными пропорциональными и дифференцирующими коэффициентами? Интересно сравнить. Можешь найти сейчас в треде?
Xan> Использование твердотельных гироскопов в ракетомоделях [Xan#22.01.14 14:35]

Саша, а ты ведь это в экселе делал? можешь прислать спредшит, если он у тебя ещё жив? проще сразу в личку.
   11.011.0
KZ Xan #05.08.2016 15:50  @Бывший генералиссимус#05.08.2016 13:30
+
-
edit
 

Xan

координатор

Б.г.> Саша, а ты ведь это в экселе делал? можешь прислать спредшит, если он у тебя ещё жив? проще сразу в личку.

Заслал "грузовик шпионской документации" на почту.
Готов признаться в содеянном! :)


ЗЫ
Что-нибудь скажешь про вот это:
(Расскажите мне, конструктарии, о программе полёта)
   47.047.0
RU Бывший генералиссимус #05.08.2016 17:38  @Xan#05.08.2016 15:50
+
-
edit
 
Xan> Что-нибудь скажешь про вот это:
Я про "это" ничего не знаю. У меня жёсткое наведение, типа, как у "Фау-2".
   11.011.0
AD Реклама Google — средство выживания форумов :)
RU Бывший генералиссимус #10.08.2016 13:36  @Xan#29.07.2016 12:32
+
-
edit
 
Xan> "Тактический", блин!
Хоть он и тактический, а влияние линейного ускорения превышает влияние вращения Земли!

У меня вдруг возникла мысль, что на полюсе Земли МЕМС гироскоп тяжело откалибровать с требуемой точностью, так как невозможно разделить влияние вращения Земли и влияние "же". Ну, то есть, влияние вращения Земли на полюсе можно только теоретически заложить. А вот на экваторе и на любой приличной широте можно ловить горизонтальную проекцию вращения Земли, не меняя при этом величину и знак влияния "же".

Получается, что до сих пор я неправильно калибровал ADIS16445, так как влияние вращения Земли в формулу не закладывал, а брал только влияние ускорения. По паспорту, оно примерно в три с половиной раза больше. Правда, это без учёта широты...

По измерениям у меня выходили несколько другие цифры, но не сильно. Сейчас пойду закладывать в формулу влияние "же".
   11.011.0
1 30 31 32 33 34 53

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru