Close
0%
0%

plotbot

Plotting machine build to be hung from a wall. Uses a delta-arm design to save on parts and to improve elegance.

seisei
Similar projects worth following
I've got a big piece of wall in my aparment which is empty, and deciding what to put up there can be difficult (at least it is for me). The solution is to hang something there that is neither boring nor to blinky (first thought of LEDs but that would probably be annoying). The easiest way would be to just draw a picture myself or buy a good one but I can't draw and I usually waste my money on useless electronics so to kill two birds with one stone I head the idea to build a plotter which will paint me nice drawing directly while hanging on the wall..

The basic construction of the plotter will consist of a thin wooden plate (6mm) which is glued onto a thicker wooden frame to increase the stability but still be not too heavy.

All the mechanic stuff is from http://openbuildspartstore.com/, it's not to expensive and even if it's IMHO not best quality it does a good job as far as I can judge. Also this saves on brain which is needed for the programming part.


The electrics consist of a teensy and pololu A4988 drivers. I guess I'll need the raw power of the teensy because efficient programm is out of my league.


I've just started with the software and I will publish it as soon as it's somewhat presentable. First I thought of using a 3d-printer firmware like grbl and adapt it to my needs, but I guess it might be faster to write the software from scratch. Also I decided not to rely on gcode but to make simpler protocol that just has the needed functions.

View all 19 components

  • Calculation of usable area

    sei02/04/2015 at 21:16 2 comments

    To check if the geometry is ok I wrote a little python script to calculate the area which the plotter arms can acces:

    import math
    import matplotlib.pyplot as plt
    from matplotlib.patches import Rectangle
    from planar import Vec2
    
    al = 0.75 #arm length [m]
    f = 0.75 #position of rail a [m] 
    
    apos = [2 * x * 0.005 for x in range(1, 200)]
    bpos = [2 * x * 0.005 for x in range(1, 200)]
    
    cx = []
    cy = []
    
    for x_a in apos:
        for x_b in bpos:
            a = Vec2(x_a,f) # vector to position on arm a
            b = Vec2(x_b,0) # vector to position on arm b
    
            cl = (b-a).length #distance between a and b
    
            #calculate height of triangle which is spanned by the arms
            hl = 2*((al**2)*(al**2)+(al**2)*(cl**2)+(cl**2)*(al**2))-(al**4+al**4+cl**4)
    
            if hl > 0:
                # finish calculation of height
                hl = math.sqrt(hl)/(2*cl)
    
                #vector from a to b
                d = (b-a)
                d = d/d.length
    
                # turn d around by 90°, h points to tip of triangle
                h = Vec2(d.y,-d.x)
    
                # normalize h
                h = h/h.length
    
                # calculate distance to tip set as length of d
                d *= math.sqrt(al ** 2 - hl ** 2)
    
                # vector which points to the tip of the triangle
                c = a+d+h*hl
    
                #save coordinates of tip
                cx.append(c.x)
                cy.append(c.y)
    
    plt.plot([min(apos),max(apos)],[f,f],'r')
    plt.plot([min(bpos),max(bpos)],[0,0],'g')
    ax = plt.gca()
    
    points = plt.plot(cx,cy,'o')
    plt.setp(points,'color', 'b', 'marker', '.', 'markersize', 0.5)
    
    plt.axes().set_aspect('equal')
    
    plt.xlim([-0.7,2.7])
    plt.ylim([-0.05,0.8])
    plt.xlabel('x [m]')
    plt.ylabel('y [m]')
    plt.show()

    Running the script gives the following plot:

    The blue area is what the plotter can reach, the density of the dots is a measure for the resolution. Luckily the density is pretty homogenious, so the resolution of the plotter will be more or less constant over the whole drawin area.

    Also one might wonder what with the empty space on the right, I'll show that in a follow up.

    Here's also a little sketch which shows what the calculations in the script are based on:

View project log

Enjoy this project?

Share

Discussions

Sven Jungclaus wrote 10/16/2016 at 14:11 point

you should have a look at this website...
https://www.blackstripes.nl/de/products/drawbot/BOTMK2/

  Are you sure? yes | no

Jarrett wrote 02/07/2015 at 01:05 point

Assuming you can travel the full length of the rails, wouldn't you get far more usable area by having shorter arms?

  Are you sure? yes | no

sei wrote 02/08/2015 at 18:38 point

There is always a tradeoff between height and width, for shorter arms
you will gain more width but also the accessible height will be
smaller. So far I couldn't think of any design that will beat a
cartesian bot/plotter when it comes to "spacial efficency". I choose the
length of the arms to be the same as the distance of the rails so that
the tip of the triangle will be able to reach from one rail to another.
This way I should be able to use a commercial paper format (75x100cm)
and fully cover it.
But there's also a little trick, it should be
possible to fold the arms in the other direction by letting the tip
point upwards and then moving the sledges as far form each other as
possible, this way the tip will fold inwards and now one can access the
space on the right side. So in principle one would be able to draw two
seperate pictures with this geometry. We'll see when the arms are up and
running if that works :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates