After separation#
When a deployer’s spring pushes a CubeSat or PocketQube out, the force never passes exactly through the centre of mass and friction differs between rails, so the spacecraft leaves with some angular rate, typically a few to a few tens of degrees per second. For PocketQubes, initial rates of up to 180°/s and a target below 5°/s have been proposed as design criteria[1]; POQUITO detumbled from 20°/s within one orbit with printed into its boards[2]. No pointing task, from Sun acquisition to antennas and cameras, can start before the spin is gone.
Magnetic torque#
A magnetorquer produces a magnetic dipole from the current in its coil. In the geomagnetic field the dipole feels a torque[3]
At 500 km the field is about 25 µT over the equator and about 50 µT over the poles. That the torque is always perpendicular to is the basic limitation of magnetic control: at any instant the component along the field cannot be controlled. The missing axis is recovered over time, as the field direction turns along the orbit.
The B-dot law#
While the spacecraft spins fast, the change of the field measured in the body frame comes mainly from its own rotation:
The law commands a dipole opposite to that derivative:
Why it works becomes clear when the dipole is substituted into the torque and the rate of change of the rotational kinetic energy is taken. With :
where is the component of the angular rate perpendicular to the field. The energy never increases; it stops decreasing only while the rate is parallel to the field, which the orbital motion does not allow to last. Avanzini and Giulietti analysed this behaviour in detail and showed how the gain can be chosen from the orbital rate and the smallest moment of inertia[4].
Why the law does not reach zero#
As the rate falls, the approximation breaks down: the rotation of the field itself in the inertial frame is no longer negligible. On a polar orbit the direction of a dipole field turns about twice per orbit. B-dot then tries to make the body follow the field, and the rate settles near twice the orbital rate .1At 500 km, °/s, so °/s. The 0.18–0.19°/s seen after three orbits in the simulation are of the same order.
Simulation set-up#
We compare two ends of the range: a 1.33 kg 1U with 0.05 A·m² per axis and a 0.25 kg 1P whose board-wound coils reach 0.005 A·m². Both start at (6, −5, 5.5)°/s, about 9.6°/s.
- Orbit: 500 km circular, 97.4° inclination (Sun-synchronous).
- Field model: dipole tilted by 9.4° and rotating with the Earth; T.
- Inertia: homogeneous-cube approximation ; about 2.2 × 10⁻³ kg·m² for the 1U and 1.0 × 10⁻⁴ kg·m² for the 1P.
- Control: 1 Hz sampling, finite-difference , per-axis saturation.
- Integration: quaternion kinematics and Euler’s equations, fourth-order Runge–Kutta, 0.5 s step.
- Neglected: gravity-gradient, aerodynamic and residual-dipole torques, sensor noise.
Results#
- 1U CubeSat, 0.05 A·m² coils
- 1P PocketQube, 0.005 A·m² coils
Show the data as a table
| Time (min) | 1U CubeSat, 0.05 A·m² coils | 1P PocketQube, 0.005 A·m² coils |
|---|---|---|
| 0 | 9.55 | 9.55 |
| 5 | 1.10 | 2.19 |
| 10 | 0.69 | 2.05 |
| 30 | 0.60 | 1.90 |
| 60 | 0.20 | 1.14 |
| 90 | 0.20 | 0.96 |
| 120 | 0.10 | 0.63 |
| 180 | 0.13 | 0.36 |
| 240 | 0.17 | 0.20 |
| Scenario | Inertia (kg·m²) | Largest dipole (A·m²) | Gain k (A·m²·s/T) | Time to |ω| < 1°/s | |ω| after three orbits |
|---|---|---|---|---|---|
| 1U CubeSat, 0.05 A·m² coils | 2.30 × 10⁻³ | 0.05 | 30,000 | 5.4 min | 0.18 °/s |
| 1P PocketQube, 0.005 A·m² coils | 1.05 × 10⁻⁴ | 0.005 | 3,000 | 87.8 min | 0.19 °/s |
For comparison, the orbital rate is n = 0.0634 °/s and 2n = 0.127 °/s.
In the 1U, the initial steep fall is the phase in which the dipole is saturated: torque stays at its maximum and the rate drops below 1°/s within minutes. In the 1P the torque-to-inertia ratio is similar, but the small dipole of board coils and the gain chosen for it stretch the same threshold to about one orbit. The ripple on both curves comes from the changing direction of the field relative to the body: damping slows whenever the rate happens to be parallel to the field.
Why size matters less than expected#
The principal moment of inertia of a homogeneous cube, , scales with the fifth power of size, so a PocketQube has only 3–5% of the inertia of a 1U[5]. A coil dipole of the same technology scales with the area it encloses times the number of turns, so it shrinks more slowly than the inertia. That is why a 1P with a dipole ten times smaller is still detumbled within an orbit.
A discrete implementation#
In flight software B-dot is a loop of a few lines. Measurement and actuation alternate, because running magnetorquers disturb the magnetometer.
#include <math.h>
#define DT_S 1.0f /* control period [s] */
#define K_BDOT 3.0e4f /* gain [A·m²·s/T] */
#define M_MAX 0.05f /* largest dipole per axis [A·m²] */
static float b_prev[3];
static int has_prev = 0;
/* b: magnetometer reading in the body frame [T]
m: dipole commanded to the magnetorquers [A·m²] */
void bdot_step(const float b[3], float m[3])
{
for (int i = 0; i < 3; i++) {
float bdot = has_prev ? (b[i] - b_prev[i]) / DT_S : 0.0f;
m[i] = fmaxf(-M_MAX, fminf(M_MAX, -K_BDOT * bdot));
b_prev[i] = b[i];
}
has_prev = 1;
}The sampling rate must suit the initial rate. At 180°/s the field turns half a revolution per second in the body frame, and a 1 Hz finite difference becomes meaningless. PocketQubes that expect high initial rates need a 5–10 Hz loop, with the coils switched off during each measurement window.
Attitude modes#
stateDiagram-v2 state "Waiting" as Wait state "Detumbling (B-dot)" as Detumble state "Sun acquisition" as Sun state "Nominal" as Nominal state "Safe mode" as Safe [*] --> Wait : separation Wait --> Detumble : timer expired Detumble --> Sun : |ω| ≤ 1°/s Sun --> Detumble : |ω| ≥ 3°/s Sun --> Nominal : Sun sensor lock Nominal --> Safe : low battery Safe --> Detumble : battery recovered
Different exit and re-entry thresholds for , here 1 and 3°/s, give hysteresis that prevents the modes from chattering.
Design rules#
- Size dipole and inertia together. Detumbling time is set by the ratio of the largest torque to the angular momentum; board coils on a 1P give times of the order of an orbit, not hours.
- The gain sets the saturation phase. Too large a gain keeps the coils saturated and degrades the law to bang-bang control; too small a gain wastes available torque.
- Place and calibrate the magnetometer carefully. Battery currents and coils add a constant bias to the reading. Differentiation removes most of it, but it still affects saturation and noise behaviour. Near a permanent magnet, as in passively stabilized designs, the bias can exceed the sensor’s range[6].
- Detumbling is a first phase. Fine pointing needs Sun sensors, gyroscopes and possibly under a second controller.