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 - 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
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.