Polar table design

I don’t have any experience, but I think I know how to solve it. A long time ago there were some people (including Leo) working on CNCing on a rotary axis. Not 4 axis, but X, Z, and A, being the rotational axis. Basically, if your gcode is right, it’s just a units problem. They just connected the Y axis to the rotation stepper and adjusted their steps/mm.

You’re really dealing with an X,Y machine, but X is radius and Y is angle. So don’t bother with any delta/corexy configuration, you’re using Marlin as a regular cartesian machine.

Let’s start with X, because that’s easier. In the thr machines, it’s normalized, so that if you have a 150mm radius table or a 1500mm radius table, they use the same gcode. I think that’s good, but it’s overly complicated and with sandify, I don’t think it will matter. So I would suggest making it just a regular linear axis. 0.0 is at the center, and 250 is 250mm away from that, and I think you can figure out those details. Marlin only reads out to 3 decimal places when parsing gcode (at least that used to be true), so that’s another good reason to make it mm and not (0,1).

The Y axis is a little trickier, because it is completely unbounded, and you’ll have to carefully consider the right units. Since Marlin only reads out to three decimal places, it probably doesn’t make sense to use radians, because 0.001 radians is about 1/6000th of a rotation, which I don’t think is fine enough resolution. If we used degrees, then it would be a resolution of 360,000/rotation, which is very rediculous, and I think that’s OK.

If you had a regular 200 steps/rotation motor, 1/16th microstepping, and a 4:1 reduction for a belt or something, your steps/degree would be:

200 steps/in rotation * 16 microsteps / steps * 4/1 out rotations/in rotations * 1/360 rotation/degrees = 35.55 microsteps/out degrees.

That’s the right order of magnitude. I feel pretty good about that. Other options would make the units something like 0.1radians so it takes 62.8 to make a circle, or even something like 100/rotation. We can make it whatever we want, really. Degrees make it easier to use across multiple machines.

There is a lot that could go wrong with this, mostly because I don’t know if marlin ever has code somewhere with some max size of an axis, because no one ever makes a 3km long printer. Or a -3km long printer.

If you finish that, then wiping the whole thing in a big spiral with 100 loops would be something like this:

G92 X0 Y0
G1 X250 Y36000 F2000

You’ll need to set Y max speeds in max degrees per second and accelerations in degrees per second per second. Feedrates are going to be a little goofy. because a mostly radius move will be in mm/s and a mostly angle move will be in degrees/s. Not ideal, but I think it’s manageable.

If you want to try that out, you can do that with just two motors and a controller.

I can modify sandify to output it’s designs in this format. It will literally take me less than an hour to do that. It would be possible then to convert thr files to this format. The thing that’s missing is converting your alpacas toolchain to this format, which will work when I finally get to making a gcode importer to sandify.

Let me know if that works, and I’ll make some gcode for you to try.

Wow, Jeff. I appreciate your detailed comments - you’ve clearly put a lot of thought into it. I’m not looking to create or code a controller for my table, though. I’m looking for something already made, just like you can get a mega/ramps or other board and just connect the steppers and endstops and do a little configuration and you’re ready to go, at least with a cartesian design. I don’t really care if it takes gcode or thr or even some other flavor of instructions. I’m just looking for a simple way of controlling a rotary table.

That’s exactly what I’m suggesting.

I find the polar table attractive because one could build (theoretically) a rather large table with minimal rim and little hardware.

But I guess it would only be easy to make circular/oval, spiral, or epicycloid patterns. Making linear traces I guess would require special software that breaks the long linear moves into a set of short strokes where each point’s angle and radius are calculated. It might also work best with G93 inverse time feed rate methods to get constant ball speed but few motion controllers can handle that.

Sandify is doing those calculations to put positions every few mm in along a straight line and computing angle, radius for each point. It’s just out putting it inthr files instead of gcode.

Any chance you’d be willing to share the gcode for those? I expect it’d be easier for me to write some filter software to change the table parameters to fit my table that to generate them all from scratch. :slight_smile:

Hi Bill, if your request is meant for me (hard to follow this thread), the easiest way to get most of the designs in the video is to convert .thr files using Sandify. In Sandify, on the Code tab, Jeff includes links to several creators of Sisyphus designs who have dozens of designs free for download. Just download the .thr files, load into Sandify, enter your table parameters, and voila - gcode! Jeff is truly a magician! I’ve converted over 40 Sisyphus designs for my table that way.

A handful of the designs shown in the video (and in other of my videos) were created by me using my Eggbot technique in Inkscape, and ESTLCAM for generating the toolpaths, and also Sandify. Those gcode files are available here: https://github.com/karltinsly/SandTableDesigns.

