Close
0%
0%

Ultra Servo

An ultra strong and fast servo that is reasonably priced. The goal is to generate 60ft*lbs (11 520oz*in) with 60 rpm no load rpm speed.

Similar projects worth following
Building anything that can interact with everyday life objects require high powered servos. This servo is intended to serve the maker ecosystem as to facilitate macro projects that interact with the world.

Specs:
60ft*lbs stall
60 rpm no load speed
Programmable angle range
6" x 5" x 3" overall dimentions
12V or 24V operational voltage
TTL, SPI and Standard RC communications

The servo will be have a custom motor controller that will be Arduino based so anyone that needs to modify the parameters or so simply add functionality. Not all the I/O will be used in this project so they will be brought to a header pinset so that the user can then add/program in new features as they see fit. The position sensor will be a magnetic hall effect sensor. This type of sensor will make the system much more versatile because it will allow the user to select the angle range of motion, continuous motion or what ever the programmer wants it to be.

The servo project has started in 2015 when I decided to build a robot arm. First and foremost is to find a drive system that is at the very least as strong as a human arm (I used my arm as a benchmark). After looking under every internet rock it seems like there is no real product that can do this under 3000$. There are some servos that do come close but there is no way to extract any information from them. Ex: Position, speed, torque applied etc....

All these problems ultimately made me want to make my own high powered servo. My benchmark for a servo will be as follows:

  1. 60 lbs*ft at stall
  2. 60 rpm free rotational speed
  3. Absolute positioning
  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. water cooled as option (Would increase the overall power rating by 15%-20%)

This servo will not be super duper accurate down to the 15 arc-min. This is meant to be used by the hobbyist, prototype validation or robotics that do not need accurate positioning (like prosthetic, remote control lawn mowers, remote control cars etc.). This limitation is due to the absolute positioning sensor (resolution of 0.1 degrees). When the servo is done, if someone wants to put incremental sensors onto the motor output shaft then I would think that an accuracy of 20 arc-min is achievable (limited by the backlash of the gearbox) .

I think that this servo will be an essential building block for any projects that want to interact with human scale objects or systems. Without this (relatively) inexpensive servo, it will greatly reduce the development time of large project. This will liberate some precious time to give the inventor to focus onto the larger problem that he/she it trying to solve. I think that many inventor and entrepreneurs are simply overwhelmed by the complexity of human scale projects because they will have to design E.V.E.R.Y.T.H.I.N.G. from scratch. These "Lego" pieces will help to alleviate the development process.

As of now, I have done the following:

  1. Tested 3 types of gearboxes to measure efficiency at high torques (planetary is king)
  2. Built Prototypes with worm gearbox(nmvr 40), bane bot gearbox and CNC planetary (PLE60)
  3. Programmed PID Loop, then added in a velocity error signal to tame overshoot. Now a PIV loop
  4. Sized all components: Motor, Gearbox, timing belt, timing pulleys, FET, shunt resistor and mounting hardware
  5. Cad all parts and completed 80% of the design

What is left to do:

  1. Finish the ESC design
  2. Build ESC board
  3. Program in the motor controller
  4. Order all aluminum parts to be laser cut
  5. Order remaining parts
  6. Bend aluminum parts
  7. Weld the main body of the servo to mounting plates
  8. Final assembly
  9. Lots and lots of testing

Once the 2nd prototype is completed I will compile the parts list and see where I sand for a price point. As of right now I am aiming at 750usd per unit.

Licenses:

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

Below is a link to all of my shared files on the projects so as the project moves along, the information will become more and more complete.

https://1drv.ms/f/s!Ai2uF3UuOcw7irUw5dLHe-PWO3gtZg

PLE60 Planetary Servo.pdf

Final dimensions of servo

Adobe Portable Document Format - 213.81 kB - 06/12/2017 at 03:15

Preview
Download

Servo analysis.xlsx

A very comprehensive spreadsheet to compare current servos and my custom designs.

sheet - 36.29 kB - 04/30/2017 at 03:32

Download

  • 1 × RS775 BDC Motor
  • 1 × PLE60 160:1 Planetary gearbox with 160:1 reduction
  • 5 × FDB7030BL Mosfet N-Channel 30 V 9 mohm Surface Mount Logic Level PowerTrench Mosfet TO-263AB
  • 1 × Atmel ATMEGA168-20AU ATmega Series 20 MHz 16 KB Flash 1 KB SRAM 8-Bit Microcontrolle
  • 1 × XL timing belt

