MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now

Hey! This thing is still a Work in Progress. Files, instructions, and other stuff might change!

MPSCARA: Mostly Printed SCARA Robot

by Williaty Sep 22, 2017
Download All Files

Thing Apps Enabled

Please Login to Comment

Its nice job...
can I get the original file for this project? not the STL file

I wanted to reach out to see if you could throw me a bone on your MPSCARA. Ive got it assembled and ive been working to get it fully running as a 3D Printer.

I have it assembled but when I print something I'm getting surfboards instead of cubes. I figure the steps per mm are off on this but cant seem to rein it in either. So was hoping you might be able to throw me a bone on adjusting it.

I ultimately would prefer to run Marlin 2.0 but sounds like that might not work with your arm based on the things ive read in the changelogs and open tickets. Someone is trying to get a marlin 2.0 running with your arm and I offered to help them as well.

I'm sure you're busy but if you have some time I'd love to go over this more as I think this is an outstanding project for everyone.

Just wanted to reach out on this again to see if you could possibly point me in the right direction on getting the arm tuned in. Thanks for your time.

I'm really sorry for the delay, it's been a very busy few weeks and this kept falling off my priority list on accident! As far as print quality goes, what have you tried for the steps per mm? There's also a chance that it may be caused by hardware problems. When you're watching the prints, does it seem like the motor's spinning properly for the Z axis? I'd recommend putting a tape flag on the end of the threaded rod and counting the rotations when you tell it to increase the Z by 10 mm, then measure the distance the arm moved. From that we could probably back-calculate the proper step size.
If it's a hardware problem, keep an eye on how the main platform moves vertically. Sometimes the bearings can get a little sticky, making the 'shoulder' get jammed.
For the update to Marlin 2.0, the only actual changes I made for marlin 1 was the strange step-sizes for the x and y axes and the homing information. I don't know much about Marlin 2, but the edits I made should be pretty easily transferred. The actual transformation from cartesian coordinates to 'polar' coordinates is handled by the python script, so Marlin doesn't have to worry about that. I think they've since added some options to Marlin that allow for it to interpret standard gcode for SCARA-style printers, but I wasn't able to get it to work when I was working on this project.
I hope this helps!

Silly thingivere flagged the last comment. Ok lets try the readers digest version.

Z is working fine, the X/Y is a where a square is looking like a rectangle or as I said surfboard. Clearly X/Y seems off.

  1. What is the build are for cura. is that like 100x100 or what size should cura use to slice the model?
  2. given #define DEFAULT_AXIS_STEPS_PER_UNIT { 28.6738351, 28.6738351, 400, 100 } //MPSCARA steps/unit for Purple drivers i'm not able to adjust it effectively. How exactly do I adjust the X/Y on here. I figure X does not equal X and Y doesnt equal Y but how do I adjust that values to print a square vs. a rectangle? Thats where I think the break down is and I cant seem to tune that number using the standard formulas to adjust steps per mm. So how do I get that tuned in?

Ah, okay, I get it now. I interpreted 'surfboard' as 'flat', my bad. When I was testing it, my Z axis was always being a pain, glad to see that it's behaving better for you!

1) The size of the build area is going to be dependent upon your exact machine, but assuming that the prints came out pretty close and the inner radius limit stays at the recommended 90 mm, you can safely fit a square build surface of 170mmx170mm, with the origin at the bottom left corner. I just uploaded a diagram into the files that can help visualize the layout. Technically, there is a huge usable area, but the rest of it does get trickier to access with standard slicers.
2) The steps per unit are motor steps per degree of rotation about each one of the rotation points, specified in the diagram. If the curvature is pretty shallow, chances are that the lengths of the arms might be a little off in the settings. How bad of rectangles are you getting, could you attach a picture?

Diagram, super helpful. Now this makes more sense. Let me power this thing up and get a sufboard.. I mean cube printed for you today and see if we cant tune this in! :)

Glad you like the diagram, I've been meaning to make that for years... Man that feels weird to say, doesn't feel like I did this project that long ago... Best of luck with the 'cube', keep us posted!

Ok Tyler I think I found a lot of problems but still have a few questions.

It seems like its being bound up hitting the stop piece on the arm itself. If I had to guess I would say its not long enough compared to the stop. But my end stops did not fit quite as well as yours so that could be the issue. I've included a number of photos here of my build and the print after a few layers.

Once you keyed me into realizing the plastic there maybe binding up that really helped understand where i think I'm having some problems. The PLA rubbing on PLA seems to stutter and I did get one missed step. It still seems like it is way off from printing a 20mm square cube so maybe you can point me in the right direction and offer some ideas to get it to move smoother. I tried some PTFE lubricant but is still seems to grab the PLA vs moving freely. I also did some filing so when I manually move it the arm seems free but when the steppers are driving it there seems to be a bit of friction still.

So here are the photos please let me know what you think.

What does it look like when it homes? The important part is that the arm is straight after hitting the endstops, so you may need to adjust the angle there. Could you attach the input gcode and output gcode for the file you're trying to print? Also, what happens if you try to print this?

Sorry for the late reply Tyler... Holidays of course. Happy new year I hope yours were good. Ok, I have this working better I think its just a matter of adjustments now. I had to fix some issues in making it smooth but now its moving around find. The one issue I still have is that it doesnt seem to print properly. Are you using Cura? If so would you share your configuration values in it. You mentioned a 170x170 bed which was helpful. Any other parameters or configs would be great.

