Ultra Servo V2.0

The intent behind the Ultra Servo is to give a maker or a robotics a powerful building block.

Public Chat
Similar projects worth following
Building anything that can interact with everyday life objects require high powered servos. This servo is intended to serve the makers and entry level robotics to facilitate macro projects that interact with the human scale world.

60ft*lbs stall
60 rpm no load speed
Programmable angle range
Windows based GUI to give control over numerous settings
6" x 5" x 3" overall dimensions
8V to 30V operational voltage
Standard RC and USB communications
Optical isolation on RC in

This project is the continuation of the Ultra Servo that was submitted for the 2017 Hackaday prize. Since that date there has been numerous iterations to all subsystems.

Making projects that interact with the physical world becomes challenging very quickly when its on the human scale. The need then arises for a relatively high powered servo to move objects, arms or wheels. At the moment, there is a large gap between the ubiquitous hobby servos and the semi large robotics servo. The choices are to use a large RC servo that is not too powerful or an entry level robotics servo that is expensive and complex to control.

Let’s say that someone wanted to make a remote control lawn mower (tractor, not the push type). Seems like an easy project…. Pushing, pulling and steering all the functions on the tractor requires a fair amount of force and speed. Linear actuators can do the levers but they are quite slow and will need a feedback loop with appropriate control circuit. RC servos are too weak to control any items and the industrial equipment is heavy, very expensive and complex to implement.

Second example is if someone wanted to build a robotic arm. The inexpensive answer is to use stepper motors with timing belts. The stepper motors are susceptible to loosing steps and are often oversized for the application to combat this issue. The second solution is to implement industrial or robotics servos. Both of these solutions are very expensive costing multiple thousands of dollars per degree of freedom.

The Ultra Servo is meant to remove or dramatically reduce the roadblocks to create these large projects. The design intent is to serve a wide range of clients that range from the following 2 groups:

  • Someone that is only comfortable with the standard RC type of communication but can still wans to set basic settings (angle of rotation, continuous or position control, absolute positioning and how to react upon loss of signal)
  • Someone that is proficient in coding/control loops that wants an engineer platform or “Lego part” to build off

From the start I want to have a servo that is as fool proof as possible. What I mean by that is if the designer or operator makes an error, it will not burn out or break something immediately. Therefore the servo has a hard-wired current limiting, reverse voltage protection, optical isolating RC in and high toque gearbox. All these features will eliminate headaches and reduce precious trouble shooting time. After quite a bit of design and engineering, the servo will have the following specifications:

  1. 60 lbs*ft at stall
  2. 60 rpm free rotational speed
  3. Absolute positioning (Eliminating a homing sequence is always welcome)
  4. Programmed output angle range
  5. Arduino Based micro controller
  6. 30A continuous motor controller
  7. Current sensing
  8. On board temperature sensing
  9. Brushed DC motor
  10. Most compact design possible
  11. Windows based GUI to set settings over USB to the servo
  12. Read real time data of the control loop and internal sensors
  13. Price point of 1,150 USD

There has been quite a bit of re-design and coding that has gone on since the 2017 submission. All aspects of the servo have been redesigned to make the Ultra Servo a marketable product. Below is a list of what is left to do:

  1. Finish the GUI interface
  2. Program the servo board to receive commands/settings from usb
  3. Finish up the mechanical build to validate all tolerances
  4. Sticker kit
  5. Durability testing


  • Circuit Maker (open source)
  • Arduino Development platform (open source)
  • Autodesk Inventor (Yearly subscription)
  • Microsoft Office (Yearly subscription)

Servo analysis.xlsx

A comprehensive analysis of all commercially available servos and the specifications of the Ultra Servo

sheet - 40.47 kB - 08/08/2019 at 01:00


  • 1 × AS5600 12 bit position sensor
  • 1 × ATMEGA328PB-AUR Arduino UNO
  • 1 × DRV8701E Texas Instruments Brushed DC Motor Gate Driver
  • 10 × PSMN2R6-40YS,115 Discrete Semiconductors / Transistors, MOSFETs, FETs, IGBTs
  • 1 × RS775 BDC Motor

