Polar sand table - Arduino

Hello Guys,

I have just started out building one of the most complex builds I’ve done so far.
In this topic, I’m going to post updates of my progress and problems while building the sand table.
The structure of the Robot is based on files from Rob Dobsons build.


Mein neuer Arduino Mega 2560 und mein Ramps 1.4 sind gestern angekommen. Ich habe zu deiner Nachricht bezüglich der Errechnung der Steps usw. noch ein paar Fragen.
Mein Roboter hat folgendes:

  • Übersetzung von 20 Zähne auf 60 Zähne auf beiden Achsen
  • TMC2008 mit 16 Microsteps
    ((200 x 16)/6)x3 =1600 Mikroschritte / Umdrehung

Ist das so dann richtig?

M92 X1600 Y1600

Zweitens meinst du mit Baud auf 115200 ändern, die Codezeile in der Config.h in Marlin?

#define BAUDRATE 250000

servus Arthur

English translation
My new Arduino Mega 2560 and Ramps 1.4 have arrived yesterday. I have a few more questions about your message regarding the calculation of the steps etc.
My robot has the following specs:

  • Translation from 20 Teeth to 60 Teeth on both axes
  • TMC2008 with 16 micro steps
    ((200 x 16) / 6) x3 = 1600 micro steps / revolution

Is that right then?

M92 X1600 Y1600

Second, do you mean by changing baud to 115200, the line of code in Config.h in Marlin?

#define BAUDRATE 250000

Greetings Arthur

Thank you :slight_smile:

Looks right to me. It won’t break anything if it is wrong. You can send a G1 X6 command and if it doesn’t rotate one full turn, then it is easy enough to see the error.

The baud rate of 250k vs. 115.2k is not very important. Some of the gcode will be pretty dense, so the higher is probably better. But the most important is to make sure you know what it is, and you match the controller software to it.

1 Like

Hallo Arthur

was ist das für ein Board?
Hab das noch nie gesehen.


1 Like

Hello @ArthurvonWilcke, Hello @jeffeb3, Hello @Breslauklaus

This is my first comment in this forum after having read many many hours of how to build a sandtable.

this is bellow my current mechanic still in progress!

finally I have choose to build a scara model because it can work with round or square table model. I want to build one table for my father and I need therefor a convenient way to send pattern to the machine. I want to do a smartphone app working with .thr file and sand to the machine with bluetooth (or wifi).

I need you help concerning the software and electronics hardware. Like @Breslauklaus, mechanic is not a problem for me but I have just some base in programming.

Could you help me what is the best hardware setup to not having all the soft to write but just to configure it? I have a lot of hardware already buy:

I have make a small PDF to resume the communication chain. can you help me please?


1 Like

Hallo Klaus,

Das ist ein ganz normales Ramps 1.4 nur von einem anderen Hersteller meiner Meinung nach.
Servus Arthur

Das ist der link zum Board

1 Like

Welcome! Sounds like a fun project.

The solution I have been pushing the other scara users towards is to convert the .thr files into gcode angles, but the gcode represents angles on the two axis, and the firmware doesn’t know it is a scara machine. This approach uses a python script to do the math and leans heavily on the geometry of the thr file generator. You could use the output from that script in the cnc shield/uno with regular grbl or you could use it with the ramps and Marlin.

The grbl-scara fork seems promising too. For that solution, you could use the gcode output from sandify.

Grbl doesn’t support many features outside of the most common. So anything different lives in a fork. The forks aren’t often maintained. The forks don’t have hundreds of thousands of users like the main version. So there are more bugs in the forks yet to be discovered.

The main question with the grbl-scara version is, if you command from 100,100 to 100,-100, does it travel in a straight line, and will it always find a the shortest path around the center. If so, then you have a very good solution.

If you can use grbl-scara, then the best news is that there are lots of server options. Sandipy would be ideal. Cncjs would work, and if you can ignore all the printer focused features, octoprint would work too. There are apps for octoprint on the phone. Otherwise, you will need to load the web page on the phone in the browser.

If you use the thr to gcode angles, those tools won’t understand the thr files. You can upload the converted gcode angle files. All the previews will be wrong. It might be possible to edit sandipy to either use the gcode angles in the previews or to even accept a the file, and convert it to gcode angles for you.

