Hi All,
I have question. I am currently designing a tool changer upgrade. This tool changer has a elevator mechanism to elevate parked tool heads to maintain the usable print area. The elevator is operated by two steppers. The tool changer also uses a stepper to lock the tool head. I other words, I need two additional axes in Marlin.
There are two options as far as I can see. The bad way and the right way.
The bad way
In the past (Marlin 1.1.0-RC6) I used the bad way. I create my own G-code number and programmed delays in combination with extDigitalWrite. I also added some genuine G-code commands in-between so all axes worked in sequence. This created one G-code command which did an entire sequence of things with many different axes. I had to add a refresh_cmd_timeout() every now and then to prevent the watchdog from shutting everything down due to the delay commands. The bad way worked like a charm. It had some pros and cons. The pros was that it was easy programming and migrating it to a new version of the firmware was relatively simple. I only added a new G-code command. The downside was that the delays temporary locked up all other systems in de printer which was acceptable at the time.
I am currently working with Marlin 2.0. Refresh_cmd_timeout() does not longer work. Therefore the watchdog shuts me down. I am not entirely sure if the bad way is still possible.
The good way
The good way will be to add the axes in a similar way to adding additional extruder axes. I never tried this. I have no idea if it can be done relatively easily.
I would love to hear your advice on this. The bad way which temporary locked all other system would still be acceptable to me. As long as it doesn't create a fire hazard. The good way would be awesome if it is doable.
I have question. I am currently designing a tool changer upgrade. This tool changer has a elevator mechanism to elevate parked tool heads to maintain the usable print area. The elevator is operated by two steppers. The tool changer also uses a stepper to lock the tool head. I other words, I need two additional axes in Marlin.
There are two options as far as I can see. The bad way and the right way.
The bad way
In the past (Marlin 1.1.0-RC6) I used the bad way. I create my own G-code number and programmed delays in combination with extDigitalWrite. I also added some genuine G-code commands in-between so all axes worked in sequence. This created one G-code command which did an entire sequence of things with many different axes. I had to add a refresh_cmd_timeout() every now and then to prevent the watchdog from shutting everything down due to the delay commands. The bad way worked like a charm. It had some pros and cons. The pros was that it was easy programming and migrating it to a new version of the firmware was relatively simple. I only added a new G-code command. The downside was that the delays temporary locked up all other systems in de printer which was acceptable at the time.
I am currently working with Marlin 2.0. Refresh_cmd_timeout() does not longer work. Therefore the watchdog shuts me down. I am not entirely sure if the bad way is still possible.
The good way
The good way will be to add the axes in a similar way to adding additional extruder axes. I never tried this. I have no idea if it can be done relatively easily.
I would love to hear your advice on this. The bad way which temporary locked all other system would still be acceptable to me. As long as it doesn't create a fire hazard. The good way would be awesome if it is doable.