Reaction-Wheel Slew

2D top view of the 3D satellite: accelerate the wheel one way and the spacecraft turns the other; the wheel eventually saturates.

Switch to 3D

Presets

Playback

Apparatus

Model checks

The science

What is modelled

The satellite has a reaction wheel on its axis. A motor pushes the wheel; the equal and opposite reaction turns the body. With no external torque the total angular momentum Iω + JΩ stays constant, so the body only turns while the wheel speeds up or slows down.

Equations

  • Controller τdes = kp(θt - θ) - kd ω, motor torque clipped to ±τmax and so that the wheel never exceeds its speed limit.
  • Body I ω' = τext - τmotor; wheel J Ω' = τmotor (the same equations as the 3D page for one axis, without gyroscopic coupling).
  • Linear response ωn = √(kp/I), ζ = kd / (2 √(kp I)), overshoot exp(-πζ / √(1-ζ2)).
  • Momentum unloading: a magnetic torque -g h, limited by dipole × field = 32 A m2 × 32 μT.

Checks run in the page

  • Total angular momentum constant over a slew without disturbance or unloading.
  • Small-step overshoot against the second-order formula.
  • Net wheel rotation equals -(I/J) times the body rotation.
  • Wheel speed never exceeds the limit in a saturating slew.

Honest simplifications

One axis only (the 3D page has three axes with gyroscopic coupling and a quaternion attitude), ideal actuators with clipping, a qualitative magnetic-field model. Not mission-certified.

What to try
  • Run the Saturation preset: the wheel hits its speed limit and the slew stalls.
  • Press Kick: the body spins and the wheel soaks up the momentum.
  • Turn the controller off: momentum is frozen and the body drifts at constant rate.
Pointing angle and target against time
Wheel speed against time with the speed limit
Angular momentum: body, wheel and total
Phase portrait: pointing error against body rate
Made with 🤖 ChatGPT