You can always build a new solution. Off the top of my head, these are the parts you will need:

  • upload interface, along with managing some storage
  • a file list, and maybe a preview image for each pattern
  • control interface, for jogging, homing, etc.
  • a terminal interface would be a great bonus feature.
  • serial port communication to the board
  • play control of the files.

None of these are hard. But combined, they are a lot of work. Starting with something like sandipy or octoprint or esp32 web ui would give you a big advantage.

I am sure we can get something working. So if you’re looking for permission to get your build started, go ahead.

1 Like

Guten Tag

Ihr Design kommt dem von einem Freund sehr nahe.

Freut mich wenn die SCARA Gemeinde wächst.



Yes even if I’m afraid to don’t fine a good solution to make my scara turning​:laughing::pray:

Hello Vincent,

the project your building looks very well designed and promising.
I’m going to answer your questions you wrote me here so everyone can read them and help with further advice.

I saw you start with an Arduino Uno and switch to Mega? Why?
Have you tried the firmware grbl-scara on GitHub?

I also tried to program the robot with an Arduino Uno and a CNC-Shield. For the first attempts this worked okay and I got a general understanding of the machine. It was enough for the beginning but as soon as you want to do something more difficult it gets hard.
As soon as I saw Klaus using the Mega and Ramps with Marlin I switched because I honestly didn’t get grbl to work.
My two 3d printers also run on marlin so it was easier for me to understand as I’ve known marlin for a while now. There are also other advantages comparing marlin to grbl. For example, marlin has a bigger community and more features than grbl.
To answer your question, I haven’t tried the grbl scara on github on my robot. (also didn’t know there was a file for that)

Your Idea of using a Rasberry Pi or maybe Esp32 is great. For the beginning, I’m just going to focus on moving the robot from my pc and then continuing with Code from sd-cards or using Octoprint.
I think that Octoprint might be the best choice for your machine.

Greetings Arthur

Thank you so much jeffeb3. You’re the best!!

I will first try the grbl-scara because for me it’s the easy way to do. I have order a uno and cnc shield to try.

Sandypi is exactly what I was looking for. Now I need to find the configuration to send instruction from rasberry 3 to arduino! But I will go step by step. Thank you again


Thank you very much Arthur. I will first test with grbl-scara and switch to mega if it’s doesn’t work!

If some make working the sandypi with raspberry who talk to an arduino I’m very interested on it. I will keep you inform and share of course all here…


Hey Guys,
there’s some big news for today!
The robot is moving.

After some days of waiting the hall sensors and the new power supply have arrived. I could finally test the transformed.gcode file on my machine. It looks like it works as it should but there are some things I still have to change.

  1. The machine moves way to fast
  • unfortunately, I couldn’t find the right code line to change the speed (only found acceleration)

How did you guys slow it down?

2.Buy some kind of round table

  • I found one table from IKEA it’s named vittsjö
    or is building one by coir own easier?
  1. What sand should I use for my table?

I’ve read in some builds that they used very fine sand for example bathing sand for animals or even baking soda.
Today I tested it with flour that was okay.

I’m going to upload videos later.

Greetings Arthur

1 Like

Here are two videos of the first tests today.:+1:


Hi. Juste put F10 to decrease the feedrate. Finally what kind of firmware do you use?

1 Like

Okay I’m going to try that.
I always searched for speed but not for federate that was my mistake.:sweat_smile:

I’m using the marlin firmware for Arduino. It’s from the link that Klaus send you.

Setting max feedrate (M203) is good if you have a top limit, but it will use the feedrate from the previous command (in units/min, remember your units are 6 per rotation). Just adding G1 F60 at the top will limit the moves for the whole file. It will still whip around a lot faster at the larger distances.

F60 is 10 turns/min or 1 turn in 6s.
F100 is about 16 turns per minute or 1 turn in 3.6s
F10 is 1.6 turns per minute or 1 turn per 40s.
F36 is 6 turns per minute or 1 turn per 10s.

Hopefully those will help you guess a good speed.

If you have a screen, you can also adjust the feedrate multiplier while it is running.

1 Like

Also, that movement looks great. I wish it was a bit straighter. I wonder if there is some backlash somewhere. Or maybe the two arms are not the exact same length.

I use baking soda. It is very crisp but it can clump.

1 Like

What does it look like when it homes?

1 Like