Перейти к основному содержимому

03 Урок. Знакомство маховиком

Модуль УДМ (управляющий двигатель-маховик)

Модуль УДМ

Рисунок 1. Модуль УДМ

При движении по орбите многим спутникам требуется точная ориентация определенными гранями в нужном направлении - относительно Земли, Солнца, звезд или как-то иначе. Например, чтобы навестись камерой ДЗЗ на Землю или солнечными батареями на Солнце. На малых же аппаратах для обеспечения заданной ориентации спутника в пространстве относительно центра масс чаще всего используются двигатели-маховики.

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

В нашей модели свободное вращение конструктора ОрбиКрафт 3D, и, следовательно, маховика, возможно только вокруг одной оси - вертикальной. Поэтому на одноосный Орбикрафт 3D устанавливается только один маховик ориентации.

Для работы с двигателем маховика используются следующие функции (на языке C):

  • Задать скорость вращения маховика. В качестве аргументов функция принимает порядковый номер маховика и скорость в об/мин.

    motor_set_speed ( uint16_t num, float RPM)

    Аргументы:

    • [in] num - номер устройства согласно UniCAN, для маховика с адресом 0xA значение num=0, для 0xB num=1, для 0xC num=2;
    • [in] RPM - угловая скорость вращения, об/мин.
  • Следующая функция позволяет запросить текущую скорость маховика:

    motor_request_speed ( uint16_t num, float *pRPM)

    Значение записывается в переменную pRPM. Единицы измерения: об/мин.

    Аргументы:

    • [in] num - идентификатор устройства;
    • [out] pRPM - угловая скорость вращения, об/мин.

Пример кода проверки двигателя-маховика на языке С:

#include <stdio.h>
#include <stdint.h>
#include "libschsat.h"

void control(void){
const int num = 1; /* motor number #1(B) */
float rpm = -2000; /* -2000 ... +2000 */
printf("Enable motor #%d\n", num);
printf("Manage speed motor #%d\n", num);
while (rpm <= 2000) {
printf("<<< Set speed to %f\n", rpm);
motor_set_speed(num, rpm);
Sleep(1);
rpm += 200;
}
printf("<<< Set speed to 0\n");
motor_set_speed(num, 0);
Sleep(1);
printf("Disable motor #%d\n", num);
}

Эта программа уже загружена в БВМ. Откройте WEB-интерфейс, найдите ее и запустите (рисунок 2):

Программа проверки двигателя-маховика на Web-интерфейсе

Рисунок 2. Программа проверки двигателя-маховика на Web-интерфейсе

Запустите программу и протестируйте работу маховика. При запуске программы он разгонится до -2000 об./мин, затем раз в секунду будет уменьшать скорость вращения на 200 об./мин., пока не дойдет до ноля, а затем станет вращаться в противоположную сторону, увеличивая скорость вращения на 200 об./мин. раз в секунду.

Пример полученных данных

Рисунок 3. Пример полученных данных

На случай необходимости экстренной остановки маховика полезно иметь следующую программу загруженную в Орбикрафт 3D:

#include <stdio.h>
#include <stdint.h>

void control(void){
motor_set_speed(0, 0);
}

Просмотр графика скорости вращения маховика

Запустите Houston App и подключитесь к нему по Wi-Fi как рассказано на этой странице.

В этом режиме на вкладке Wheel можно посмотреть график изменения скорости вращения маховика (рисунок 4):

График изменения скорости вращения маховика

Рисунок 4. График изменения скорости вращения маховика

Пользовательский API

Справочник по пользовательскому API со всеми функциями работы с ОрбиКрафт 3D находится на страницах: Пользовательский API на языке С++ и Пользовательский API на языке Python.