ok merci
c’est quand même super ce logiciel Sandify , sans votre travail , on aurait pas ces tables
Thanks for posting the config files. This has helped me immensely. In fact it inspired me to give it a go!
I know that this is an older post but I do have a question:
printer.cfg calls “Wipe_default_F6000.gcode”. I do not understand why a sand table needs a wipe. So perhaps this is just a name and “Wipe_default_F6000.gcode” actually performs another task?
Thanks
Todd
Impressive!
It is just a wipe, not really needed for normal operation.
I included it just in case I want to draw a pattern that doesnt fill the complete space and this is a shortcut to clean up before drawing that.
I ended up not using it because all my paterns fill the complete area.
One could replace the Wipe patern with a demo patern to show off for guests
Hello Carsten ,that’s a very impressive work to have done.
i’m new to this mechanism and Code Building .
Can you please share a 3d Files of the mechanism , details of electronics BOM , and CODE to RuN
Hello Garry,
I cant give you a full breakdown of all the electronics components, some parts are just what I had left from other projects. That beeing said, here are the main needed electronics components
- raspberry pi zero 2 w (or any pi with wireless)
- cheap board to drive 2 steppers (I used the BTT SKR mini, but that is overkill - just make sure you have silent stepper drives like the TMC2209 on board or added)
- 2x Stepper Motors (Nema 17)
- 2x optical endstops
- power supply 12V-24V with enough power to drive all the components
- DCDC converter to 5V for the PI and Neopixel (those are power hungry, choose accordingly)
Software:
Klipper to run the Gcode, Somewhere in this thread I provided a .zip with the config and macros for Klipper.
3d files as a whole are currently not ready for export - and would probably not be too helpfull as I built the table from scratch. The mechanic is somewhat impacted by that. For example the main plate is a laser cut part that is also integral to the stability of the table.
Most people have a table that they want to convert and end up designing their own mechanic.
I am happy to give my 2 cents when you have a draft for your table.
I reaaly love what you accomplished here, now I want to build a second table just for fun
I’ve just converted my sand table from marlin to klipper and maybe I missed it, but how do you manage to draw continuously with klipper ? I’ve looked for a "playlist"function and could not find one unless using octoklipper.
Thank you.
Hello Jerome,
maybe I missed it, but how do you manage to draw continuously with klipper ?
define a END_PRINT macro and put M24 in there
[gcode_macro END_PRINT]
M23 "next_file" #select file
M24 #print
for more details & optional delay please see post #28 , I uploaded my config with macros for continuous print there
Thank you so I missed it then
I’m discovering Klipper and so far, I love it, very kind of you to share you config files, that will help me a lot !
Hello everyone. I read this tread with much interest and seeing the various photos it seems to me that there have been different configurations of the mechanism. I would like to try to recreate the same table as well. Could someone make a summary of the final solution that was created? I thank you in advance. Please consider that I am not very familiar with electronics but dabble in DIY and 3d printing.
Moin, ich wollte mich erstmal Bedanken, durch deine Post bin ich selber dazu gekommen mein erstes eigenes Projekt anzufangen und nun auch fast fertig zu stellen. Ich möchte gerne, dass der Drucker mehrere Gcodes hintereinander ausführt. Ich habe gesehen, dass du es in deinen Macros andeutest durch Multiprint. Ich verstehe leider nur nicht wie es dann weiter gehen soll. Nachdem ein Gcode durchgelaufen ist, hört der “Drucker” auf und wartet auf weiter eingaben. Ich habe sowohl mit multiprint enable und disable getestet. Falls du dazu einen Lösungsweg hast, würde ich diese Dankend entgegennehmen
Moin Jonas,
hast du ein “END_PRINT” macro definiert? Das wird immer am Ende eines Drucks ausgeführt.
Darin kannst du im einfachsten Fall mit M24 einen neuen Druck starten.
Ich habe eine optionale Pause zwischen den Prints, die ich über ein delayed_gcode Block realisiere:
[gcode_macro END_PRINT]
gcode:
pos_norm #normalize posision to near origin (scara - comment out if XY)
{% set continuous_print = printer.save_variables.variables.continuous_print|float %}
{% if continuous_print == 1 %}
{% set printgaptime = printer.save_variables.variables.printgaptime|float %}
UPDATE_DELAYED_GCODE ID=printdelay DURATION={printgaptime}
M118 timer to next print started, time: {printgaptime} s
{% endif %}
[delayed_gcode printdelay]
gcode:
{% set idle_state = printer.idle_timeout.state %}
{% if idle_state == 'Printing' %} #currently printing
{action_respond_info("atempted automatic print after set delay - print already ongoing")}
{%else %}
select_file #get new file
M24 #start print
{action_respond_info("new print startet after set delay")}
{% endif %}