You are here

Rotator controller with STM32 and USB and Ethernet

Introduction
This latest version of the rotator controller is more than just a replacement of both older controllers. Its main goal is to eliminate the compromises, which were in the first version especially. Simplicity has been replaced by the higher complexity of production, but it is completely normal for modern electronics. The serial port is no longer standard hardware equipment of personal computers, although the use of the serial port is still very popular and often very practical. The small size of RAM of the original microcontroller significantly reduced further development. These are some of the main reasons for this more modern design.

Schematics


Schematic - Basic


Schematic - Ethernet


Schematic - External components connection

Description
The power supply is provided by two switched regulators. The 3,3 V voltage is used to power most components. The 5 V voltage feeds the display and the relays.
The voltage level transition of the data signals to the display is performed by the chip 74HCT244. The display is capable to handle lower level, but I do not want to make another compromise. I recommend paying attention to the display connection. Pins are swapped for easier wiring in some cases.
As a microcontroller, I chose STM32F407VET6, which is well-available on the market, has Ethernet integration and has sufficient size of data RAM and flash memory for further development.
The microcontroller is connected to the Ethernet network via the RMII interface and integrated circuit LAN8720AI.
In addition to the main oscillator crystal, the real-time clock crystal and the backup battery are mounted on the board as well. At the present, firmware does not use them, but I will count with them in the future firmware release.
To achieve the required parameters, the controller is built on a four-layer PCB. Home production of PCB is practically impossible, so it does not make sense to publish the layouts of the individual layers here.

First power up and programming
The basis for a successful production is the careful assembly of the components and meeting their parameters according to the BOM.
The microcontroller is programmed using the SWD interface and the ST-Link v2 programmer. To connect the programmer, I used the same connector like in case of the sensor AS5048.
After successful bootloader programming, the yellow LED will flash with fast frequency. This means that the device is in the firmware programming mode. If the bootloader finds a valid application program, it will run after a short time.

The main communication interface is USB. When interface connects to a computer, it creates a serial port. In case of OS Windows, drivers should download automatically from Windows Update.

The application firmware is uploaded via the serial port by using fw_flash utility. Bootloader emulates the serial port only when the programming mode is enabled. If the firmware is not programmed, the programming mode is automatically activated. In other cases, you need to activate the programming mode manually by holding the down button or encoder button while the power on.

The emulated serial port, in addition to programming and communication with the Rotator manager, also supports KJTlog protocol (by OK2UWQ) and Yaesu GS-232 protocol.

Ethernet is optional for this controller, the corresponding components do not need to be mounted. The firmware can not be programmed through it.

Printed circuit board


Assembly drawing - Top


Assembly drawing - Bottom

Bill of materials

R1, R2, R3, R7, R14, R15 10 kΩ 0805
R4, R24, R37 10 Ω 0805
R5, R35 51 kΩ 0805
R6, R23, R38 470 Ω 0805
R8, R9, R10, R39, R40, R52, R53, R54 33 Ω 0603
R11 750 Ω 0805
R12 31,6 kΩ 0805
R13, R20, R36, R47, R55 270 Ω 0805
R16, R17, R18, R19, R25, R26, R27, R28, R29, R30, R31, R32, R33 4,7 kΩ 0805
R21, R41, R42, R43, R44, R45, R46, R57 4,7 kΩ 0603
R22, R34 10 Ω 0603
R48, R49, R50, R51 49,9 Ω 0603
R56 12 kΩ 0805
P1 5 kΩ Trimm 6,5x6,5 mm
C1, C2, C3, C4, C10, C13, C17, C18, C20, C22, C23, C24, C25, C26, C27, C28, C32, C39, C40, C41, C42, C43, C44, C45, C46, C47, C49 100 nF 0805
C59, C60, C61, C62 15 pF 0603
C57, C58 22 nF 0805
C56 470 pF 0603
C51, C52, C54 100 nF 0603
C50, C53, C55 1 uF / X7R 0603
C37, C48, C63 10 nF / 1 kV 1206
C34, C35 18 pF 0805
C30, C33, C38 270 pF 0805
C19, C21 2,2 uF / X7R 0805
C11, C16 12 pF 0805
C8, C9 27 pF 0805
C6, C7, C14, C15 10 uF / X7R 0805
C5, C12 10 uF / X7R 1206
C29, C31, C36 Murata NFM3DCC222R1H3L 1205
L1 22 uH MURATA 7,3x7,3 mm
L2 15 uH MURATA 7,3x7,3 mm
L3, L7 Ferrite bead 0805
L4, L5, L6 220 nH 0805
D1 BAT54C SOT23
D2 S2M SMB
D3, D5, D7, D8, D9, D10 1N4148 0805
D4, D6 MBRA140T3G SMA
D11, D12 Zener diode 5,6 V SOD-123
LD1, LD2 LED Green 0805
LD3 LED Yellow 0805
T1, T2, T3, T4 BC847 SOT23
IC1 STM32F407VET6 LQFP100
IC2, IC4 74HCT244 SO20
IC3, IC5 MCP16301T-I SOT23-6
IC6 ST3485 SO08
IC7 LAN8720AI QFN24
Q1 8 MHz / 18 pF SMD 5x3,2 mm
Q2 32,768 kHz / 6 pF SMD 3,2x1,5 mm
OSC1 Crystal oscillator 50 MHz 3,3 V SMD 3,2x2,5 mm
RL1, RL2, RL3, RL4 Omron G5V-1 5V
SW1 Switch THT
BAT1 Keystone 1069
J1, J5, J6, J7, J8 DG301-5.0-02P 5 mm pitch
J2 Mollex 53047-0510 1,25 mm pitch
J4 MLW16G 2x8 pin pitch 2,54 mm
J9 USB-B THT
J14 MAGJACK SI-50154-F / AMPHENOL LMJ2018813130DL3T1LFG (or compatible)
J3, J10, J11, J12, J13 Pin header pitch 2,54 mm

Assembled controller and model


Alternative display
An alternative graphics display with SSD1309 controller, 2.42-inch diagonal and 128x64 pixel resolution can be connected to the controller by using the I2C bus. The display is possible to buy on ebay under name SSD1309.

By default, the display is ready for connection to the SPI bus, which is not available on the controller board. So it is necessary to make changes according description on the display board. It is required to remove resistor R17 and add a 0 ohms resistors to positions R13 and R15.
After the power is turned on, the control unit tests the presence of the display on the I2C bus. If it does not find it, it tests the presence of a character display on the parallel bus.
If no display is connected, the STATUS LED on the controller board will start to blinking very quickly.

From the beginning, I had a problem with the display because there is not enough documentation for it. Finally, I found that the problem was with the wrong timing of the RES input after power on.
For display reset, there is no separate output on the controller board. So I have solved it with an external reset circuit with a chip MCP100.
I recommend to connect the display according to the following schematic diagram. I also designed a small board of this connection.


This PCB can be ordered HERE.