Advertisements

Two-Wheel Plotter

While contemplating all the hocus-pocus and precision alignment involved in the DIY plotter project, it occurred to me you could conjure a plotter from a pair of steppers, two disks, a lifting mechanism, and not much else. The general idea resembles an Rθ plotter, with the paper glued to a turntable for the “theta” motion, but with the “radius” motion produced by pen(s) on another turntable:

Rotary Plotter - geometry 4

Rotary Plotter – geometry 4

The big circle is the turntable with radius R1, which might be a touch over 4.5 inches to fit an 8.5 inch octagon cut from ordinary Letter paper. The arc with radius R2 over on the right shows the pen path from the turntable’s center to its perimeter, centered at (R1/2,-R1) for convenience.

The grid paper represents the overall Cartesian grid containing the XY points you’d like to plot, like, for example, point Pxy in the upper right corner. The object of the game is to figure out how to rotate the turntable and pen holder to put Pxy directly under the pen at Ixy over near the right side, after which one might make a dot by lowering the pen. Drawing a continuous figure requires making very small motions between closely spaced points, using something like Bresenham’s line algorithm to generate the incremental coordinates or, for parametric curves like the SuperFormula, choosing a small parameter step size.

After flailing around for a while, I realized this requires finding the intersections of two circles after some coordinate transformations.

The offset between the two centers is (ΔX,ΔY) and the distance is R2 = sqrt(ΔX² + ΔY²).  The angle between the +X axis and the pen wheel is α = atan2(ΔY,ΔX), which will be negative for this layout.

Start by transforming Pxy to polar coordinates PRθ, which produces the circle containing both Pxy and Ixy. A pen positioned at radius R from the center of the turntable will trace that circle and Ixy sits at the intersection of that circle with the pen rotating around its wheel.

The small rectangle with sides a and b has R as its diagonal, which means a² + b² = R² and the pointy angle γ = atan a/b.

The large triangle below that has base (R2 – a), height b, and hypotenuse R2, so (R2 – a)² + b² = R2².

Some plug-and-chug action produces a quadratic equation that you can solve for a as shown, solve for b using the first equation, find γ from atan a/b, then subtract γ from θ to get β, the angle spearing point Ixy. You can convert Rβ back to the original grid coordinates with the usual x = R cos β and y = R sin β.

Rotate the turntable by (θ – β) to put Pxy on the arc of the pen at Ixy.

The angle δ lies between the center-to-center line and Ixy. Knowing all the sides of that triangle, find δ = arccos (R2 – a) / R2 and turn the pen wheel by δ to put the pen at Ixy.

Lower the pen to make a dot.

Done!

Some marginal thinking …

I’m sure there’s a fancy way to do this with, surely, matrices or quaternions, but I can handle trig.

You could drive the steppers with a Marlin / RAMPS controller mapping between angles and linear G-Code coordinates, perhaps by choosing suitable steps-per-unit values to make the degrees (or some convenient decimal multiple / fraction thereof) correspond directly to linear distances.

You could generate points from an equation in, say, Python on a Raspberry Pi, apply all the transformations, convert the angles to G-Code, and fire them at a Marlin controller over USB.

Applying 16:1 microstepping to a stock 200 step/rev motor gives 0.113°/step, so at a 5 inch radius each step covers 0.01 inch. However, not all microsteps are moved equally and I expect the absolute per-step accuracy would be somewhere between OK and marginal. Most likely, given the application, even marginal accuracy wouldn’t matter in the least.

The pen wheel uses only 60-ish degrees of the motor’s rotation, but you could mount four-ish pens around a complete wheel, apply suitable pen lift-and-lower action and get multicolor plots.

You could gear down the steppers to get more steps per turntable revolution and way more steps per pen arc, perhaps using cheap & readily available RepRap printer GT2 pulleys / belts / shafts / bearings from the usual eBay sellers. A 16 tooth motor pulley driving a 60 tooth turntable pulley would improve the resolution by a factor of 3.75: more microsteps per commanded motion should make the actual motion come out better.

Tucking the paper atop the turntable and under the pen wheel could be a challenge. Perhaps mounting the whole pen assembly on a tilting plate would help?

Make all the workings visible FTW!

Some doodles leading up to the top diagram, complete with Bad Ideas and goofs …

Centering the pen wheel at a corner makes R2 = R1 * sqrt(2), which seems attractive, but seems overly large in retrospect:

Rotary Plotter - geometry 1

Rotary Plotter – geometry 1

Centering the pen wheel at (-R1,R1/2) with a radius of R1 obviously doesn’t work out, because the arc doesn’t reach the turntable pivot, so you can’t draw anything close to the center. At least I got to work out some step sizes.

A first attempt at coordinate transformation went nowhere:

Rotary Plotter - geometry 2

Rotary Plotter – geometry 2

After perusing the geometric / triangle solution, this came closer:

Rotary Plotter - geometry 3

Rotary Plotter – geometry 3

Advertisements

, ,

  1. #1 by madbodger on 2017-10-30 - 09:19

    It turns out FabLab in Nuremberg made a plotter clock recently that used a pantograph mechanism driven by a pair of servos. There’s a good article in Elektor describing the geometry and math behind the inverse kinematics that produces the equations that map coördinates to servo positions. https://www.elektor.com/arduino-controlled-sand-clock

  2. #2 by Vedran on 2017-10-30 - 10:39

    I remember reading about a 3D printer with this style of kinematics a few years back. Might be this one:
    [video src="http://polarworks.no/videos/alta_intro.mp4" /]
    I’m guessing they are throwing a bit of hardware at the motion control problem, but since delta printers can (just barely) be implemented on 8-bit 16MHz micro, there’s a good chance this ona could be as well.

    Other then really interesting engineering problem and cool looking machine, I don’t see the advantage though.

    • #3 by Ed on 2017-10-30 - 18:56

      The only advantages I can see boil down to a lack of linear slides and multiple bearings, at the cost of an utterly non-intuitive “coordinate system”. I won’t build one unless I can turn it into a Digital Machinist column … [grin]

      • #4 by david on 2017-10-31 - 02:31

        I always wanted to build a vertical mill using a hexapod platform instead of an XYZ platform, and then build a little control box with three force-feedback electronic control handwheels to feed a coordinate transform box (strain gauges on the hexapod actuators to drive the reverse path)…

        • #5 by Ed on 2017-10-31 - 08:23

          I vaguely recall somebody build a hexapod mill with a LinuxCNC controller, so the kinematics are out there somewhere, and somebody else was tinkering with a SpaceBall (-oid?) controller for “real” 3D input control. Nowadays, Marlin firmware and an offbeat game controller might get you most of the way to a functional mill: living in the future is great!

  3. #6 by Vedran on 2017-10-31 - 09:37

    But rigidity would be questionable, wouldn’t it? Platforms alone would have quite a bit of overhang and if you made them more sturdy, then rotational inertia kicks in. Also any error in the bearings would multiply. I guess you could spring for angular contact bearings or something similar that can be preloaded.

    • #7 by Ed on 2017-10-31 - 14:17

      The mechanics should be Good Enough for plotter duty and not much else. I’d try gimmicking acrylic sheets on Real Metal bushings stuck directly on the motor shafts, definitely use a spring-loaded pen holder with plenty of travel, then hope for the best.

Spam comments vanish. Comment moderation may cause a delay.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s