User Tools

Site Tools


en:wheel_subsys

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:wheel_subsys [2018/01/23 15:47]
ashley
en:wheel_subsys [2020/03/25 16:28] (current)
Line 1: Line 1:
-**Orientation flywheel** \\  +====== Reaction Wheel ====== 
-Virtual ​[[power_subsys|consumption]] - 2000mA+  
 +Virtual ​power draw: 2000 mA
  
-{{ ru:wheel.jpg?​direct&​200|}} +{{ :ru:маховик.png?​direct&​200| ​Двигатель-маховик}}
-When in orbit, many satellites require precise orientation of certain surfaces in the correct direction - relative to the Earth, the Sun, stars or some other reference point. For example, the [[camera_subsys|camera]] should be oriented towards the [[sim_earth|ground]] and the [[sun_battery|solar panels]] should be oriented towards the Sun. There are several known approaches for solving this problem. For example, you can use jet (rocket) orientation engines, which causes the spacecraft to rotate in the desired direction relative to the center of mass. However, this method requires the consumption of a working fluid (fuel), requires a complex system of engine nozzles, is potentially unsafe, etc. On small spacecraft, ​ [[wheel_subsys|flywheels]] are most often used to provide a given orientation of the satellite in space relative to the center of mass. +
  
-The flywheel is an electromechanical device that consists of an electric motor with a wheel mounted on its axis of rotation. ​As the engine accelerates or deceleratesthe spacecraft itself rotates faster ​or slower according to the law of conservation of the kinetic momentSince there are no external forces in outer space and the amount {{ ru::​arch.php.gif?​200|}}of motion cannot change, turning the flywheel clockwise causes the whole spacecraft ​to rotate counterclockwiseThus, by controlling the engine and the rotation ​of the [[wheel_subsys|flywheel]],​ you can control ​the motion of the whole spacecraft (in fact, the rotation) around its center ​of mass.+As they travel along the orbitmany satellites need precise positioning whereby specific edges would be aligned with particular directions relative to Earth, Sun, fixed stars or some other referenceA particular application would require ​the satellite ​to have its observation camera face Earth or solar cells face SunIn smaller-scale orbiters ​the required spatial orientation ​of the satellite relative to the mass center ​is achieved most often using reaction wheels.
  
-In our modelfree rotation of the spacecraft, and hence the [[wheel_subsys|flywheel]],​ is possible only around ​one axis - vertical. Thereforeonly one orientation flywheel is installed on the "​satellite."+A reaction wheel is a mechanical device comprising an electric motor with a wheel fixed on its spindle. The engine spins by accelerating and decelerating alternately,​ and the angular momentum conservation law will make the orbiter itself spin faster or slower. Considering that there are no external forces in the space and the amount of motion cannot changeclockwise ​rotation of the wheel would make the entire orbiter rotate counterclockwise. Soby controlling the motor and the reaction wheel we can control motion ​around ​the mass center (in essencerotation) of the entire orbiter.
  
-The following functions are used for working with the flywheel motor: \\ +In our model free rotation of the Orbicraft Construction Set and hence the reaction wheel is only possible around a single axis – the vertical axis. For that reason the “satellite” only has a single positioning reaction wheel.
  
-//int32_t motor_set_speed(uint16_t num,int16_t RPM,int16_t *confirm);// \\  +The following functions (in C) are used for interacting with the reaction wheel motor: 
-The function allows you to set the flywheel speed. If everything is successfulit will return ​the LSS_OK code and the "confirm" value equal to the desired RPM. Howeverit can take quite a long time for the [[wheel_subsys|flywheel]] to accelerate ​to the required ​speed.+ 
 +<code C>int32_t motor_set_speed(uint16_t num,int16_t RPM,int16_t *confirm);</code> 
 + 
 +Commands a speed setpoint ​to the wheelreturning ​the LSS_OK code upon success ​and the requested RPM in the confirm ​variable. However it could take quite some time for the wheel to actually reach the requested ​speed. 
 + 
 +The following function queries the current wheel rotation speed: 
 + 
 +<code C>​int32_t motor_request_speed(uint16_t num,int16_t *pRPM);</​code>​ 
 + 
 +==== Sample C Test Code for the Reaction Wheel ==== 
 + 
 +<file c Wheel_test.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);​ 
 +
 +</​file>​
  
-//int32_t motor_request_speed(uint16_t num,int16_t *pRPM);// \\  
-This function allows you to request the current flywheel speed. 
en/wheel_subsys.1516711678.txt.gz · Last modified: 2020/03/25 16:29 (external edit)