Close

Servio Overview (Part 3/5) - Hardware

A project log for Servio

Open-source DC servomotor with extensive testing infrastructure.

veverakveverak 01/28/2024 at 21:010 Comments

Hardware

Relative to software, the hardware might be underdeveloped. This could be because the project is intentionally more focused on software. Importantly, from a hardware perspective, the Servio project only includes PCB designs, without any casing or mechanical designs. The general idea is that the casing, metal gears, DC motor, or potentiometer must be provided by the user. Servio essentially comprises just the PCB with its software.

For the project's development, we have so far created three iterations of the PCB and have a test jig in an unfinished state.

General PCB Requirements

Generally, the requirements for Servio PCBs are straightforward: The PCB needs a compatible MCU and an H-bridge to control the motor. It would also be practical to include connections for a rotation sensor (at a minimum, a potentiometer), a power source to regulate voltage for components, LEDs for indication, and some connectors.

We intentionally practice minimalism in this way to ensure that designing a new PCB is as simple as possible, which allows for high flexibility in PCB design.

Prototype v1

The first iteration was designed with the following goals:

  1. Make it easy for debugging (hence its large size, we made it fit within 10x10cm).
  2. Experiment with various components (we included extra SPI encoders and used WS2812 LEDs because we initially thought they were necessary).
  3. Integrate the STLINK V3-mini.
  4. Use the STM32G431KC - 170 MHz, 128KB of FLASH, 32KB of RAM.

We began development with this board and conducted most of the development on it. The only major issue was with the H-bridge, which led yaqwsx to hand-solder an alternative H-bridge to circumvent the limitation.

There was some debate about the kind of MCU we needed; we intentionally chose a more powerful one than we thought necessary. Why? To reduce development time by minimizing the need for performance optimizations. 

Prototype v1
First version of development board

Prototype v2

The second iteration was intentionally made smaller, mostly at my request, so I could more easily integrate it into actual applications. The board was designed as two connected PCBs: one being the servo itself and the other a debug board.

The goals here were to:

  1. Use the STM32G431KC - it works just fine and we actually use the computing power. 
  2. Use the DRV8870DDA as the H-bridge.
  3. Switch from WS2812 to standard LEDs.
  4. Rely on the STLINK-V3 mini.

Essentially, the second iteration intentionally narrowed the scope, and made stuff smaller.

A bunch of prototype v2 boards waiting for usage, you can see the v1 below it.
v2 devel board in first iteration of testjig, we used standard 40x20x20mm servo

Prototype v2 - Test Jig

With the second iteration of the development board, I put more effort into a test jig - a test harness that could be used for any development done by me or for further development automation.

The test jig contains a DC servomotor without a connected PCB to an external Servio PCB (v2) in a DIY-made box. There are other external boards that allow the addition of more sensors around the actual servo, such as an encoder directly connected to the servo shaft. During development, the servo was powered by a standard laboratory power source.

Key takeaways from this experience:

  1. The test jig was quite beneficial to development.
  2. There may be a need for various types of test jigs.
  3. The extra-sensory part of the test jig was unfinished, and there was no immediate motivation to complete it.

All in all, this part of the project will definitely have its own detailed log in the future.

The base of testjig is fairly sized box made out of totemmaker
The testjig contains v2 board, servo mounted on stand with encoder, usb hub with external UART, and another STM32H7 for potential extra stuff

Prototype v3

Generally, v2 was almost adequate, but we wanted to add some final touches to the board and decided to create v3, with goals to:

  1. Make it as small as reasonably possible - small enough for production use.
  2. Switch to the STM32H503 (practical reasons: a more readily available chip at a lower price, with higher computing power as a nice bonus).
  3. Switch to the DRV8251ADDAR as the H-bridge.

Apart from these different goals, we also changed the PCB designer; this time, the PCB was designed by Tomas Vavrinec. He kindly offered his services, as yaqwsx simply ran out of free time.

We just got the boards fresh out of factory!

Discussions