I have had the most luck moving to Marlin 2.0 since someone added MPSCARA configuration in there. I'm getting a print however still not quite a square. So at this point it seems to be just tuning it to print right. However how do I tune this?

My Best guess would be like a 3D Printer. Adjust Steps per mm to get the right shape. That however doesnt work at all. I still get some curve to the print. and seems out of shape. I've attached my latest print photo. That is the one of your Box you sent in your last post.

Thank you for your time helping me through this. FWIW I'm documenting this for a YouTube video so others can learn from this building their own. As you can see we're getting closer but still not quite there.

Happy New Year to you as well! I've been using Slic3r for this, but I don't have my settings polished up and ready for publication just yet.

Could you link me to the Marlin 2.0 configuration you're using? I'm thinking that it might be trying to convert to SCARA coordinates twice, but I'm not quite sure, I'd need to see the config.

Sure can, do you want to email me at rwmech at gmail.com and I can send it to you. I have made a few tweaks to get it running with the SKR v1.3 board and TMC2208's so might make sense to send you the specific values. Otherwise let me know and i'll throw it up in pastebin or something instead.

Thanks for writing back Tyler. Z is no problem I can get that tuned in and its doing well. Where the issue is really is with the X/Y coordinates. I'm using a standard reprap in cura and setting it to a 100x100 bed size. So first question is what bed size/cura setting should be used for the arm. I looked in the python file but didn't find checking for a min/max so that would be super helpful to start.

You had a few settings in marlin based on color of the stepper drivers and ive tried both with no luck.
#define DEFAULT_AXIS_STEPS_PER_UNIT { 28.6738351, 28.6738351, 400, 100 } //MPSCARA steps/unit for Purple drivers

Is what I'm currently using. Z is working perfectly as I've got a 8mm lead screw on there.

The X/Y is what is printing surfboards. I say that because i'm using a square calibration cube and getting something that looks like a slightly curved rectangle. So I figure the steps per mm are off.

The question I have related to that is how do I adjust it for the polar coordinate system or how did you calculate/modify them? I did try the usual formula where you find the percentage of variance and then apply that to the base number but it seemed to make little different. For example if I have a 20mm cube and it printed 10mm and my steps per mm were 100, I would then make them 150. Along with this the other question is how does my X/Y stepper values relate to this and how do I tune it?

I think this is all fixable I just don't understand how to turn the X/Y into polar or make adjustments based on it. That is where i'm struggling. If I had a frame of reference for the changes I was making or knew how to make the changes I think this is just a matter of making the adjustemnts.

Thanks again for your time. I'm also going to try Marlin 2.0 again now that the have an MPSCARA setting in it but Id like to be able to make this work with your existing code as well as a reference application.

I am having a education project can you sent me your file desgin. My email: huhemlaanhdo@gmail.com. Thank you very much

What is the project?

I want to design a backup link for the robot scara

I am highly curious, how it is in the role of actual 3D printer? Quality/speed wise?
I am thinking to build small backup printer, and scara seems to be interesting option to try.

We've used it mostly as a pen plotter, I've been able to get some prints to work, but the Z axis can get a little unreliable at times.

I just saw browsing this SCARA arm: https://www.jjrobots.com/scara-robotic-arm-by-jjrobots/ Quite polished I think. Looks like jjRobots, based on your version...improved many things and achieved something (https://www.youtube.com/watch?v=yoo6JnAeWDY) Actually, they are mentioning you, Williaty!

The Robot Arm has some impressive speed and repeatability and the control code (IMPORTANT!) and control APP are open source. I have been trying to create the needed electronics to control the robot but they have a solution for that too!: https://www.jjrobots.com/product/devia-robotics-control-board-v1-0/

I just wanted to mention this here as It was quite easy and fun to create following the assembly guide: https://www.jjrobots.com/scara-robotic-arm-assembly-guide/

I've been in communication with them, I'm really impressed with their work and very excited to have been involved in such an awesome project!


I finally built the MPSCARA -- what a fun tool.

