Materials used in the construction of the reaction wheel is tabulated below. For part numbers, please refer to the assembly drawing presented earlier on this page. All materials shown below have a CVCM and TML less than 0.1% and 1% respectively.
Additionally, using CAD software, the mass of each virtual component was measured and summed to make sure it algined with the total computed mass of the assembly. The mass of each component and the total mass of the AS-RW is shown below. The total computed mass is 156.1 grams.
(*) Note the bearing lubrication is selected as UDL Dry Lube from Boca Bearings. More information is available here: https://www.bocabearings.com/products/lubetoolsmore/udl-dry-lube?ProductType=0. The flight and engineering model bearings will have the aforementioned lubrication. This lubrication according to the supplier is "Is an extensively modified lamellar composition of Tungsten Disulfide" and "Suited for Vacuum Environment Lowest outgassing amongst all dry film lubricants at -350°F to +2400°F (-188°C to +1316°C), even at 10 -14 torr (10 to the power of 14)".
This section outlines the parts sent for manufacture for the engineering model of the ArcticSat reaction wheel AS-RW-MK0 (EM1). Note this engineering model does not use the flight model bearings.
The ArcticSat reaction wheel motor was designed using FEA simulations. In Phase D, the motor will be built and tested. The general motor design is a 3-phase axial-flux based brushless motor. This motor is a coreless motor, that is, there is no iron core that the windings are wound around. The concentrated 3-phase windings are soldered directly to the reaction wheel CCA. The motor design consists of 14 magnets and 9 windings (3 windings per phase). All phase windings are connected in series. As shown in the figure below, the phase windings need to be harnessed in a specific orientation to support the creation of a rotating magnetic field. This windings layout and convention is based on the winding diagram algorithm as outlined in Brushless Permanent Magnet Motor Design 2nd edition.
The reaction wheel CCA has already started but is set to completed early in Phase D. The reaction wheel CCA is heavily based on existing COTS components. Specifically, it is based on the X-NUCLEO-IHM16M1 3-phase brushless motor driver board and NUCLEO-G431RB MCU. The reaction wheel CCA will implement 3 hall effect sensors in order to provide rotor position information that can be used by the motor commutation control algorithms. Additional functionality is added to the reaction wheel CCA to facilitate proper integration with the ArcticSat bus. This includes a standard harnessing connector as outlined in the harnessing wiki (link), as well as a voltage regulator to step up the bus voltage to 12 V.
X-NUCLEO-IHM16M1: Three-phase brushless DC motor driver expansion board based on STSPIN830 for STM32 Nucleo. Link: https://www.st.com/en/ecosystems/x-nucleo-ihm16m1.html
Operative voltage from 7 to 45 V
Output current up to 1.5 Arms
Supporting single shunt and three-shunt sensing
Standby mode
Flexible direct driving settable between 3 or 6 PWM inputs
Current limiter with adjustable reference
Overcurrent, short-circuit and interlocking protections
Thermal shutdown and undervoltage lockout
BEMF sensing circuitry
Bus voltage and PCB temperature sensing
Input connector for Hall effect-based sensors and encoder
Fully compatible with STM32 Motor Control SDK (X-CUBE-MCSDK)
NUCLEO-G431RB: STM32 Nucleo-64 development board with STM32G431RB MCU, supports Arduino and ST morpho connectivity. Link: https://www.st.com/en/evaluation-tools/nucleo-g431rb.html
The ArcticSat reaction wheel has its own dedicated software system that interfaces with ArcticSat's Flight Software (FSW). This is done to ensure modularity between FSW and the reaction wheel, since a custom device is being developed.
Motor controller algorithms are not designed in-house but instead modified using existing software. This software is available from STM32 Motor Control SDK (X-CUBE-MCSDK). More information can be found here: https://www.st.com/en/embedded-software/x-cube-mcsdk.html
High-Level Data Link Control framing is used as the communication protocol to and from FSW using SPI. A communication frame starts and ends with a frame delimiter. Additionally CRC is used to detect any errors during communication between FSW and the reaction wheel.
ArcticSat's FSW Subsystem communicates with the AS-RW through SPI. The internal software for the reaction wheel has three distinct interfaces with FSW. These interfaces are the Set Interface, Get Interface, and Reset Interface.
The AS-RW provides the following commands through the Set Interface:
set_control_method (uint8_t):
This method is intended to be used to switch motor commutation methods during development and interface testing and not during in-flight operations. There are two modes to choose from. The first mode is 6-step commutation. The second mode is field-oriented control. During Phase D the two control algorithms internal to the COTS motor driver will be compared to see their effect on the torque and speed ripple of the reaction wheel.
This method returns 1 (true) if the command was successful and 0 (false) if the command was not successful.
set_torque (uint32_t):
Through ADCS, FSW sends torque commands to the reaction wheel. These torque commands are then internally translated into PWM signals used to control the AS-RW motor driver.
This method returns 1 (true) if the command was successful and 0 (false) if the command was not successful. The method returns true if external torque command was executed correctly. The method returns false if the external torque command was not executed correctly within a certain threshold tolerance (+/- μNm) of the commanded torque. The method also returns false if the commanded torque is outside of the maximum torque that can be produced based on the current limit setting of the reaction wheel.
set_current_limit (uint32_t):
Based on system redundancy, health, or power constraints, FSW can issue commands to limit the maximum current that can be drawn by the reaction wheel.
This method returns 1 (true) if the command was successful and 0 (false) if the command was not successful.
set_pid_gains (uint8_t):
This method sets the PID controller gains to the reaction wheel's torque controller and can be used to tune the reaction wheel during Phase D testing and development.
This method returns 1 (true) if the command was successful and 0 (false) if the command was not successful.
The AS-RW provides the following commands through the Get Interface:
get_torque (uint32_t):
This method returns the current torque being generated by the reaction wheel.
get_speed (uint32_t):
This method returns the current speed of the reaction wheel.
get_reference_torque (uint32_t):
This method returns the last torque command sent to the reaction wheel from FSW.
get_current_lim (uint32_t):
This method returns the latest current limit setting being implemented by the reaction wheel.
get_temp (uint32_t):
This method returns the current highest temperature reading read by all thermal sensors on the reaction wheel CCA.
get_telemetry:
This method returns several values that are stored using specific memory addresses in order for FSW to monitor the health and status of the AS-RW.
lastResetCmd (uint8_t)
lastTurnOnCmd (uint8_t)
lastTurnOffCmd (uint8_t)
ErrorCrcPackets (uint32_t)
ErrorLenPackets (uint32_t)
ErrorPacketCmds (uint32_t)
ErrorTorqueCmds (uint32_t)
ErrorTotalNum (uint32_t)
BytesTotalWritten (uint32_t)
BytesTotalRead (uint32_t)
The AS-RW provides the following commands through the Reset Interface:
turn_on:
This method turns on the reaction wheel. In the "off" state, the reaction wheel is ramped down to zero speed and will not respond to any set commands other than turn_on.
This method returns 1 (true) if the reaction wheel state was successfully switched and 0 (false) if the reaction wheel state was not changed.
turn_off:
This method turns off the reaction wheel. In the "off" state, the reaction wheel is at zero speed and will not respond to any set command other than turn_on.
This method returns 1 (true) if the reaction wheel state was succesfully switched and 0 (false) if the reaction wheel state was not changed.
reset_mcu:
This method resets the mcu.
This method returns 1 (true) if the reaction wheel was succesfully restarted and 0 (false) otherwise.