View all 35 components

  • Electronics Build

    patchartrand07/24/2017 at 02:33 2 comments

    Out of all the things to build this one is the most challenging for me. I have very little experience with building electronics. So I did what everyone in my situation would do and watch all the you tube on this subject. (to youtube's credit, there is lots of good content).  I set out to design a brushed ESC that can handle the following power:

    • 30A Continuous
    • 24V max voltage
    • Current sensing
    • Temperature sensing
    • Arduino bootloader
    • Power output for case fan
    • Header for users to expand upon if they want to

    So with all those things on my design list, I set out to design version 1.0 of this controller. At first I used the VNH2SP30-E-1. This is a real nice chip because it dose quite a bit of the hard work for you since it is an all in one package (current sense, over temp shut off etc.). BUT when I went to buy the chip it had said that it was being discontinued.... So I switched to the VNH5019A-E. This chip is basically the same thing except it handles higher voltages and is not being discontinued. Below is a srceen shot of the final board design:

    AAAANNNNDDDD just before I sent the gerber files to the board company.... I find out that If i double up the VNH5019A-E chips, they cannot use the current sense. SO, this was quite the setback. So then I was stuck designing the 4X mosfet setup to control a board. I was a little hesitant to control the Mosfets from an Atmel chip directly (with the gate drivers applied). This would be challenging for me and any one what would want to add in some custom code without affecting the motor controller's performance. So I did some research and found the DRV8702QRHBTQ1 from Texas Instruments. This chip takes quite a bit of guesswork out of the design. The integrated shunt resistor amplifier, boost converter gate drivers and on and on... So I put it in my circuit and I am now hoping for the best. Below is a screen shot of the completed board.
    With all of the design criteria met, I sent the Gerber files to the board manufacture and ordered all the components.

    Soldering the board was real easy because I made an Arduino controlled toaster oven to reflow the solder. My first board went well except for the fact that I oriented the micro controller the wrong way and the pins for the motor controller chip had some shorts in it because I did not position it close enough. So I then proceed to make another board to correct all my mistakes. With a now freshly solderd board, I flashed the arduino boot loader (real impressed that it worked first shot) and then procedded to connect the battery..... The smoke came out of the board.... I put the leads on reverse polarity. this forced me to go back to the spread sheet of the chip and then I found some other design problems that could let the smoke out. I then assembled a third (3) board this time I will power it up with a power supply (ordered it last week) as to limit the current. I also bypassed the reverse polarity mosfet as it does not do anyting right now AND it may cause another unforseen problem. So whenever I get the power supply I will contunue to trouble shoot the board. Here is a picture of the latest board build complete with bypass wire instead of a mosfet.

  • Mechanical Build 02

    patchartrand07/23/2017 at 03:19 1 comment

    Once I bent all the metal parts, the fun Begins! I stayed up all night putting this servo together. The fit of the parts went quite well actually. The biggest problem was me not following my build plan because I was too lazy to print them.... Yes, yes I know RTFM. Now the USB port on my board is not facing out. This feature would be nice to have because I will be programming it soon enough and flashing the board will be cumbersome.

    Here is the servo 1/2 assembled:

    The aluminum welds are not the best but if anyone has done aluminum welding they will definitely point out that this is not for beginners (I would put myself as an intermediate).

    This next picture is me holding the servo so you can get a sense of scale.

    Hard to believe this thing will generate 60 ft*lbs! I was real excited at this point, so I tried to explain it to my wife. It turns out that she does not have the same enthusiasm as I do.

    The pulleys are press fit onto the shafts and in all fairness I was skeptical of the press fit charts but it worked like a charm. Here is website that I used to make the gearbox adapter and pulley holes:

    http://www.engineersedge.com/class_v.htm


    The circuit board on the servo may look good but it is not functional right now. I have started to play around with it but it was not a successful first try. I am still troubleshooting it but I hope to have an update tomorrow night.

  • Mechanical build 1

    patchartrand07/23/2017 at 03:02 0 comments

    I have finally recived my laser cut parts from the CNC place. They are immaculate. I encourage anyone to send sheet metal parts to a CNC place because it is almost like 3D printing. Just send your super duper intricate parts to the cutters via CAD file and like magic it comes out perfect!

    Here is a photo of the box of parts.


    The next step was to bend all the parts on my vice press brake. I bought mine from princess auto and it worked quite well on the thin gauge material. Here is a link of the one that I have:

    https://www.princessauto.com/en/detail/6-in-vise-mount-bending-brake/A-p8663767e;jsessionid=JcixUHKEpHpDr1jPZkeQnGe6.pal-prod-com1

  • Parts ordered and design completed

    patchartrand06/12/2017 at 03:34 0 comments

    Since I have created this project here, I have done some work to push the project from "pie in the sky" to reality.

    1. Built a ref flow oven to cook the custom boards
    2. Completed the design of the circuit board
    3. Completed the CAD design of the servo
    4. Ordered all the electronics parts from digikey
    5. Ordered all the mechanical parts
    6. Ordered the PCB board

    As of today I have the PCB and electronics parts here, ready to be installed. Last week I had to tweak the arduino controlled oven to follow the heating profile better. (picture below)

    If anyone wants me to show how I built the oven, please let me know I will make a write up about it.

    Below are some photos of the PCB and the stencil.

    I am hoping to put the circuit board together this coming week to I can start programming. It is my first pcb design and build so in all fairness I have no clue how this this going to work out. I triple checked my connections, diagram and data sheets. I am sure that I commited a rookie mistake somewhere that I will find myself quite dumb for doing. But hey, you need to start somewhere right?I am sure that at the end of this there will be a log on the trouble shooting that when on to make it work.

    What is left to do:

    1. Send the flat patterns out to the laser cutter
    2. bend all the pieces
    3. Populate the board
    4. Update my code to go onto the new board (that's the big one for sure)
    5. Build the servo

    I leave you with some glamour shots of the servo's last CAD design iteration.

View all 4 project logs

Enjoy this project?

Share

Discussions

Keith Olson wrote 06/25/2017 at 22:10 point

If you are interested in another encoder idea, check this out: http://techref.massmind.org/techref/io/sensor/pos/enc/greycodes.htm

It occurred to me that if you daisy-chained n-bit encoders with 1:n reducers, you could *drastically* increase the resulting resolution.  (...with backlash giving slight, yet increasing rounding errors as you go down the chain.)  For example, if you had an 8bit encoder that was connected through a 8:1 reducer to a second 8-bit encoder, you'd end up with ~16bits of resolution, which is 0.0055 degrees.

Encoder mask template for Inkscape: http://www.dgkelectronics.com/inkscape-optical-rotary-encoder-disc-generator-added-single-track-gray-encoder-support/

Hope this helps!

  Are you sure? yes | no

Keith Olson wrote 06/26/2017 at 17:53 point

Here is another *very* simple encoder idea, though I'm not sure of the accuracy.  http://www.simpits.org/geneb/?p=299

  Are you sure? yes | no

Oskar Weigl wrote 06/25/2017 at 18:01 point

Hi,

What are the specs of your brushed motor? Are you interested in going brushless?

If so, check out the ODrive, I think it would fit very well together with your project: https://hackaday.io/project/11583-odrive-high-performance-motor-control

If you want to be able to package everything nicely, I think it shouldnt be too hard to go single axis on the board and shrink down the PCB considerably.

Cheers!

  Are you sure? yes | no

BotLawson wrote 05/01/2017 at 03:17 point

Something that can help with overshoot is to zero-out the integrator/accumulator when the limits of the motor are exceeded by the given command or load.  (i.e. too much torque needed, too rapid an acceleration change, etc)  When your servo can't keep up with the command or load, what use is it to accumulate up errors?

Fyi, a "command filter" will let you tame over shoot even more.  Basically you feed input commands through a simple model of the servo
and limit the commands to what the servo can actually do.  (the model ideally has some idea of the load)

  Are you sure? yes | no

patchartrand wrote 05/01/2017 at 16:59 point

Thank you for the advice. I have not thought of a command filter but I can definitely see that it would be a good addition to the control loop. Would this be a limit on the feed forward signals or just a fixed point that would cap off the error?

I know what you mean by eliminating the integrator`s built up value. I am not sure when and how to "reset" its value..... I was thinking of using the instant acceleration and speed to "burn off" the integral error as it approaches the set point. This would leave the steady state error alone. Let me know what your thoughts are.

  Are you sure? yes | no

[deleted]

[this comment has been deleted]

patchartrand wrote 04/25/2017 at 12:11 point

Thank you for the nudge in the right direction! You have quite the project list btw. The Imgur mouse made for quite the chuckle.

  Are you sure? yes | no

samuel_carriere wrote 04/21/2017 at 13:02 point

It's about time someone makes a decent 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