The topic of this thesis is the development of a control algorithm which is capable of stabilizing the attitude of picosatellites in low Earth orbits.
Picosatellites (CubeSats), which are very popular in recent times, are standardized satellites with mainly educational purposes. Masat-1, developed at our university, is a satellite of this kind.
Controlling the attitude, that is, the orientation with respect to the Earth, has basically two motives: first, the antenna and certain sensors have to point in a specific direction, secondly, a rotation about one of the axes is required in order to balance the heat load of the solar modules.
The algorithm requires three different sensors: a 3D MEMS gyroscope, a sun sensor (photodiodes that have an analog output which is the function of the sunlight’s angle of incidence, and a separate microcontroller calculating the current orientation based on these outputs – this algorithm is not part of the thesis), and a magnetic sensor. The actuators are three electromagnetic coils, located on three perpendicular sides of the satellite. The electric currents of the coils interact with the magnetic field of the Earth, thus creating a torque, which is then applied to the satellite, allowing us to change its attitude. The coils merely provide a way to produce the torque; however, it is calculated according to the control algorithm, based on the reference orientation. This way, this active control is much more flexible and effective than passive methods (e.g. a bar magnet).
The thesis covers the following four topics in details:
1. Modeling the satellite and its environment: rotational dynamics; relationship between the coil currents and the torque; the magnetic field of Earth; translational motion (orbiting); disturbance torques
2. Modeling the sensors and the actuators, state estimation based on the sensor signals
3. Control algorithms: a detumbling controller with linear partial state feedback, and an exact linearization-based nonlinear controller for reference-tracking
4. Generating embedded C code from the algorithm, and verifying it by means of a processor-in-the-loop (PIL) test. During the test, I was using an STM32F4 Discovery development board, with a 32-bit, ARM Cortex-M4-based STM32F407 MCU.
The developed algorithm was implemented and tested in Matlab/Simulink environment.