Zarplotter 4-motor drawing machine
2017-08-13 at 15:38 #13771
As part of building the spidercam/skycam system I started by doing a 4-motor zarplotter on a table. Once that’s working I’ll expand into the 3rd dimension. Fewer new things each version means less that can go wrong.View this post on Instagram
A post shared by Marginally Clever Robots (@imakerobots) on
Makelangelo-firmware and Makelangelo-software dev versions now support zarplotter.
I feel there is something wrong in my math because the machine makes test moves and does not return to the home position when it is done. The Makelangelo 5 works flawlessly, but the Zarplotter is mad. Fairly certain it’s a configuration mistake. My table is 60.8×60.2cm, my motor mounts are 4.5cm on each side, and my plotter is 6cm on each side. it should be machine width = (60.8-15) and machine height = (60.2-15), then treat the plotter as a point. As the machine drives around I can hear it skipping and see the belt going slack when it should never happen. What am I missing right in front of my face?2017-08-13 at 20:24 #13775
Your doing a great job buddy,
May i ask, Why are you using belts and not spools like the original zarplotter? would be easier and less messy i should think. and no slipping of the belt.
just a thought
Following closely2017-08-16 at 01:42 #13786
Hello Dan, Did you consider the position of the belts in each corner of the pen holder (6×6)? Angles could be slightly different if you consider the coordinates of each corner of the pen holder and meassure the lenght of each belt as the difference between the corner where it is attached and the motor position. I send you a picture by mail, I’m not able to send it from here..2017-08-17 at 07:04 #13794
I worked on a large-format vertical 4-motor machine, similar to Jurg Lehni’s Otto, and we had the same issues. Despite seeming like a simple trigonometric problem, we weren’t able to find an IK solution that maintained tension in all of the lines. We were also losing steps and weren’t really able to pinpoint where exactly that was happening (was it a bad stepper driver, bad IK code causing rounding errors, tension force overcoming the holding torque and skipping, etc.) to be able to diagnose and solve.
Our end solution was to jog the machine to several pre-measured, marked coordinate points (we strung a regular grid of strings across the canvas), extract the stepper motor absolute step positions, and run a regression to on the step position vs. canvas coordinates to produce a best fit formula for IK. Even then, we still had to rely quite a bit on springs at the attachment points to deal with tension loss/gain and would need to re-home and re-tension the lines after an hour or two of use. It was not a pretty or particularly satisfying solution, but it got the bot functional enough to have running at an event.
I’d love to see what changes you made to get the most recent improved results, if only to know where we were making the mistakes.2017-08-17 at 09:36 #13797
So… I know the motors are 45mm wide (from corner of table to point between idlers). I know the plotter is 60×60. I thought I could treat the pen holder as a point by saying machine width -= 15 and machine height -=15, then doing all my belt calculations from there.
@kukomiguel made the post above suggesting maybe I’d optimized wrong. Fair point! So I removed the optimizations. Suddenly everything was looking good. What?! Well, who cares, it goes now.
@jstoddart as for running 1h+, I haven’t yet. the beyonce drawing was ~20 minutes. I need a longer picture to see how it performs. Can I see a pic or vid of your machine? It sounds a lot like the one at the Interval of the Long Now (https://theinterval.org/)2017-08-17 at 09:37 #13798View this post on Instagram
A post shared by Marginally Clever Robots (@imakerobots) on2017-08-17 at 09:40 #13799
@fishingincairns spools were used on the original makelangelo and they suck. the diameter of the spool is constantly changing as it winds up, and it’s worse when the string loops over itself in unpredictable ways. Then there’s the question of which string to use? I have belts on hand and I know them well. When you have a hammer, everything looks like a nail.2017-08-17 at 09:42 #13800
Do any of you have a 3d printer? I’d like to see some ideas for an automatic pen changer that the zarplotter could use. Something like maybe https://www.youtube.com/watch?v=JuZ5lk2J5p42017-08-17 at 10:24 #13801
@Zarplotter is on our forums. Hello! FYI we won’t be selling this machine – instead I might sell the plans and let people figure the rest out themselves. I already plan to give full attribution for the idea to you and a link to your square page (for buying a zarplotter ready-made).2017-08-17 at 12:19 #13808
I feel good enough about the test drawings that I’ve now released the plans and the 3D printed files.2017-08-17 at 12:29 #13811
I strongly recommend you use an electric drill to slowly drive in the M3x35 screws or your arm is going to be tiiiiiiiired…. so tired.2017-08-18 at 10:33 #13818
I was emailed two questions:
Which motor goes to which RUMBA driver?
What gcode command moves the plotter?
G0 is a rapid linear move
G1 is a slow linear move
G0 Xnnn Ynnn Znnn Fnnn
Not all of the XYZF have to be used, but at least one must appear on the line.
X – the amount of east-west movement in mm. X+ is right.
Y – the amount of north-south movement in mm. Y+ is north.
Z – the amount of up/down movement in degrees. 90 is pen fully down. Typically we find 120 is more than enough to lift the pen.
F – the feed rate or speed of movement, in steps per minute. We have been running at a 12500 for XY and 600 for Z.
You can find more about gcode here: http://reprap.org/wiki/G-code2017-08-18 at 10:35 #13820
Quality of drawing is notably affected by belt tension. The better they are tensioned, the better it draws. if even one belt loses tension… well, don’t do that.2017-08-18 at 10:55 #13821
Hello Dan, thank you very much for your answers.
Can you share also the commands to move each of the steppers individually? It could be useful to add tensión to the belts.
Thanks.2017-08-18 at 21:05 #13825
Dan — here’s an image from our last deployment.
<p style=” color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;”>A post shared by Jim Stoddart (@jimstoddart) on <time style=” font-family:Arial,sans-serif; font-size:14px; line-height:17px;” datetime=”2016-09-28T00:14:29+00:00″>Sep 27, 2016 at 5:14pm PDT</time></p></div>
This one had a 2m x 2m drawing area, and we also did an earlier version on a canvas twice as wide:
<p style=” color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;”>A post shared by Jim Stoddart (@jimstoddart) on <time style=” font-family:Arial,sans-serif; font-size:14px; line-height:17px;” datetime=”2016-05-04T12:03:41+00:00″>May 4, 2016 at 5:03am PDT</time></p></div>
Not quite the precise Swiss construction of a Lehni (he also made the bot at The Interval), but it worked well (enough) for the limited budget.2017-08-18 at 21:10 #138262017-08-21 at 09:21 #13839
D0 Rnnn Lnnn Unnn Vnnn
you must have at least one of each LRUV. the nnn is a positive or negative whole number for number of steps. on a 1/16 microstepping motor that’s normally 400 steps it will take 6400 steps to move one full rotation, or 160 steps per mm.2017-08-21 at 10:02 #13841
I have a challenge for those of you following along with the zarplotter.
The RUMBA board has room for two extra stepper motors. Can you design an add-on system that would let the system swap pens on its own?2017-09-01 at 03:47 #13947
I have an issue with the movements using a RAMPS.
When I send the command “G0 X20 Y00 F100” NW an SW motors should release cable and NE and SE motors should pull cable. What I see is that Motor NW doesn’t move.
When I send G0 X00 Y20 F100 instead I see SE motor not moving. This is really strange.
I tested also individual movements with the following commands with strange results:
D0 L100 NE motor moves ok
D0 R100 NW motor moves ok
D0 U100 SW and D0 U-100 motor moves ok (but doesnt recognize the direction of the steps. It’s moving always in the same direction)
D0 V100 SE motor moves ok
Did you find the issue? I saw you sent a new version of the code, but not sure it fixed the issue.
Why did it work for you with RUMBA and not in RAMPS?
Thanks2017-09-01 at 08:48 #13950
The only thing that changes between RAMPS and RUMBA are the pin assignments. If your RAMPS isn’t working right, I’d try changing the driver first, then treat the RAMPS board itself as very suspicious.2017-09-01 at 09:49 #13951
I have acquired a RAMPs board and I’ve installed it. testing to begin shortly.2017-09-01 at 10:25 #13952
if the pulley diameter is set to zero, the inverse kinematics fail in interesting ways. I’ve seen on the zarplotter that (from home position) X+anything does nothing, and Y+anything moves only a few of the motors, as you described.
So… probably something with failing to initialize the pulley diameter. I’m strongly in favor of ripping out this pulley diameter changing code, since I only use one size of pulley ANYWAYS.2017-09-01 at 10:27 #13953
FYI, 1.27323954 is (20 teeth * 2mm per tooth) / pi = circumference of pulley.2017-09-02 at 02:21 #13954
Hello Dan, I tried applying D1 L1.27323954 command first but the system is behaving the same way.
See the output:
When Sending several times:
V stepper releases always the cable and L Stepper doesn’t move. Let’s wait for Rumba board to arrive to see if it works on RUMBA.
Could the problem be because I’m not using the servo and somehow the code is misusing the steppers?
Can you share your configure and the firmware config to check all your parameters like board size, plotter size, etc..? I’m not sure how to define the limits (if we need to use negative values for the bottom and left,etc..)
Thanks.2017-09-02 at 13:15 #13957
it sounds like your motors are inverted. What does “M102” say? It should reply
I1 J-1 U1 V-1
and if it doesn’t, try
M101 I1 J-1 U1 V-1
This is a way to reverse the direction of motors in software. Another method is to physically flip the wire where the motor attaches to the controller, which should only be done with power disconnected.
You must be logged in to reply to this topic.