I am still trying to figure out the electronics though (using a Duet board that I scavenged from a 3d printer), so far I can draw pretty curves (-:

Hi, I have built a scara 3d printer somewhat similar to yours. I have attached a pdf drawing showing the top view of the printer
with critical dimensions. For a while I have been testing various marlin firmwares from various users -Invent2main, vitaminrad, etc etc
seems that everyone gives a different result. The biggest problem is when I home the arms thats ok, it is after when it tries to go to 0,0
position - it never does, it ends up somewhere else. Finally I have used your cartesian to scara converter for the code, I run that through my printer, seems to work, just that the printing is outside of my heating bed area. it would be ok if I didn't have a heat bed. but my build is such that the heat bed raises up and down and the arms stay on one level and just rotate. Is there any way I can get the printing to begin inside the boundaries of my heatbed ?? Thanks

what is problem?

%Run Husky.txt
Traceback (most recent call last):
File "C:\Users\taner\Desktop\MPSCARA_Mostly_Printed_SCARA_Robot\files\V1.2_Software\Test Files\Husky.txt", line 1
; generated by Slic3r 1.2.9 on 2017-08-28 at 17:46:06
SyntaxError: invalid syntax
%Run g_code_file_2.txt
Traceback (most recent call last):
File "C:\Users\taner\Desktop\MPSCARA_Mostly_Printed_SCARA_Robot\files\V1.2_Software\Test Files\g_code_file_2.txt", line 2
G0 F5400 X67.469 Y94.409 Z0.300
SyntaxError: invalid syntax
%Run g_code_file_2.txt
Traceback (most recent call last):
File "C:\Users\taner\Desktop\MPSCARA_Mostly_Printed_SCARA_Robot\files\V1.2_Software\Test Files\g_code_file_2.txt", line 2
G1 F2400 X96.969 Y94.409 E1.83970
SyntaxError: invalid syntax
%Run g_code_file_2.txt
Traceback (most recent call last):
File "C:\Users\taner\Desktop\MPSCARA_Mostly_Printed_SCARA_Robot\files\V1.2_Software\Test Files\g_code_file_2.txt", line 2
G1 F2400 X96.969 Y94.409 E1.83970
SyntaxError: invalid syntax
%Run g_code_file_2.txt
Traceback (most recent call last):
File "C:\Users\taner\Desktop\MPSCARA_Mostly_Printed_SCARA_Robot\files\V1.2_Software\Test Files\g_code_file_2.txt", line 1
G1 F2400 X96.969 Y94.409 E1.83970
SyntaxError: invalid syntax
%Run g_code_file_2.txt
Traceback (most recent call last):
File "C:\Users\taner\Desktop\MPSCARA_Mostly_Printed_SCARA_Robot\files\V1.2_Software\Test Files\g_code_file_2.txt", line 1
Generated with Cura_SteamEngine 15.01
SyntaxError: invalid syntax
%Run Husky.txt
Traceback (most recent call last):
File "C:\Users\taner\Desktop\MPSCARA_Mostly_Printed_SCARA_Robot\files\V1.2_Software\Test Files\Husky.txt", line 3
; external perimeters extrusion width = 1.50mm
SyntaxError: invalid syntax
%Run Husky.txt
Traceback (most recent call last):
File "C:\Users\taner\Desktop\MPSCARA_Mostly_Printed_SCARA_Robot\files\V1.2_Software\Test Files\Husky.txt", line 4
G28 ; home all axes
SyntaxError: invalid syntax
%Run Husky.txt
Traceback (most recent call last):
File "C:\Users\taner\Desktop\MPSCARA_Mostly_Printed_SCARA_Robot\files\V1.2_Software\Test Files\Husky.txt", line 2
G1 Z1.500 F1200.000
SyntaxError: invalid syntax
%Run Husky.txt
Traceback (most recent call last):
File "C:\Users\taner\Desktop\MPSCARA_Mostly_Printed_SCARA_Robot\files\V1.2_Software\Test Files\Husky.txt", line 2
G1 X54.705 Y56.216 E0.68368 F600.000
SyntaxError: invalid syntax

can you help me
I'm having trouble with Thonny 's g code translator

Привет. Как решить проблему? Печатает вместо круга- эллипс, вместо квадрата- ромб.

Hello, I am trying to slice the STL files but with my version of slic3r the fore arm gear is not closed correctly when I turn the arm 180 degrees to reduce the amount of support material. You can see this in the attached screenshot (the slightly elevated hub top is rendered, but the infill of the gear isn't). In the 3d preview the structure looks solid as it is supposed (see the other screenshot). Is it possible to update the model so this is sliced correctly in slic3r?

I managed to fix the STL files with netfabb.

Hello Williaty, could you post your current configuration.h and configuration_adv.h? In the example Scara config I do not fit: Home X = -1 when endstop x = 1 (max). Then I also do not know if the engine for L1 goes in the direction Xmax and the motor for L2 to Ymax. Thanks for the help.

I built a custom SCARA, trying to get it running with your firmware but I got this error when using the translator and it couldn't find the examples or a 20mm test cube I threw in beside the two .txt files.

Traceback (most recent call last):
File "C:\Users\calld_000\Downloads\V1.2_Software\Gcode_Translator.py", line 128, in
old_g = open(gn+".g","r")
FileNotFoundError: [Errno 2] No such file or directory: 'Husky.g'

also, not sure how to edit how the arm home positions, my scara homes in a closed arm position rather than open, I appreciate any help!

If you unpack V1.2_Software.zip without modification and Husky.g is in the "Test files" directory, it should not be a problem.

where ise test files?

Can you publish the basic position of the print area, arms and tower, including the direction of x and y?

Thank you for the answer. So far I have tried to convert a few drawings in standard exchangeable formats to my old Solid Edge 14. Unfortunately, it only appears as a network and can not be edited. It will get faster when you draw them according to the measured dimensions of the original STL. I found a great program for this purpose. I recommend https://www.3d-tool.com/.

I wanted to print this version, but I'm confused about which files to choose. In the downloaded zip in the V1.2 directory, the files are the same as those in the original directory. Would the original drawings be sent in some exchangeable format (Parasolid, STEP, IGS, etc.)? Every printer prints differently and I would like to adjust some dimensions. Thanks

I'm not very familiar with how STEP files work, but I was able to get this exported. Give me a heads-up if you need something else, I might be able to get them all exported as separate part files.
Also, if you're printing for the first time just grab all the .zip files and the 2 PDFs. The other STLs are for people that just want individual pieces of the full thing. Saves time if they only wanted to get some of the updated files instead of having to download everything again.

I do not know what heads-up is, my English is very weak, sorry.

Oops, sorry! 'Heads-up' means about the same as 'let me know'.

I have corrected the bug and the ok
thank you

Whoops, sorry about that! I'm glad to hear that you were able to correct it, I thought that the most recent translator file should've gotten around the bug, but apparently it still had some mistakes...

Please help me when I run Gcode_Translator.py
x_dot = (x2-x1)/dist*F # Linear velocity in the direction
ZeroDivisionError : float division by zero

I see there is only one make here. I can tell you a lot of these were made last quarter at the University of Washington as it was a requirement for ME480 (Additive Manufacturing, Mechanical Engineering elective class). The Proff and TA's did do some work to get these dialed in. Mine came out nicely. Thanks from all the ME students at UW!

the class was actually called: "ME480 Introduction to Computer-Aided Technology", but was a step beyond our actual intro to CAD. 400 level class focused on Additive Man and CAD uses beyond the usual stuff. we just called it Additive Man...

Happy to hear that they worked! This was actually designed for that class, I'm one of Prof. Ganter's grad students.

Hello, looking at your project, I thought maybe, could have interested in what I'm dealing with, it's a lamp printer.
maybe you can like it

hi! faced with the problem Code Translator it all layers into a single layer prints(tried to draw with a pen), and draws incorrect

Hi :) I just built mine but i encountered a problem with the GCode-Translator Script.

The Error message is:
File ".\Gcode_Translator.py", line 158, in <module>
    z_new = float(coord[1:].strip())
ValueError: could not convert string to float:

It fails in the first lines of the gcode, where it should read the acceleration.
Further filewriting is aborted, so the gcode just breaks :/

Sample GCode:
M117 Starting...
M107          ;Laser/Fan OFF
G21           ;Metric Values
G17           ;Plane XY
G90           ;Absolute Positioning
G92 X0 Y0 Z0  ;Set XYZ Positions
G0 F2500
G0 Z2 F300    ;Position Z

M117 Projektion2
G0 X-72.648 Y20.979 F2500
G0 Z2 F300
G0 Z0
G1 X-72.954 Y32.716 F1500
; ...
Complete Sample Translated GCode:
M117 Starting...
M107          ;Laser/Fan OFF
G21           ;Metric Values
G17           ;Plane XY
G90           ;Absolute Positioning
G92 X0 Y0 Z0  ;Set XYZ Positions
G0 F2500.000000

Maybe you can take a look at it :) Thanks in advance.

The could not convert string to float Error was gone after i removed the comments in the gcode lines. (Everything after a semicolon, including the special character itself)

Next Error: Translator Script expects X AND Y Coordinates in each GCode Line
File ".\Gcode_Translator.py", line 184, in <module>
    movement = math.sqrt((x_new-x_mid)**2+(y_new-y_mid)**2)
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

This occurs when your GCode's moves look like so:

G1 X20.197
G1 X20.299 Y52.243
G1 X20.375 Y52.241
G1 Y44.083

--> So the script doesn't know the new value for x or y, because none is given and this case doesn't seem handled.
I could fix that by changing in the script, line 180++:

From this code
                x_mid = x_old
                y_mid = y_old
                e_mid = e_old
To this code
                if x_new == None:
                    x_new = x_old
                if y_new == None:
                    y_new = y_old
                x_mid = x_old
                y_mid = y_old
                e_mid = e_old

Thank you for letting me know! I didn't think about those kinds of problems cropping up, was using mostly handwritten g-code and Slicer g-code for testing, had forgotten that some other slicers abbreviate when there are horizontal and vertical lines. I'll see what I can do to have it copy over comments properly. Great edit recommendations, by the way!

Hi I am having trouble with the script conversion. I use my print program(Repetier-Host) to slice with and then save the sliced file as gcode. It does not save as .g . When I run the script with default setting.txt and modifying targets.txt with the filename I get a file t"attempts to go outside of build area"

Hello Roko11,
Sorry to hear about that, the conversion software still needs some work to be more robust. Currently it's set up as a strict coordinate transformation and doesn't move things around to get the best print location. I'd try moving it around in the build volume so it's close to the origin and in the positive section of the Y axis. If that doesn't work, I'd try shrinking down the model a bit and repeating. The software doesn't know how to deal with things in the negative Y axis just yet, need to learn more about programming to incorporate that.

Thanx for the reply. I looked at the comments below and the solutions did not work out. Also I am Having trouble with the printing . I can home to the stops no problem,BUT I don't understand where 0,0 is from there. Are you looking at the bed from the tower closest to you? which puts 0,0 at the right of the tower .(endstops) That is completely the opposite of what I am used to with the other builds I have made.(Delta, CoreXY, Prusa derivative) The 0,0 was either center of bed (Delta) of left,front closest to me. In my minds eye the tower would be farthest away from me with 0,0 to my left-front. I tried a dry run with the 25mm test file and it wants to start in a place that does not make sense to me as far as coordinates displayed on screen and actual location. I also switched the X,Y motor and endstop connections which did not change anything. A labeled diagram as to what motor is what(X,Y) and a coordinate map layout would be good.I am not new to 3d printers but I am new to the SCARA iteration. Your input would be appreciated. Thanx.

Oh yeah, that's fair. I have the endstops at their current position because that was the simplest to implement hardware-wise, and it required minimal angle-measurements to ensure that it was accurate initially. The machine interprets that as the (0,0) point, but the conversion software's (0,0) is placed differently. It should be the offset distance away from the front rail, as specified in the 'settings.txt' file, and 90 degrees counter-clockwise from the endstop positions. The main issue that you're running into is that the machine's coordinates are completely separate from the standard Cartesian (x,y) coordinates, and without tampering with Marlin (something I'm not good enough with arduinos to do just yet), I don't have an easy way to make the values displayed match up to the physical Cartesian coordinates. The ones on the readout should be the angles from the endstop to the upper arm as x and the endstop to the lower arm as y. I'll work on putting together a diagram to show where all the values come from.

Thanx for the input. I am trying to "self-educate" myself about SCARA geometry and appreciate the clarification.
BTW, I had trouble with the slide bearings *sticktion", so I subbed them with LM8UU bearings (stacked) on each rod and the mechanism slides much smoother.The 6002 bearings fit nicely. The drive belts I made by counting out the teeth and super-gluing a short piece of belt across the gap while holding it on the large gear to get the spacing right. That works fine while I wait for the endless belts to arrive There is no slack on the long belt.
I will definitely post "I made one" pics when I get farther along. I had a hot end mounted to set Z height and then removed it so I could mount a marker to draw with while I figure out the coordinates issue. I used my CoreXY (DIY FB2020+) to print the parts so I have a printer available to make parts as needed.

Thanks for the reply. I sliced the same 20mm stl file in 4 different locations on the bed. Here is an example of the error Thronny generated. The code stops after the first file.:

Traceback (most recent call last):
File "C:\Users\roko11\Documents\Downloads\MPSCARA_Mostly_Printed_SCARA_Robot_2487048\files\V1.1_Software\Gcode_Translator.py", line 91, in find_angles
thetaA = thetaC + h * math.acos((c2 + a2 - b*2)/(2c*a))
ValueError: math domain error

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\roko11\Documents\Downloads\MPSCARA_Mostly_Printed_SCARA_Robot_2487048\files\V1.1_Software\Gcode_Translator.py", line 172, in
[thetaA,thetaB] = find_angles(x_new,y_new,settings,gn)
File "C:\Users\roko11\Documents\Downloads\MPSCARA_Mostly_Printed_SCARA_Robot_2487048\files\V1.1_Software\Gcode_Translator.py", line 95, in find_angles

  • " please resize or rearrange and try again.")
    SystemExit: File '20mm_3.g' attempts to go outside of build area, please resize or rearrange and try again.

I tried removing the names one at a time from the targets.txt file with the same results on the first file in the list then the script stops.
I did try the example file you have listed in the earlier comments and it did try to run. I don't have my extruder wired yet so I did a "dry" run.
It did go although the machine did seem jerky to me.
Also I don't seem to be able to make the rod sleeves run smoothly enough so I substituted with a paIr of LM8UU bearings stacked for each rod. Everything fit well and the Z-axis is much smoother with no sticking.. I just used netfabb and cut the ear off of the e-stop mount and used that as a clamp for the other side. The side with the arm fit great, there was an offset so both bearings (LM8UU) fit inside the 6002 at their junction. The only other mod I will make is to the base to make it sturdier and support the rods stiffer vertically.

I got most of the parts printed out, but I noticed that my z-axis stepper won't fit in the baseplate because of the connector on the stepper.

Well that's certainly annoying.
Here's an edited version of the baseplate file that should have more room for the cable, hopefully it'll fix the issue with the stepper motor cable not quite fitting into the slot. As an immediate solution, I'd try filing down the plastic some to give it a bit more space. I'll incorporate the edit into the next version. Thank you for bringing it to my attention!

Thanks for the reply! I'll give your edited baseplate a try if grinding down the plastic don't work.

Just a quick comment: Thank you for taking the time not for just publishing the robot BUT ANSWERING questions and adding comments all the time. Someone deserves here a very happy 2018!

Thank you very much for the kind words! I'm doing my best to help out when I can, definitely a little spotty on response time sometimes, but I want everyone that tries to make one of these to end up with something they're happy with!
Here's to a 2018 filled with 3d printing!
Also, I love what you and your team is doing with the modifications, can't wait to see how it all wraps up, definitely keep me updated! It's great getting to see these ideas grow and evolve!

I had the same error and I found a solution:
Open andEdit the gcode_ translatior.py, just in the error put the complet name that the file that you want convert.
Old_g = open(" your file.g","r").
Try this.

