SatNOGS Rotator Controller

From SatNOGS Wiki
Revision as of 13:35, 23 April 2018 by Azisi (talk | contribs) (Wiring)
SatNOGS Rotator Controller
SatNOGS Rotator Controller
Type: Rotator Controller for SatNOGS rotator.
Cost: 60-80€
Release Information
Status: Working
Latest Release: [v2 -]
Repository: satnogs-rotator-controller - GitLab
Documentation: SatNOGS wiki


SatNOGS Rotator Controller refers to the set of electronics designed to operate a SatNOGS Rotator. There have been multiple iterations of the rotator controller design, but the modularity of the approach enables operations between different versions of the controller and the rotator. Since the start of 2016, the rotator controller design is able to facilitate a DC-motors or stepper-motors rotator design. We intend to keep this modularity for the electronics and firmware design to facilitate the variety of build by our community.

Rotator Controller v2

The PCB are tested in this ground station.


  • It is designed to fit the entire electronics needed to control rotator in Euroboard 80x50 mm.
  • Main micro-controller is Arduino pro-mini, SparkFun's Arduino Pro Mini 328 dev-board with ATmega328p.
  • The modular design includes plug-in either DRV8825/A4988 or DC motor drivers (MC33926).
  • The power supply in embed in the same board in contrast with previous version.
  • Filtered power supply of micro controller.
  • An I2C multiplexer is used to connect I2C encoders AS5601 (same ID) to get position feedback for each axis.
  • A temperature sensor TC-74 monitoring the temperature inside the controller box in order to protect them from over-heating.
  • There are some spare dev-pins in order to connect other peripherals like IMU or an LCD display.
  • Pins with integrated RC-Low Pass filter for end-stops connection.
  • Default communication interface is RS-485 but it can also be used as a UART.
  • Using different paths for digital and power (motors) GND.
  • Electrolytic capacitor and TVS-diode in PSU input
  • Flashed either by using UART or ISP header

Build sequence

  • Make sure you have a mechanical assembly of the rotator constructed and ready
  • Buy the PCB. OshPark,,] have been used in the past with good results.
  • Get all the necessary components according to BOM from latest tag (or the version that you want to build), Gitlab Tags
  • Assemble the PCB, by soldering the components
  • Burn the firmware
  • Using the wiring diagram, connect the controller to the Rotator
  • You are ready! Proceed with testing

Assembly Guide

Rotator Controller sheet 1/2
Rotator Controller sheet 2/2


The main micro-controller of the board is arduino pro-mini 5V@16MHz, ATmega328P. The +5V of the controller are produced from arduino pro-mini. Some clones do not use correct parts in LDO, like the original one, with result, when it powers up with +12V, burned.

Some examples,

One Solution is not use clones, use Sparkfun's arduiuno pro-mini 5V@16MHz, ATmega328P. The second solution is to add a LDO, like MIC5205 (maybe in a new revision of v2).

The power consumption in +5V is:

- QTY. VCC(V) IDD(mA) Total(mA)
AS5601 2 5 6.5 13
PCA9540B 1 5 0.1 0.1
SN65HVD485E 1 5 2 2
TC74 1 5 0.35 0.35
arduino pro mini 1 5 20 20
MC33926 2 5 0.2 0.4
DRV8825 2 5 0.1 0.2

The LDO MIC5205 guaranteed 150mA output, for Stepper motors ~35-40mA, for DC motors ~35-40mA.

Motor Drivers

Stepper motor driver
Stepper motor driver

For the stepper motor driver 2 options have been tested, DRV8825 and A4988. For both options it is necessary to solder:

  • 2 electrolytic capacitors C3, C4 100uF
  • 4 single 0.1" male connectors for U3, U4
  • 2 fixed terminal blocks P7, P8, Amphenol-VI0421550000G
  • 6 jumpers to adjust the micro-step, default option is Full Step
JP3/JP6 JP2/JP5 JP1/JP4 Microstep Resolution
Low Low Low Full step
High Low Low Half step
Low High Low 1/4 step
High High Low 1/8 step
Low Low High 1/16 step
High Low High 1/32 step
Low High High 1/32 step
High High High 1/32 step
  • DoNOT solder 2 resistors 100k, R4, R7 in default configuration (full step)
  • If you have A4988 for stepper motor drive and you want to use micro stepping, when the MS1 is HIGH