View all 6 components

  • Trouble Shooting

    patchartrand08/14/2019 at 02:56 0 comments

    I had the servo assembled and ready to start running the program that I wrote for the first iteration. Annnnndddd it would not move, just buzz..... What could limit the power to the motor? Obviously the first thing is the program is wrong. So I had code to send full power to the motor as startup. Still nothing. Ok, must be a bad board not sending the signal to the board. Nope, all is fine..... Ok, a signal to my mosfet is grounding and not opening. No conductivity between the gates and anything else. I have a current chopping feature on the TI DRV chip. Perhaps I miss calculated that value? Math checks out so I take off the resistors and wire in some wires to bypass this feature. Still nothing. By this point I had assembled and disassembled the servo 4 times. While it was probing around with the oscilloscope (looking for any information at this point) I noticed that when I touched the servo it would speed up slightly. So I then started poking around and then I touched the film between the board and the mounting case. Then I could make it go full throttle or almost to nothing by flexing the material. It turns out that the material that isolates the board from the aluminum sub-frame is slightly conductive. Who know (I definitely did not). Lesson learned, only use quality parts!

  • GUI Programing Part 1

    patchartrand08/09/2019 at 02:39 0 comments

    I decided that the best way to interact with the servo is to have a dedicated application. I did toy with the Idea of the user changing parameters in the Arduino sketch and re-uploading it to the servo. That's not a real polished product and will deter some hobbyists from the product. So I started to build the interface to read/write settings. Here is a screenshot of the GUI

    The user can select read/write/perm.write for any of the settings. The difference between write and perm.write is how it is handled in the Arduino. The write changes a volatile variable only (will reset at startup) and the perm.write changes the volatile variable and the EEPROMPT variable. This was done to give flexibility to change a parameter multiple times without "wearing out" the EEPROMPT storage. This is particularly useful when using the servo in a robotics application that a master computer may change the PID gains multiple times per second.

  • Mechanial Redesign 1

    patchartrand08/09/2019 at 02:26 0 comments

    Since the position sensor now needed to be at the foot of the servo, all the brackets and mounting plates had to be redesigned. All the wire management was much more though out because the large diameter wire that supplies the servo is definitely a large item that needs consideration. The last iteration have too many parts to hold the components in place. The revised base plate was designed in 2 parts that welded together. The aluminum plates have multiple holes for mounting screws and reliefs for clearing the electrical components through hole mounting.

    The two parts may seem simple but I have spent lots and lots of time to iterate the design to consider manufacturing tolerances, cable routing, belt routing and the ability to actually bolt it together!

  • Board Redesign

    patchartrand08/08/2019 at 01:30 0 comments

    Revamping the circuit board became very apparent when I was programming the second version of the servo that using an analogue position sensor was just not going to cut it. I ordered the AMS AS5600 breakout board. This 12 bit digital angle sensor made the positioning much more accurate and allowed to reliably detect when the servo has done a complete turn to allow for a multi turn function. This lead to design a board that incorporates the angle sensor in it. That cemented the position of the board at the foot of the servo.

    Once all that was established, I created a second version with the Mega 32U4. This "Leonardo" controller was used because I wanted to eliminate the FTDI chip and..... The serial comms were underwhelming to say the least. It would be unthinkable to have someone re-program the servo only to have it lock up with the reset button buried deep inside the servo..... So, once again, there was one more revision to incorporate the good old Arduino UNO chip with the FTDI.

    I had made another project that was plagued with ground noises and different ground potentials. It ultimately lead me to install an opto isolator that cured pretty well everything. This is why on this new board. I wanted to have this feature for the RC because this problem was very hard to trouble shoot and it can be easy to say "well your servo is acting erratically when...". This leads to hunting for non existent firmware issues.....

    Below is the progression of boards Oldest on top to newest at the bottom.

View all 4 project logs

Enjoy this project?



patchartrand wrote 07/25/2019 at 18:52 point

Thanks for the information on the 01mechatronics. I had no Idea they existed. They have a very nice developed product. The main focus for this servo is its strength it has 60ft lbs or 81Nm of torque. The ultra servo definetly will not have as much communication functionality as the 01mechatronics. I want it simple enough for somone that only uses RC signals (not to be intimidated) and open enough that if someone wants to go into the programming, they can.

  Are you sure? yes | no

Andrey V wrote 07/25/2019 at 17:57 point

I think the same thing did guys from Greece (01mechatronics) a long long time ago. With a large bunch of options, rs485 control, windows GUI, Matlab library etc. What special in your servo?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates