Attitude Determination and Control 

The ELFIN ADCS (Attitude Determination and Control Subsystem) is responsible for designing, testing, and implementing the mechanisms which precisely acquire and control ELFIN’s attitude (i.e. orientation and spin vectors) in orbit.

The torquer coils that actuate to give ELFIN attitude control

The torquer coils that actuate to give ELFIN attitude control

Hardware: Torquer Coils, Magnetometer

As the name implies, there are two major responsibilities ADCS must uphold: determining attitude and controlling it. Attitude determination uses onboard sensors and ground processing of telemetry data to acquire knowledge of ELFIN’s attitude at all given times. The onboard sensors include a pair of magnetoresistive magnetometers for in-flight ADCS activities. While one of the magnetometers is located on the IDPU board, the other is on the ACB board which also houses the PIC-24— the microcontroller for the on-board software for ADCS.

 Further resolution can be gained using telemetry of the fluxgate magnetometer, which is more magnetically clean because it is attached at the end of the stacer, making it further from the spacecraft. This telemetry is analyzed with various post-processing techniques.

Actuation involves two torquer coils aligned with ELFIN’s Y and Z axes. By outputting currents to drive the torquer coils, they produce dipoles which interact with our magnetic fields and cause the spacecraft to torque. The torquer coils are made from peek and wound with HTCCA (High Tension Copper Clad Aluminum) wire. Each coil had roughly 200 windings of wire, with about 12 windings per layer. Careful steps were taken to ensure that the layers were even and the wires would not exceed the height of the channels they resided in. 

 ADCS is responsible for developing and testing the various algorithms, in-house software, and instrumentation responsible for this telemetry in order to develop a full solution to ELFIN’s attitude.


Helmholtz coil in a magnetically clean chamber, used to calibrate and test the magnetoresistive magnetometer.

Helmholtz coil in a magnetically clean chamber, used to calibrate and test the magnetoresistive magnetometer.

Software: Algorithms 

This process of magnetic actuation, the attitude-control side of ADCS, is used to maintain specific orientation and spin vectors – i.e. nominal attitude conditions is spin-stabilized at ~20 RPM orbit-normal.  There are various major ADCS maneuvers throughout ELFIN’s lifespan that must be accomplished: spin-up/down and precession. Spin-up/down is used to adjust rotation speeds 

To spin up/down, we use the algorithms BAct and BDot (lower RPMs and higher RPMs, respectively) to adjust rotation speeds, while precession is used to adjust the direction of the spin vector. ADCS is responsible for developing an algorithm for attitude control that complies with both science and engineering requirements. Testing is accomplished using several software simulations, such as MATLAB and STK, as well as several hardware tests. The algorithm will ultimately run on an on-board micro-controller, using sensor data as input and outputting current to drive torquer coils in response.


For BAct, when the MRM measures that the magnetic field in the X direction is greater than the magnetic field in the Y direction and Z direction, the Y coil will turn on. The polarity of the Y coil depends on the sign of the magnetic field in the X direction. Since there is an offset present when the torquer coils are on, the MRM cannot make accurate measurements during the torqueing sequence. Therefore, after the condition is met for the first sample, BAct torques for a designated amount of time. Then it rests for the next 4 samples by turning off the torque and the computer waits until the condition is met again. The rationale behind BAct torqueing for half a second is so that BAct wouldn’t torque for too long at higher RPMs. The 4 sample off time was a result of the flight computer occasionally delaying the readings of torque turning off, so we wanted to make sure that the data didn’t include the spike from the torque coils.


BDot uses a 7-point FIR filter to take the derivative of the magnetic field. It measures the half-period (zero-crossings) in the derivative of the Y-axis magnetic field. It then torques based on the sign of BDot in the y-axis. The duty cycle we implemented is currently one that torques for 50% of the half period. The theory behind BDot is that the derivatives will effectively null out the offsets present when the coils turn on. This would mean that the half periods would be measured accurately.

BDot is heavily reliant on the half period unlike BAct. Therefore, the ACB must have an accurate reading on half period; otherwise, BDot will not torque at its ideal times.