Some time ago I wanted to buy a mearm from Phenoptix in the UK, unfortunately or maybe lucky for me it was out of stock. A little while later I bought a Prusa I3 3D printer. While browsing Thingiverse I stumbled on the mearm. Someone had converted the original mearm files to stl files so it could be 3D printed. I downloaded the files and started printing the 20+ parts that make up the mearm. While printing the mearm I quickly came to the conclusion that the design is not really suited for 3D printing. The original mearm was designed to be laser cut. Those machines are very accurate, the design relies on that accuracy. My 3D printer was not very well calibrated at that time and I was (still am) a rookie at 3D printing. While I managed to print a working mearm I have to confess that I spent hours filing and cleaning up the parts to make them fit. I hate cleaning up 3D printed parts.
I found some code on github that works very well, it uses inverse kinematics to calculate the position of the arm. So after setting up the servos and uploading the code to an Arduino I had a working mearm:
Since I was not very happy with the original design I decided to make my own version. Goal was to make it much simpler to print, less pieces that don’t need to be so accurate to fit together. I used freecad to design my robot arm. Long time ago I used Solidworks at work and freecad is a bit similar in workflow. Did not take me long to design the arm. My mearm is a little bigger then the original version.
I recently found some cheap 28-byj-48 stepper motors that are rated at 12V (1.48$ @ Elecrow). So I decided to use those stepper motors instead of servos. I only use a servo for the gripper. The original mearm design uses a lever attached to a servo to control the gripper. I don’t like the design, and came up with a better solution. I’m using 3 gears to open/close the gripper. One small gear is attached to the servo, 2 bigger gears are part of the arms of the gripper. It works pretty well, quite happy with the design.
To control the 3 stepper motors I’m using an Arduino with a CNC shield (less then 5$ @ Electrodragon) . The shield has 3 Allegro a4988 stepper drivers and is plugged in to an Arduino duemilanove. The gripper servo is powered of a small UBEC as the regulator on the Arduino didn’t like powering it. I also hot glued 3 mini limit switches to the arm.
I am now trying to convert the IK code for the original mearm that uses servos to work with my stepper motors. I’m using a timer2 interrupt to step the motors. I’ve written some basic simple code for the stepper motors so I can control them like a servo. When the Arduino starts up it will run the stepper motors against the 3 mini limit switches to “home” the motors like a 3D printer, that way I have accurate control of the motors.
My ‘stepper arm’ in action:
The arm will never lift/move big loads as the little stepper motors don’t have that much torque. I have played with the current settings on the Allegro drivers. Turning up the current gives the motors a lot more torque but they become so hot that I’m worried that they will melt the PLA.
It’s been a lot of fun so far designing and printing my little robot arm. I’m sharing all the Freecad / stl files of the 3D printed parts. So if you want to print your own or hack it to improve please do so. You can find more information on this page: Stepper robot arm
Very cool project. How does the steppers compare to the servo performance wise (speed/torque/noise/software overhead/etc)?
The little stepper motors don’t have much torque, I do think they have a little more torque then a SG90 servo. The faster you move the motors the less torque you get out of them. They make very little noise.
I designed and built the arm more as an exercise in 3D design and programming. Programming stepper motors is a bit harder then servos. You also need more electronics (stepper drivers) to use them.
I’ve built 2 hexapods using hobby servos so I wanted to try something different. And since the 28BYJ-48 motors are so cheap I wanted to try and make something fun out of them.
nice project
may i know how u connect the gears and servo in the gripper
if possible please post the image of it
The gear is screwed to the servo horn with a small self tapping screw (the ones that come with a servo). http://www.bajdi.com/gripper-parts/
[…] usual go-to when building a simple robot arm is the ever-pervasive hobby servo. However, these devices are not precise, and are typically jerky […]
Can i replace steppers with the servis,and is the code that you have made fully working with the steppers
Servos
Great job, thank you for sharing it! I printed this on a Cube 3rd gen and it came out very nicely, I only needed to drill out a few holes (1/8″ bit), mainly on the flat plates which were a smidge too tight for M3 screws. My only suggestion so far is to consider adding a support bearing (or just a ring) on the baseplate so the box and arm aren’t supported only by the bottom coupling. (https://www.thingiverse.com/thing:53451)
I’m waiting for more electronics to arrive and will be happy to help with the software development when it’s fully operational (I’m a software engineer).
Thank you again!
Hello .. It is a great project.. please make its s IK to control the robot using x y coordinates… It is very important… did you developed that firmware?
You can buy these steppers as 12V variants so they take less current for the same load maybe they have more torque if the voltage doesn’t sagg as much
could you share the dimentions , lenghts of arms. i trying to write own custom firmware for it.