On-Board Computer Subsystemacubesat
[DISCLAIMER: This post was created while AcubeSAT was under the A.S.A.T. team. Since 15.01.2021, the AcubeSAT project is part of SpaceDot.]
The On-Board Computer (OBC) subsystem is considered to be the “brain” of the satellite. It will be primarily responsible for coordinating and performing the basic functions required for the operation of the nanosatellite (CubeSat) as well as for its control by the ground. In addition, the subsystem’s responsibilities include the integration of different components, compliance with the satellite’s operational program and the correction of errors and failures. Our members have already managed to build a test board, in which the microcontroller and the other electronics of the construction are located.
In detail, the OBC uses microcontrollers through which it can manage the data on the satellite. A microcontroller is essentially a CPU that has much smaller size and energy consumption, in order to be placed in a nanosatellite. The group uses microcontrollers from STMicroelectronics, specifically the STM32L4 series. One of the challenges that members face is the radiation environment in orbit, which has the potential to corrupt data and damage electronics. Techniques such as Error Detection or components such as Latching Current Limiters and Watchdogs are used to address such problems.
As regards the physical structure of the OBC, it consists of the microcontroller, the necessary sensors and memories where critical satellite data are stored. In particular, there is the Everspin MR5A16A MRAM, which is radiation resistant and can store up to 4 MB of satellite parameter data. Furthermore, there is the ISSI IS37SML01G1-MLI NAND Flash memory, which stores all satellite packets ready to be sent to earth. The last component is the Micron MT29F64G08AFAAAWP-ITZ:A NAND Flash memory, sized to 8 GB, in which the entire volume of scientific data on the mission is stored for transmission to earth. This memory is placed on the payload’s pressure vessel. Other functions performed in the OBC are timekeeping, detection and correction of errors (Failure Detection, Isolation and Recovery), entering system Safe Mode when needed, automatically executing commands by scheduling, remotely programming other subsystems, and constructing and controlling all telemetry.
Equally important is the on-board software, written by members of the team in C++ and C, using the free and open-source gcc compiler for ARM Cortex-M. The code consists of the following parts:
- Application code, which performs the main functions of the mission.
- Component drivers, which are responsible for communicating with devices such as sensors, pumps, cameras, motors, etc.
- Telemetry and Telecommand services perform the typical activities of a spacecraft (such as reading measurements from earth, changing parameters, reporting errors, etc.).
- Open-source code libraries responsible for standard operations such as file management (littlefs) or data structures (etlcpp).
- Real-time operating system (FreeRTOS). It is responsible for coordinating the execution of all the aforementioned functions, while the microcontroller is on.
Finally, the software is written with the limitations of a space-based embedded system in mind. In other words, no dynamic memory or RTTI is used, while the code is statically analyzed and program resource consumption is thoroughly checked. The software is automatically tested by use of the Catch2 unit testing framework. All our code is open and accessible to everyone from our GitLab account, so that it can be browsed and improved by anyone!