Инструменты пользователя

Инструменты сайта


wheel_subsys

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

wheel_subsys [2018/03/23 01:19]
eliseev
wheel_subsys [2020/03/25 16:28]
Строка 1: Строка 1:
-**Двигатель-маховик** \\  
-Виртуальное [[power_subsys|потребление]] - 2000мА 
  
-{{ ru:​маховик.png?​direct&​200|}} 
-При движении по орбите многим спутникам требуется точная ориентация определенными гранями в нужном направлении - относительно Земли, Солнца,​ звезд или как-то иначе. Например,​ чтобы навестись [[camera_subsys|камерой ДЗЗ]] на Землю или солнечными батареями на Солнце. На малых же аппаратах для обеспечения заданной ориентации спутника в пространстве относительно центра масс чаще всего используются двигатели-маховики. ​ 
- 
-Двигатель-маховик - электромеханическое устройство,​ представляющий собой электромотор с насаженным на его ось вращения колесом. Двигатель вращается,​ то ускоряясь,​ то замедляясь,​ и по закону сохранения кинетического момента,​ вращается быстрее или медленнее сам космический аппарат. Так как в условиях космоса внешние силы отсутствуют и количество движения не может изменяться,​ вращение маховика по часовой стрелке приводит к вращению всего космического аппарата против часовой стрелки. Таким образом управляя двигателем и вращением двигателя-маховика мы можем управлять движением вокруг центра масс (по сути, вращением) всего аппарата. ​ 
- 
-В нашей модели свободное вращение конструктора ОрбиКрафт,​ и следовательно,​ маховика,​ возможно только вокруг одной оси - вертикальной. Поэтому на "​спутник"​ устанавливается только один маховик ориентации. ​ 
- 
-Для работы с двигателем маховика используются следующие функции (на языке C): \\  
- 
-<code c> 
-int32_t motor_set_speed(uint16_t num,int16_t RPM,int16_t *confirm); ​ 
-</​code>​ 
- 
-Позволяет задать скорость маховику,​ в случае успеха возвращает код LSS_OK и значение confirm равное требуемому RPM. 
-Однако реальный разгон [[wheel_subsys|маховика]] до требуемой скорости может занять достаточно продолжительное время. ​ 
- 
-Следующая функция позволяет запросить текущую скорость маховика:​ 
- 
-<code c> 
-int32_t motor_request_speed(uint16_t num,int16_t *pRPM); 
-</​code>​ 
- 
-**Пример кода проверки двигателя-маховика на языке С** 
- 
-<code c> 
- #include "​libschsat.h"​ 
- /* 
- ** Lab 5: manage motor speed 
- */ 
- void control(void) 
- { 
- const int num = 1; /* motor number #1 */ 
- int16_t temp; 
- int16_t rpm = -3000; /* -3000 ... +3000 */ 
- printf("​Enable motor #​%d\n",​ num); 
- motor_turn_on(num);​ 
- printf("​Manage speed motor #​%d\n",​ num); 
- while (rpm <= 3000) { 
- printf("<<<​ Set speed to %d\n", rpm); 
- if (LSS_OK == motor_set_speed(num,​ rpm, &temp)) { 
- if (temp == rpm) 
- printf("​\t%d confirmed\n",​ rpm); 
- } 
- Sleep(1);​ 
- if (LSS_OK == motor_request_speed(num,​ &temp)) { 
- printf("​Got speed %d >>>​\n",​ temp); 
- } else { 
- puts("​Fail! >>>"​);​ 
- } 
- rpm += 500; 
- } 
- printf("<<<​ Set speed to 0\n"); 
- if (LSS_OK == motor_set_speed(num,​ 0, &temp)) { 
- if (temp == 0) 
- printf("​\t%d confirmed\n",​ 0); 
- } 
- Sleep(1); 
- if (LSS_OK == motor_request_speed(num,​ &temp)) { 
- printf("​Got speed %d >>>​\n",​ temp); 
- } else { 
- puts("​Fail! >>>"​);​ 
- } 
- Sleep(1); 
- motor_set_speed(num,​ 0, &temp); 
- Sleep(1); 
- printf("​Disable motor #​%d\n",​ num); 
- motor_turn_off(num);​ 
- } 
-</​code>​ 
- 
-**Пример кода проверки двигателя-маховика на языке Python** 
- 
-<code python> 
-def control(): # Основная функция программы,​ в которой нужно вызывать остальные функции 
- 
-#​Инициализируем переменных:​ 
- 
- motor_response = [0,0] # Инициализируем массив,​ в который будут записываться показания с маховика,​ где первый элемент - сообщение об ошибке 
- num = 1 
- rpm = 0 #rpm = rotation per minute, то есть, количество оборотов в минуту,​ будем изменять от -3000 до +3000 
-  
-#​Включаем маховик 
- print "​Enable reaction wheel №", num 
- motor_turn_on(num) 
- sleep(1) 
-  
-#​Изменяем скорость маховика от - 3000 до 3000 со скоростью 500 обортов в минуту 
- 
- print "​Manage speed of motor №", num  ​ 
-  
- while rpm >= -3000: 
- #​Установим скорость маховика - 3000 
- # motor_set_speed устанавливает скорость rpm и возвращает значение о текущей скорости в motor_response 
-  
- print "Set speed to -3000" 
- motor_response = motor_set_speed(num,​ rpm)  
- if not motor_response[0]: ​           #Если ошибки нет, то 
- if motor_response[1] == -3000: ​           # Если заданная скорость достигнута,​ то  
- print "-3000 rotations per minute confirmed" ​     #​Выводим подтверждение 
- else: ​ 
- print "Got speed",​ motor_response[1]  
- elif motor_response[0] == 1: 
- print "Fail because of access error, check the connection"​ 
- elif motor_response[0] == 2: 
- print "Fail because of interface error, check your code" 
- rpm += -500  
- sleep(1)  ​                            # Ждем 1 секунду  
-  
- print "Set speed to 3000 " ​ 
- while rpm <= 3000: 
- motor_response = motor_set_speed(num,​ rpm)  
- if not motor_response[0]: ​           
- if motor_response[1] == 3000:             
- print "3000 rotations per minute confirmed" ​     ​ 
- else: ​ 
- print "Got speed",​ motor_response[1]  ​                          
- elif motor_response[0] == 1: 
- print "Fail because of access error, check the connection"​ 
- elif motor_response[0] == 2: 
- print "Fail because of interface error, check your code" 
- rpm += 500 
- sleep(1)  
-  
-  
- print "Set speed to 0" 
- while rpm != 0: 
- motor_response = motor_set_speed(num,​ rpm)  
- if not motor_response[0]: ​           
- if motor_response[1] == 0:             
- print "0 rotations per minute confirmed" ​     ​ 
- else: ​ 
- print "Got speed",​ motor_response[1]  ​                          
- elif motor_response[0] == 1: 
- print "Fail because of access error, check the connection"​ 
- elif motor_response[0] == 2: 
- print "Fail because of interface error, check your code" 
- rpm += -500 
- sleep(1)  
-  
- print "​Disable reaction wheel №", num 
- motor_turn_off(num) 
-</​code>​ 
wheel_subsys.txt · Последние изменения: 2020/03/25 16:28 (внешнее изменение)

Инструменты страницы