Контроллер вращения SatNOGS
Шаблон:Development https://wiki.satnogs.org/SatNOGS_Rotator_Controller
Введение
Контроллер ротатора SatNOGS относится к набору электроники, предназначенной для управления ротатором SatNOGS. Было несколько итераций конструкции контроллера поворотного устройства, но модульность подхода позволяет выполнять операции между различными версиями контроллера и поворотного устройства. С начала 2016 года конструкция контроллера вращателя может упростить конструкцию вращателя с двигателями постоянного тока или шаговыми двигателями. Мы намерены сохранить эту модульность для дизайна электроники и прошивки, чтобы облегчить разнообразие сборок нашим сообществом.
Контроллер вращения v2
The PCB are tested in this ground station.
Features
- Он предназначен для размещения всей электроники, необходимой для управления ротатором, в евроборде 80x50 мм.
- Основным микроконтроллером является Arduino pro-mini, SparkFun's Arduino Pro Mini 328 на ATmega328p.
- Модульная конструкция включает подключаемые DRV8825/A4988 or DC motor drivers (MC33926).
- Блок питания встроен в ту же плату, что и в предыдущей версии.
- Фильтрованное питание микроконтроллера.
- Мультиплексор I2C используется для подключения энкодеров I2C AS5601 (с одинаковым идентификатором) для получения обратной связи по положению для каждой оси.
- Датчик температуры ТС-74 следит за температурой внутри блока контроллера с целью защиты от перегрева.
- Есть несколько запасных контактов разработчика для подключения других периферийных устройств, таких как IMU или ЖК-дисплей.
- Выводы со встроенным фильтром RC-Low Pass для подключения торцевых заглушек.
- Интерфейс связи по умолчанию — RS-485, но его также можно использовать как UART.
- Использование разных путей для цифрового и силового (двигатели) GND.
- Электролитический конденсатор и TVS-диод на входе БП
- Прошивается либо с помощью UART, либо с помощью заголовка ISP
Последовательность сборки
- Убедитесь, что у вас есть собранная и готовая mechanical assembly of the rotator constructed and ready
- Buy the PCB. OshPark,Seeed FusionPCBWay.com, DirtyPCBs.com, Elecrow, Makerfabs have been used in the past with good results.
- You can order the v2.2 of the board directly using this OSHPark link
- You can order the v1.0 of the rotary encoder board using this OSHPark link
- You can order PCB as well as PCB Assembly service from Seeed Studio
- 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
Microcontroller
-
Microcontroller
-
Microcontroller Orientation
-
I2C pull-up resistors
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
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
Note: Guide for microstepping selection
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.
Also it is necessary to update the definitions in firmware, according to microstepping selection. Example:
- Step Angle: 1.8 deg
- Microstep: 1/8 step
- Steps per Revolution: (360/1.8)*8 = 1600
That means:
#define MICROSTEP 8 ///< Set Microstep #define MAX_SPEED 6400 ///< In steps/s, consider the microstep #define MAX_ACCELERATION 1600 ///< In steps/s^2, consider the microstep #define SPR 1600L ///< Step Per Revolution, consider the microstep
It is necessary to change the maximum speed and acceleration according to new SPR.
An example:
The speed = 300steps/s and acceleration = 100steps/s^2 with
- 1.8 deg/step stepper motor
- full step
- gear ratio 54
means speed = 10deg/s and acceleration = 3.3deg/s^2 according to this function.
Be careful:
- adjust the current (current limiting) for stepper motors
- add a heat-sink.
- plug the stepper motor drivers
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
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
Make sure you have not soldered the 2 electrolytic capacitors C3, C4 100uF. Those are only needed for the stepper motors. They can be destroyed by the DC motors and cause a short circuit of the power supply.
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
Communication
Note: For both options the firmware is the same.
UART
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
RS-485
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
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.
Endstops
In reference design, mechanical endstops (the P/N SS0505 of endstop is specified in satnogs rotator BOM) , 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
Encoders
Source files: satnogs-rotator-controller-encoder - GitLab Firmware: satnogs-rotator-firmware - GitLab
For stepper motor setup is optional (AS5601 encoder).
For DC motor setup is necessary.
Fabrication files are placed in latest tag of satnogs-rotator-controller-encoder - GitLab.
Firmware and Pin Assignments
Firmware
For stepper motors
For DC motors, thanks to ph4as
Pins Configuration
This configuration is from the latest release in Rotator Controller repository
- 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
- Power your PCB with 48VDC, without plug-in arduino pro-mini and motor drivers, measure with multimeter the voltage in point 1. Expected voltage +12V (reference to GND).
- Plug arduino pro-mini and measure with multimeter the voltage in point 2. Expected voltage +5V (reference to GND).
- Plug motor drivers (for steppermotors ensure the current is adjusted properly)
- Connect all peripheral devices like motors, sensors, endstops
If the two first steps fail, something is wrong (maybe there is a short circuit) in PCB. Check the connections with a multimeter.
Then the board is ready to run the firmware, satnogs-rotator-firmware.
Wiring
The silkscreen of PCB shows where the end-stops, rotary encoders, motors and communication interface are connected. For example SW1 is referred to azimuth end-stop, I2C-1 to elevation rotary encoder and M1 to azimuth motor. An example of wiring with SatNOGS Rotator v3.
Troubleshooting hints
As soon as the board is powered up or reset, it will auto-home, on first build you can trigger a reset multiple time or move the homing ring to get it "home".
Connecting directly to the Arduino pro-mini you will need to use 19200 bauds and "newline" line ending.
Here is some commands (took from [1]) you can issue in the terminal emulator of your choice to test things:
- VE, it will returns something like "SatNOGS-v2.0"
- RESET, move to home position
- AZxx, ELxx, move to specified position (number)
Nothing moves ? Look at the status and error register :
- GS, status register : 1 idle, 2 moving, 4 pointing, 8 error
- GE, error register : 1 no error, 2 sensor, 4 homing, 8 motor, 12 over temperature, 16 watch dog timer interrupt
By example, at first start, you might be in GS8 and GE4 until you get a good homing position for the rotator to start working.
If you using an unreleased version of the board (the board that has fuse holder), in community post you can find pin configuration file.
Rotator Controller v1