Sanddrawing Robot

Home Forum Everything Else Sanddrawing Robot

  • This topic is empty.
Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
  • #6004


    Finding your site has been enlightening. I built my first computer, an H-89a, with a soldering iron. Trying to get back into hardware using Arduino has been a struggle. So many posts seem to expect knowledge I don’t have yet.

    Did you every make Skycam kits? It looks like it would work to make a version of the Sanddrawing Bot.


    Although, I might mount all the motors together in a box on the floor in one corner and use pulleys if the drag is too much.




    I made the skycam once just to prove that I could. Let’s work it out.

    We want to move a tool over a table top by pulling four cables. Each cable is pulled by a motor. Each motor is mounted in some way. On the other end of each cable is a counterweight to keep the cable on the motor. All four motors have to work together, so there’s one control system. Everything is electric and needs a power supply. the controller firmware needs to talk to the PC software so that’s probably a USB cable.

    1x end effector (holds the tool)
    4x cables
    4x motors
    4x motor mounts
    4x counterweight
    1x controller
    1x power supply
    1x USB cable
    1x skycam firmware
    1x skycam software

    Now let’s talk details.

    end effector
    I’m sure we can make something. Really all we need is a ring with some spots to tie the cable.

    The cable has to bend in every direction, so belts are out. That leaves fishing line, cable chain, or syncromesh. Fishing line wound on a bobbin is not great. As the string winds up it changes the diameter of the bobbin in inconsistent ways, which has random effects on the accuracy. Tried that with early Makelangelos, looked bad.

    It could be done by adding encoders to watch how much string actually goes in and out of the motor, but that’s adding more parts and making things more complicated. I always vote for less parts and simpler design.


    My experience is in stepper motors, and my code is written for them. Also I have them in stock so… yeah. NEMA17.

    ball chain pulley:
    syncromesh pulley:

    motor mounts
    My ideal would be a system that clamps onto any table, flat packs, and can be made with a laser cutter. Designing it is going to be a fun challenge. Hooray for rapid prototyping! Boo for modelling software. Someone needs to make a Solidworks that’s as cheap as Photoshop.

    Here i’d reuse the counterweight from the Makelangelo. The only gotcha I see is that the distance from a motor to the opposite corner of the table must be LESS than ( the distance from the motor to the floor + height of the counterweight). If this isn’t true the counterweight will hit the floor sometimes and that would ruin the rest of the precision.

    controller & power supply & USB cable
    I see three four options here.

    a) two arduinos UNO ($60) and two adafruit motor shield v1 ($40, discontinued) + two 5v1a power supplies + two 12v2a power supplies + two USB cables. Discontinued means it’s not really an option.
    b) one arduino UNO ($30) and two adafruit motor shield v2 ($40) + a 5v1a power supply + two 12v2a power supplies + one USB cable.
    c) one RAMPS board ($40?) with an Arduino Mega 2560 ($80) + a 12v3a power supply ($20) + one USB cable.
    d) one RUMBA board ($116) + 12v3a power supply ($20) + one USB cable.

    (b) is the cheapest option, but the top speed isn’t great. (d) is my personal favorite, because I get the same thing as (c) and room on the board for two extra stepper motors. Maybe they could be on the end effector to turn the tool sideways or something.

    skycam software

    Here I would use the Makelangelo software to convert my pictures into GCODE and send them to the robot. It’s already free.

    skycam firmware

    The brain in the controller would need to change based on the new shape of the sand plotter. It would have to drive four motors instead of just two. It would also need to change the inverse kinematics. Inverse kinematics is the method that takes (x,y,z) position of the end effector and turns it into (m0,m1,m2,m3) motor steps.

    I wrote a version of this code for motor option (a), avaiable here:

    So… that’s a brief list of what I’d do to build another skycam. The firmware is the biggest software challenge.
    The motor mounts and the end effector are the biggest hardware challenge.
    Everything else is commercially available, and most of it I have in stock.

    So how would we go forward from here?


    Great, I would like to join. Could be my summer project. I have enough spare motors.

    As for electronics, I prefer (c), and this is why: I’ve seen cheap RAMPS ($10) and Mega ($15), A4988 ($4) or better DRV8825 ($6) a piece. PSU would be $10 tops. So, complete 4 channel controller for $50-60! Add $15 and you get LCD+SD slot.

    Ball chain looks preferable, it’s more common. I think of using it for my drawbot.

    Counterweight problem could be solved with block and tackle.


    *does a little dance*


    So I should break down the IK.

    Let’s say I know where my motors are – points m0,m1,m2,m3, where every m is (mx,my,mz).
    I know where my tool is – T(x,y,z)
    My goal is to turn T into (s0,s1,s2,s3), where s* is the number of steps on each motor.

    void IK(vector T, double s0, double s1, double s2, double s3) {
    s0 = Length( m0 - T ) / steps_per_mm;
    s1 = Length( m1 - T ) / steps_per_mm;
    s2 = Length( m2 - T ) / steps_per_mm;
    s3 = Length( m3 - T ) / steps_per_mm;

    double Length(vector v) {
    return sqrt( v.x*v.x + v.y*v.y + v.z*v.z );

    Well, that wasn’t so bad. What is steps_per_mm?

    float motor_steps_per_turn = 400;  // the motors I order are normally 400.  Most suppliers are 200.
    float motor_microstepping = 16; // 1/16th microstepping
    float steps_per_mm=1;

    void AdjustBobbinSize(bobbin_diameter) {
    float circumference = PI * bobbin_diameter;
    steps_per_mm = circumference / (motor_steps_per_turn * motor_microstepping);

    Not too painful.

    So… anyone have ideas on making a good end effector (tool holder)? How about motor mounts?



    The cable problem was avoid in the original by a small drawing surface and a large drum diameter which meant a single layer or wraps. Although, for commercial winches, they always recommend a minimum of 3 turns on the drum so the load is transferred by friction and not the fastener holding the cable end.

    If we go with ball chain, we need pulleys however, there are metal or plastic pulleys for curtains / blinds we can re-purpose.

    Either way, if you go for a more general design, scalable from table to room size, you could use a capstan to drive the cable and a spring or elastic pre-load on a take-up drum.


    I was going to avoid stepper motors, at certain speeds the harmonics can be unpleasant however, if we design in a modular way, it should be easy enough to change later. If the motors are in an enclosure, see motor mounts, there are ways to muffle the noise.

    motor mounts

    The electrical cable management would be easiest if all the motors & control are in a box at one corner. The other corners are then hooks (with pulleys?) attached to the walls, ceiling or some sort of portable pole.


    If the counter weight hangs from a pulley, its motion is 1/2 the change in line length.

    controller & power supply & USB cable

    Using the RUMBA board is more expensive however, it is a good option given the feature set. Once the details are worked out, it might be worth building a controller and reusing it for the next prototype.


    Bill, you make good points.

    Personally, I’m more in favor of running an non-moving electrical cable than a long tensioned wire across the machine. I’d rather have problems shielding the cables than problems of mounts pulling themselves out of alignment, things that could snap and go flying, etc.


    I’m not sure what we’ll end up with as a stylus for drawing in sand, the large ball-bearing used in the original seems reasonable. A 2″ chrome steel ball bearing seems to be ~1-1/2 pounds. Assuming it is much heavier than current cameras if someone decides to go for the skycam option I’d expect 14-lb test line should be strong enough. I don’t see there being lots of tension in the system. We might was heavier line just to make it more visible.

    If you Google for zip-line cameras you’ll find quite a few choices for camera mounts, the standard thread is 1/4-20. Most are some variation of a pair of plates, one attaches to the camera, one attaches to the support and they are connected in such a way as to cushion vibration using foam (earbuds), or loops of stiff wire. There are motorized tilt / pan heads with IR remote for camera control.

    As a starting point, if we assume a hook available in each corner of a space at most 20′ square. The diagonal is ~28′ with a single pulley on the counterweight, ~7′ of travel is needed. The total of the weights would be ~1/2 the weight of the stylus / camera + mount.

    If we go with floor level motors in the corner, a line from there to a 10′ ceiling, across the diagonal and back would be 10′ + 28′ + 28′ call it 70′. A winch drum with a diameter of 4″ would take up ~1′ per revolution so ~10 wraps on the drum. 6″ Drum would take up ~1-1/2′ with 8 wraps. We can use a gear drive to adjust the feed-rate and use a worm gear for power-off hold.


Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.