jeffeb3 / sandify

web based user interface to create patterns that could be useful for robots that draw in sand with ball bearings.
MIT License
197 stars 35 forks source link

Dual speed operation to speed up edge motion #215

Open mrehorst opened 3 years ago

mrehorst commented 3 years ago

A couple weeks ago I posted an issue/suggestion about enabling Sandify to allow input of two speeds, a slower one to preserve pattern detail while drawing, and a faster one to reduce time spent traveling along the edges of the table. The issue didn't generate much interest and was closed, probably because of the limited range of speeds available on most sand tables that use stepper motors.

However, if you build a table using servomotors, you can operate at a very wide range of speeds (my table can hit 2000 mm/sec), so speeding up edge motion can be a significant benefit. Maybe as time passes, more people will start to use servomotors and dual speed operation will be a more valuable feature to add to Sandify.

In the meantime, for anyone who may have a table using servomotors, or anyone who wants to experiment with a stepper driven table, I have written a Perl program that does the job. Get it here.

It's only the second thing I have ever programmed in Perl, so it's crude and has no error trapping, but it appears to work exactly as expected, as long as you give it sensible input. I put in a lot of comments so it would be easy to follow the program and modify it.

Here's a video of part of a pattern that has been processed with dual_speedify.pl. The drawing is running at 100 mm/sec and the edge motion is 1000 mm/sec, acceleration is 10k mm/sec^2.

mrehorst commented 11 months ago

The latest changes to Sandify broke dual_speedify.pl so I updated it and it is working fine again. The new version of the program is called dual_speedifyv2.pl and [it can be downloaded here.](https://drive.google.com/file/d/1YvNxlG8EMJNhY5F8AI-JJnb9ReFX86n/view?usp=drive_link)

sample_01

I put dual_speedify_v2.pl in my downloads directory where Sandify puts pattern files when I export them. Then just start Perl and follow the directions as above. Then you can upload the output file to your sand table and run it with dual speed goodness.