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