it is necessary to solder R4, R7 according to A4983 Stepper Motor Driver Carrier, Step (and microstep) size.

In case of DRV8825, all pins MS1, MS2, MS3 have internal pull-up resistor.

Be careful:

The stepper motor that is used, is Nema 17 Bipolar 59Ncm,

  • Size: ▱42 x 48 mm
  • Weight: 390 g
  • Shaft diameter: 5 mm
  • Step Angle: 1.8 deg
  • Nominal speed @ 12V: 720deg/s
  • Rated Current/phase: 2.0A
  • Stall torque @ 12V: 0.59Nm
DC motor driver
DC motor driver

It is necessary to solder:

  • Solder U6 with 0.1" female connectors as shown in picture
  • Solder 2 pads in yellow circle by using ~1mm diameter wire
  • Solder 2 2-pin 3.5mm terminal blocks for 2 DC motors

The DC motor controller is Dual MC33926 Motor Driver Carrier

  • Motor driver: MC33926
  • Motor channels: 2
  • Minimum operating voltage: 5V
  • Maximum operating voltage: 28V
  • Operating voltage: 12V
  • Continuous output current per channel: 2.5A
  • Current sense: 0.525 V/A
  • Maximum PWM frequency: 20 kHz
  • Operating PWM frequency: 3921.5Hz (~4kHz)
  • Minimum logic voltage: 2.5V
  • Operating logic voltage: 5V
  • Maximum logic voltage: 5.5V

The DC motor that we use is 50:1 Metal Gearmotor 37Dx54L mm,

  • Size: 37D x 54L mm
  • Weight: 195 g
  • Shaft diameter: 6 mm
  • Free-run speed @ 12V: 200 rpm
  • Free-run current @ 12V: 300 mA
  • Stall current @ 12V: 5000 mA
  • Stall torque @ 12V: 1.2Nm


UART Jumpers
Pin Header

To use UART:

  • solder JP7 and JP8
  • solder pin header 0.1" female connector
  • not solder C1, U2, R18, R19 R9, R8, R1, D3
  • A is TX and B is RX

To use RS485:

  • solder pin header 0.1" female connector
  • solder C1, U2, R18, R19 R9, R8, R1, D3
  • not solder JP7 and JP8

If you use PCB without R19 footprint, you can add it in arduino pro-mini UART header.

Power Supply

Power Supply

Recommended power supply for rotator controller is: 48V @ 1A DC. A good choice is the MEAN WELL LRS-50-48

The switching power supply could get as input voltage, 19-60V DC.
In different input voltages, must be change the components like D4 and F1.
Default PCB components works at 48VDC.


Endstop Specification

In reference design, mechanical endstops, are used.

The controller has the capability to accommodate optical or magnetic endstop which connected to P2 header with silkscreen, SW1, SW2, +5V and GND.

Mechanical endstops are connected to

  • SW1 and GND for azimuth axis
  • SW2 and GND for elevation axis


For stepper motor setup is optional (AS5601 encoder).

For DC motor setup is necessary.

Rotary Encoder sheet 1/2
Rotary Encoder sheet 2/2


Wiring Diagram

Rotator Controller enclosure - Placement

Mount the rotator controller enclosure by using two sides adhesive tape (as mentioned in BOM)

Rotator Controller enclosure - Placement

Firmware and Pin Assignments


For stepper motors
For DC motors

Pins Configuration
  • M1IN1 10, Step or PWM1
  • M1IN2 9, Direction or PWM2
  • M1SF 7, Status flag
  • M1FB A1, Load measurment
  • M2IN1 11, Step or PWM1
  • M2IN2 3, Direction or PWM2
  • M2SF 6, Status flag
  • M2FB A0, Load measurment
  • MOTOR_EN 8, Enable/Disable motors
  • SW1 5, Endstop for axis 1
  • SW2 4, Endstop for axis 2
  • RS485_DIR 2, RS485 Half Duplex direction pin
  • SDA_PIN 3, Data I2C pin
  • SCL_PIN 4, Clock I2C pin
  • PIN12 12, Digital output pin
  • PIN13 13, Digital output pin
  • A2 A2, Analog input pin
  • A3 A3, Analog input pin

Pre-Flight Check

Need to add testing procedure here.

Rotator Controller v1