Thanks, I did a git clone on that and will look into resizing for my table. I see you have I and J movements, what are they for?

On G2 amd G3, the arc moves, they define the center of the circle you’re following.

Hi guys,

I’m in a similar process now to decide to go for the ZenXY or a polar setup. I like the mechanical simplicity of the polar but still not sure if it will be more quiet or better than just go for the awesome work done with ZenXY.

I found these two designs which are impressive options of a mechanical setups of a polar table and wanted to share them.

The first one should be possible to cut from acrylic or plastic material as alternative to wood while the second one requires both 3d printed parts as well as cut-outs.

https://youtu.be/FMzAzuE4Yl0

https://www.mikrocontroller.net/topic/430074#5143568

https://robdobson.com/2018/08/a-new-sandbot/

 

Those are pretty neat. I don’t see any details about the motor control/software. The arm seems like it would be really complicated, but when I think about breaking it down just into radius, angle, it’s not so bad… The micro would have to do some work to make the ball move in the radius direction, but hopefully not full blown trig.

I think the German guy uses some “odd” microcontroller while the one from Rob use an ESP32 based one with an own pcb which makes it interesting. He also has it configured so it publishes a web interface for interaction. I do not think it is using gcode thus not as flexible or compatible as I would like it to be i.e. be able to use sandify.

The radial movement is also my major concern when it comes to these mechanical solutions. In order to move in the radial direction a lot of stepping is required but on the other hand if circular patterns are desired, they will move very smooth.

I think a traditional set up with a rotating disc for the rotation and a rack a pinion solution for the radial movement is probably best and the path I’m currently exploring. If possible, to drive the rotation via a belt on the outside and the pinion shaft centered as the main axis for the rotation no electronic will have to move. This is also the solution used by Sisyphus.

But since I now found this awesome site and work done here, I might just go for a first version of the ZenXY to get started.

It will be 100x easier. The diy polar solution still really needs to be flushed out. If you’ve never built one of Ryan’s machines, then you probably don’t know how much thought goes into making them reproducible.

1 Like

You guys need to look at the sysiphys stuff again. They dont use gcode, they use tracks, which is a pattern that is easy to manipulate on the fly. Also, there are designs for the hardware on thingiverse. I was going to build one, but sisphys wont sell the control cards, which have trinamic drivers and are connected to a rasperry pi through i2c or something simliar. You can look at the tracks data on their site too, you can write your own.

Sandify does indeed output thr files, which are theta rho files, or radius, angle files. It would not be too hard to control one with Marlin.

Hi guys, I’m jumping in. I’ve currently got parts for the ZenXY printing, but conveniently enough another project I’ve been working on lately is a stepper controller for the Pi Zero that runs over i2c, as a scaled down version of Adafruit’s stepper hat.

In testing these, they hit a limit of about 50 RPM (full stepping). I’m not sure exactly what the bottle neck is, but I believe it is the pi itself, and not the hardware. I’ve got a motor shield V2 that runs the same chips, minus the CAT24C32 EEProm chip. One of these versions of motor drivers would lend itself well to this type of project though. Ramps is nice for the simplicity of piggy backing on Marlin, but if a new effort is started to cover polar architecture this could be a simpler, smaller, and cheaper route. (It could also be done in python on any number of the newer micro controllers that support circuitpython).

 

There are a lot of reasons why bit banging on the pi would be less than ideal for motor control. That said, 50RPM with full steps is about 200 steps/sec. The pi shouldn’t be that slow. There is an interesting firmware to combine a pi with arduinos (klipper) and it uses the best of both worlds. Fast io on the micros with python high level programming and math.

All that said, Marlin is a very good choice for this. I think there is a lot of value and very little edits needed to support a radius and angle.

Hi guys!. I worked on a similar project where a circular gantry needed to be fed through a slip ring. To extend the life of the slip ring I did the following:

  1. Power source 24VDC
  2. Power the gantry through slip ring
  3. on the gantry receiving side, I installed a DC-DC step-down buck converter to lower the voltage to 5V (https://www.banggood.com/5A-XL4005-DCDC-Adjustable-Step-Down-Module-Power-Supply-Converter-p-923600.html?rmmds=search&cur_warehouse=USA). Small and light.
  4. The electronics mounted on the gantry required 5V 5Amps (25 Watts), so by feeding 24V (25Watts), I only required 25W/24V = 1.4Amps (72% less current), much fewer chances of arching currents.
  5. To mitigate any possible voltage spike down during an electric arc I added an electrolytic capacitor 470uF/16v before the dc-dc power module.
Its been working for 3 years and around 6000hrs so far and still, no problems and I haven't changed the slip ring yet.

Hope this helps!

1 Like