I do not quite understand what you mean :(
if possible, can you show me by uploading pictures.?

Click left Buttom the gcode_translator.py and edit with text editor, look for the líne with old_g = open (gn+".g","r") and change (gn+".g") for the mame if tour file, for intance :
old_g=open ("nameofyourfile.g", "r")
That isvthe way that I get work the translator.

Hello Williaty

Everything is over but I get an error like this why
can you help me
you upload a video about this software youtube??

Oh, I see what the problem is, I used square brackets in the 'targets.txt' file to signify that what was in the brackets (including the brackets) should be removed. In actuality, since your file is just labeled CUP.g, you would only include CUP.g in your targets file instead of [CUP].g
I hope that clears it up. Sorry about the wait, been busy preparing for the holidays.

i put in arduino your firware,
my arm move, but only do the Z homming.
i not good with arduino, con you say me something that help me

i just do one.

stability is not good. I have made a piece for the top of the bars. I want to reinforce the bottom part. You can send me the original file to edit it.
i working for the Z axis. i change the original sentences

Can't promise that I'll be able to help, but I can give it a shot. Are you using a fresh version of Marlin and trying to copy over all the settings I've made in the version I've uploaded? I'd double-check that all the motors work first, could be faulty wiring. That one drove me up the wall for a few days when I was first putting this together. Try powering off and setting each motor to run from the Z axis port, swapping through them to make sure they all work when you tell Z to move. If that's not causing the issue, there might be something else in the code, I'd need to see it to give you a guess.

my endstop are in negative axi Z and in positiv axis ybut and x.
with the program Cura, that i use to my 3d printer, i move all axis in manual mode. when i push Z axis do a homing, go down and when toch endstop, put 0 in position axi Z.
When i push the other axis, don't move and put 0 in the axis X or Y position.

to move the axis, wich program you use?

good lucky in your exams. I can wait until you finish.

Sorry about the wait, things have been pretty hectic recently, done with all the tests now, though! Hm, well that is bizarre... Did things run properly when you used the original firmware and the original wiring diagram instead of the altered software/wiring methods? Or are you using your altered firmware because the original firmware wasn't working for you?
For direct axis movement, I use Pronterface, which comes in the printrun zip downloadable here: http://www.pronterface.com/#download

i begin again and i use your original soft and hardware.
in ramp 1.4 axi X is the uper motor, axi Y the other motor that move arms..
endstop conector.
1.- free
2.- concted, 3 cables end stop as your endstop.
i conect the nearest endstop to the motors
3.- free
4.-the far endstop of the arm
5.- Z end stop
6.- free
Using pronterface.
i push homing boton only do Z axis homming, the other axis not move
in lateral console "SCARA Theta:83.21 Psi+Theta:218.29"
movin axis with pronterface
Z+ go up, but not let me go down

Reporting endstop status
x_max: open
y_max: open
z_min: open

this is the status of end stop, when no one are activated
when i push it manualy
Reporting endstop status

thaks by your help

I would try swapping your X and Y endstops to the minimum configurations, pretty much leave the Z endstop in place and make sure that the other two are evenly spaced and hopefully that'll help out somewhat. Were you able to directly move the X and Y (Lower arm and forearm respectively) motors using pronterface?

ok. thamks. finaly we, your help and me made the homming of all axis.

Cool! Glad to hear that we got the axis all homing properly, a very important first step!

i use the marlin as you upload it first, them i change the sentence i say.
My motors X and Y, move, but don,t do the homming.
I use 3 cables endstop.
with which program you do your test at the begining of your proyect.
i send you my modifications.
can you send me a base file to miguelmart@gmail.com

Sorry about the wait, it's been a busy couple of days, I'm in Finals week at the moment. Did it run before you made those changes to the firmware? The firmware I uploaded here in the Marlin .zip folder should be operational. Could you also send an image of your circuit board? If the X and Y don't move when plugged into their ports on the board, then something may be wired incorrectly. When you say it doesn't home, does it not move at all? Sounds to me like there might be an issue with your stepper drivers, I'd double-check that those are plugged into their ports properly and the voltages are at the correct range.

Great job! I really love the design. Printing and ...."modifying" it a little :-D

Thank you for the kind words! Please post the modifications when you're done, I can provide Fusion or Inventor files if those would be easier for your modifications. I'm looking forward to seeing how it works out!

No. Thank you for sharing this SCARA robot. A very smart design :-)
Regarding the Inventor files. They will be very helpful. Is there a files repository we can access to? Or... could you send us the files to info@jjrobots.com?

We will try to add a Google blockly feature to control it and "control the robot from your smartphone" via WIFI

Thanks again!

Hi! Does it work?? No one has uploaded a "Made" one :) How is flex and backlash??

Hey! It does work for the most part! The Z axis can be a little finicky and we haven't figured out all the best slicing settings just yet, but most of that can be worked out through testing with the filament and extruder that you end up using.

Hello, great project! Any chance you can send me the original fusion 360 files. I primarily use Inventor, and i can convert the STL's, but there is some major loss of data compared to an IAM. / IPT. Also have you done any FEA on this? The individual joints could definitely benefit from some roller bearings at minimum and possibly tapered roller bearings if you can spare the weight. I understand the concept of using whats available and cheap, so i get why you wouldn't on the first version. have a few suggestions on the software side as well, mainly concepts for how to accurately go to polar coordinates without using floating point. Floating point always seems to be the killer on most micro-controllers. But not to ramble on, if you could send me those files id like to try to do a few changes in order to possibly improve a few things.Awesome project so far, Thanks!

Hello and thank you for the kind words! I think I can convert the parts to Inventor components and send them over, but I'll see what can be done. In our case, cost was the primary concern, we're planning on making about a dozen in a 3D printing class in the spring, hence the lack of roller bearings. We haven't done any FEA on this project, could be useful to find potential areas where additional material would be helpful. We've definitely got some changes in mind for when V2 rolls around, haven't started yet, but I should be getting more time and a budget to work on that in the near future.
Any upgrades you make to either the software or the parts themselves would be cool to see, please do share whatever you come up with!

I have a question or two about aspects of the design that i do not understand. The slit on the fore arm, what is its purpose? As well, why mount the limit switches where you did? My initial approach would to mount them directly on the Z carriage for the upper arm and then Zero the fore arm in the max position. The arm would essentially be folding up on one side.

The slit is there to assist in getting an accurate measurement of the length of the forearm, as the inner edge of the slit is in line with the center of the axis of rotation of the forearm. The limit switches were mounted that way to ease zeroing, as trying to get an exact angle measurement was proving difficult if one switch was mounted in the elbow, much easier to ensure that the arm is straight.
Hope that helps explain the design process and reasoning behind our decisions!

Hey, Just looking at the firmware and wondering if you could explain the steps per degree value?

The plastic gear is 62T, and if using a 20T drive gear, 400step motors and 16x microstepping, I get:
4001662/20 = 55.11 steps per degree, which doesn't match the 57.3476702 value you have.

Would it be possible if you could share how you got to 57 steps/deg ?

Okay, so, funny story... Your math is correct, and it's definitely the right way to go about calculating the steps per degree, and your number should be the one that's used in the firmware.
But, when I was testing it the first time, I had done a math error in some of my calculations. I did the gear ratio backwards, and ended up multiplying the result by ten to get a number that was reasonably correct. It worked perfectly for all my testing, and ended up in the final product as seen in the code. However, when I did a check-up on all the numbers to comment everything for the V1 release, I found the error and fixed it. Upon doing some testing with the new number, it was just slightly off, so I changed it back to the one that I knew worked and left it there.
Definitely give your values a try, but if they lead to discontinuities, try the 57 degrees again. Sorry I can't give you a better answer, but I hope that explains it!

Thanks for the quick reply! I'll try and print one out soon for testing, and check the values. Don't worry, I know a little about how reality tends to get in the way of perfect-CAD-land math!
Out of interest have you tried the SCARA branch of marlin?

I miss magic physics land, where nothing has friction and we can treat everything like rigid bodies... I wish you the best of luck with making your own, I think it makes for a fun project, but that might just be a defensive mechanism since I've had to work on it for so long...
We were experimenting with the SCARA Marlin options, but it was proving to be a pain to get it to work right/at all, so we did our own little work-around instead of trying to learn the intricacies of how Marlin runs.

Anyone have this working with smoothie firmware?

The project will be a very successful one.
It will be a small recipe...
Z_Carriage_Bottom_V1 - Z_Carriage_Top_V1 file T8 Leadscrew Nuts Can you update the new design...

Thank you very much for your efforts...
I am waiting for your answer by Williaty.... :)

Thank you very much for the encouraging words, I'm hoping it's successful as well!
I'm not entirely sure what you're asking for, could you try rephrasing it, please? Are you having problems getting the nuts for the Z axis to fit in the nut-traps in the Z carriage pieces, or am I completely off?

Thank you for the answer...
There is a motor in the following picture for the Z axis

I wanted to update the Z-axis parts according to the T8 Lead Screw

I want to share with you the end result ...
I can then ask for support again on the software :)))

Ah, okay, I see what you mean. Didn't think of using those kinds of lead screws, just grabbed what we had available at the lab. If you wanted to do the modeling for that and send me the file when you're done, I'd be happy to include it in the thing (With your name attached to it, of course). Best of luck with assembly and testing!

Impressive! A couple questions:
1) Total filament usage/cost?
2) Any way to use a heatbed?
3) Any idea what the approximate cost would be to just buy everything from the links in BOM? Like you say $0.07 for a washer but when I have to buy 100 of them the prices add up fast, and I can only have uses for so many spare washers :)

I'm very interested in this (especially after watching the RepRap helios fizzle out...) Good luck!

Those are definitely good questions, I'll look into getting you some exact answers. With classes starting up, I don't have as much time as I'd like to devote to this project for now, so I can't promise fast turn around, sorry about that. Here's some preliminary estimates:
1) I'm pretty sure it uses less than one roll/1kg of filament, but I'll do a spreadsheet with filament lengths and print times just to make sure.
2) You can definitely set up a heated bed. You'll need to wire it onto the board and do some edits to the Marlin firmware, but it's certainly possible. There's a decent number of resources online that show wiring diagrams for those if needed, and I can post the Marlin edits if people are interested. As a warning, heated beds will require a higher-amperage power supply, so if you're planning on doing a heated bed make sure you get one of those instead of the one suggested on the BoM. If there's interest, I can put together a 'Heated Bed' zip file with all the recommended changes and instructions.
3) Not sure there, unfortunately. I'd definitely suggest checking out local hardware stores for most of the nuts/bolts/washers, I haven't found anywhere good to go for small quantities of those kinds of fasteners online just yet. Most of them are pretty standard, so you shouldn't have too much trouble getting hold of them.

Alright. Good answers, thanks!

Of course, right after I say I'm busy I wind up with free time...
1) It takes approximately 920 g of filament for the whole machine, so one roll ought to cover it. Spreadsheet attached if you're curious. This is using 15% infill, 0.4 mm nozzle, 3 perimeters, and 4 layers top/bottom, which is what we used for our prototype, your mileage may vary.
2) Covered!
3) If you just get everything through Amazon, buying all the machine screws in the 100 packs and whatnot,the total comes out to about $350, not including shipping, those hundred-packs do definitely add up... I'd definitely look at local stores to see if they sell screws à-la-carte, or try to find a 'misc' collection of M3 machine screws, updated spreadsheet with calculations added for your convenience.

My total cost was <$100. Local hardware stores was a great tip.

As a printer or just SCARA arm?

hey, you listet 3 thin steppers in you bill of materials, but the thin ones are SUPER expensive - like twice as mutch as the usual ones. How thick can I max go for the steppers - does it depend on the way I build it? To me It looks like I have to use one thin one, and can get away with usual ones for the top motor, the extruder and the z axis. Am I right? Anyway AWESOME project I'm gonna build one just as a fucn little secondary printer.


