The primary purpose of the Attitude Determination and Control System (or ADCS) is to control the attitude of the satellite (as its name would suggest). In the case of ECE³SAT, this will be done by interacting with the Earth’s magnetic field.
How so ? By using magnetorquers, which are just some kind of coils used to produce a torque, thus so adjusting the satellite’s rotation.
Most certainly, the nanosatellite will undergo some rotation at various stages of its flight: upon separation with the PPOD launcher (or any other launcher) or when deploying the antennas or the Electrodynamic Tether. In all these situations (and even more) a perturbation torque will be applied to the CubeSat, making it a freely spinning unusable orbiting junk. And for sure, we don’t like space junk… Thus, the very first step of any attempt to control the attitude in a stable way should be to reach a rather small rotation velocity (and to keep it throughout time). Only then can we try to point to a more specific direction.
This is why a detumbling algorithm is needed. And that’s where the BDOT algoritm comes up: it provides a simple way to reduce the angular speed.
But first, let’s recall how magnetorquers may be used to act on the satellite’s rotation.
When the magnetorquers are supplied appropriately, they can generate a torque, obeying the law: [ \vec{T} = \vec{M} \times \vec{B} = \|\vec{M}\| \|\vec{B}\| \sin(\theta) \vec{u} ] where $\vec{M}$ is the magnetic moment of the dipole (the coil), $\vec{B}$ is the Earth’s magnetic field, $\theta$ is the angle between $\vec{M}$ and $\vec{B}$, and $\vec{u}$ is the unit vector resulting from the cross-poduct and is orthogonal to both $\vec{M}$ and $\vec{B}$).
Hence, the torque is maximal when the magnetic moment of the magnetorquer and the magnetic field are orthogonal (i.e. when $\theta = \frac{\pi}{2}$).
This means that the satellite, which is rigidly linked with the magnetorquers, will have the tendancy to align itself in a way that the angle between each of the coils’ magnetic moment and the Earth’s magnetic field is minimised.
Thus, to control the attitude of the satellite, one has to control each of the three magnetorquers’ moment which is ruled by: [ \vec{M} = i \cdot n \cdot \vec{S} ] where $i$ is the intensity of the current flowing through one magnetorquer (in A), $\vec{S}$ is the surface enclosed by a turn of the coil’s spiral (in m²) with a vector direction normal to this surface and $n$ is the number of spires of the coil. In our case, each element of this equation is fixed except the current intensity. Therefore, controlling the sign and magnitude of the intensity in each coil will determine the rotation direction implied by the resulting torque.
The principle of the B-dot algorithm relies on the usage of magnetorquers to generate a torque which is opposed to the “natural” rotation of the satellite (based on Newton’s 2nd law equivalent for rotational motions). This is made possible by applying an alternating positive/negative current to the coil to have an appropriate magnetic moment (see the equations in the previous section).
For instance, as seen on Figure 1:
To sum up the way the B-dot algorithm works, here is a simple flow chart:
The control law creates a magnetic dipole in the opposite direction to the change in the magnetic field, estimated with magnetometers data: [ M_i = -k_i \dot{B}_i ] (with $i$ being one of the three axes and $\dot{B}_i$ the temporal derivative of the $\vec{B}$ field with respect to this axis)
As we have seen the B-dot algorithm is a rather simple stabilization algorithm which only requires knowing the evolution of the magnetic field as measured by our CubeSat’s sensors.
A few things to note, though:
Lastly, if you are interested in attitude determination or control algorithms, feel free to check the Wiki part on the ADCS from times to times as we will try to progressively add more descriptive content there.