Hello! We used two of the thin motors to minimize weight of the Z carriage and to allow for a larger range of Z motion. You could certainly try with just one of the thin motors for the 'Y' axis (bottom one), but you might need to have an elevated build surface as compared to the mounting base of the printer arm to make sure that the print-head can reach the build area. I don't think there would be any weight issues caused by the larger motor, but it is a possibility.

I wish you the best of luck with making your printer, please share pictures and provide feedback when you're done!

hey! Thanks for the fast answer!

I think it should work with just one flat motor, makes the whole thing like 20 bucks cheaper. Elevating the build area shouldn't be a problem, just making the holder for the hotend longer should work.Ill have a try!

And of course, as soon as the parts are here, and I finished building, I'll post some pics!

Would a Mega board with Ramps v1.4 be compatible? More specifically, what (if anything) would need to be changed in the firmware?

Yes, a RAMPS v1.4 board ought to work just fine. Obviously, you'll need to wire it differently from the diagram I've got for the MKS board, but there shouldn't be any firmware issues.

So... It's built and now I'm just having a little trouble with the software (Errno:2 "No Such File or Directory). I thought I was following the directions correctly, but I'm really confused at this point. I created a .gcode file in Cura, btw. Can you show me an example of what the targets.txt file should read?

I'm guessing you're having trouble getting the python script to work, right? If you're having trouble with that, make sure that you've got the script saved in the same folder as the two text files and the gcode file you're trying to convert. Attached is the targets.txt file for converting testfile3.gcode and testfile2.g, so you can model your own targets file after that. The two file types (.gcode and .g) are interchangeable, but Python gets confused if you call it testfile3.g but it's saved as testfile3.gcode.
I'm sorry you're running into issues, I'll update my instructions so that people can better understand what I meant. Thank you for bringing up your issue and for your patience, I wish you the best of luck!

I tried it that way, but I'm still getting the same error. Maybe I'm misunderstanding, so screenshots would be awesome. On the other hand, I'm in Washington too, so maybe I could PM you my number and FaceTime or something. Sorry, I'm not trying to take all of your time and treat you like a personal IT guy. Just excited to see this machine work :). Extremely easy to build and simple design, btw. I modded the base and made a top for stability, just in case. Anyway, here's a picture of my build so far.

Edit to add: another idea... if you could upload some working gcode (whatever... Benchy, calibration cube... anything), I could start working on other aspects while I figure this out. Just an idea.

Hrm, I sent you a PM to organize a method of communication and trouble-shooting. Attached are some copies of the gcode files we used for testing. The Husky file is intended for pen-drawing, so it wouldn't really do that great with the extruder set in, but if you detach that and just stick a sharpie or other marker in the gripper, it should work fine. Of note, these are customized for my arm lengths, so I can't promise that they'll come out properly scaled on every other printer (Should definitely be pretty close, though, arm section lengths don't really vary that much printer-to-printer).
Other than that, I'm wishing you the best of luck! Definitely looks like you put it together properly! We were doing some testing with a top right before I had to set the project down for a while, so I can't guarantee that it'll work out as you'd prefer. We were running into issues where the top and bottom were slightly differently sized from different printers, and that lead to 'pinching' along the guide rails, so your motors might struggle a little from that, depending on how accurate and consistent your printer is.

how can you slice the 3d models for this machine design? is cura ok for it?

Oh, wait, did you mean slicing models for the machine to print them? Our team tested it with Slic3r, but Cura ought to do the trick so long as you make sure to run the gcode file you sliced in either software through the conversion script (labeled 'Software' in the zip file) to convert it from the standard x-y-z coordinates to the angular coordinates used by the printer, the instructions are available in the Software folder.
Sorry about any confusion caused and the ~2 week wait for the (potential) correction!

Cura should be okay, I used FlashPrint for our FlashForge printers, but whatever works best for your printer/came from the same company as your printer ought to do the trick.

Impresive! I am going to build one, it is recommended to wait to v2 or the system is going to be in the basics the same?
Another questions, how are your print speeds? And his print area?
Thanks for sharing

Thank you for the kind words! Classes are starting up, so we will be slowing down testing and development for a while. We are still working on nailing down the best settings for printing, and it is likely that additional changes will be implemented before it will be at the top of its game. In theory, it would have a total print area of approximately 500 square centimeters in an arc shape around the base. I can't imagine that there will be major changes to the most expensive components of this printer (The stepper motors, controller board, and hotend/extruder). We haven't started work on the V2 yet, but updates will be coming in as we go through more development and testing! If you do decide to give building one a shot, please keep us updated on how the construction and testing process goes, we'd love to get some outside perspectives!

so amazingly simple...

Thank you! We worked very hard to try to make it user-friendly and easy to duplicate.

nice job! Especially providing a solution with firmware and software.

Thank you! I can't take all the credit for that aspect of it, the idea of converting the gcode files instead of trying to figure out the SCARA functionality of Marlin was suggested by Professor Ganter. For the curious, the MPSCARA is programmed to take in angles as an input instead of Cartesian XY coordinates. It allows for the software running on the Arduino board to be standard off-the-shelf Marlin code, as the complex reverse kinematics calculations are performed on the desktop computer.

Thanks for the detailed, complete information. Looking forward to v2... :)

Keep an eye on it, I'm sure with all the people trying to make their own I'll get plenty of complain-er, 'suggestions' for how to improve it for the next version!

My only suggestion, so far anyway, is please don't change the design too much! I don't want to have to use another KG to upgrade it later ;) (although it does seem to be well worth a KG of filament). I'm definitely a fan of the design.