How to duplicate the extruder movement through the i2c?

I would like to implement the Diamond Hotend with 3 colors to any existing 3D Printer electronic. And to do this i need 3 extruder motors or 5 extruder motors in case of a 5 color nozzle.
My idear is to use a RAMPS board with an Arduino Mega and connect it to the existing electronic with the i2c connector. Almost all 3D printer electronics in the market already have an i2c port!
The RAMPS board have outputs for upto 5 stepper motors, and this way it can be used as an add-on board to implement any multicolor nozzle, like the Diamond Hotend to any existing electronics.
One might say, why not use RUMBA or other electronics which already have 3 extruders onboard, but it will be very costly and time consuming if you would have to replace all electronic in the 3D printer and you still haven't the possibility of 5 colors.

I need the firmware to duplicate the E0 extruder step and dir via i2c and a gcode command to set the RGB color or CMYK color.
It's easy to send any gcode command via i2c, but the E0 extruder step and dir are within an interupt rutine, and prevent me using the wire commands.
Can i send the "printer::extruderStepsNeeded" before the interrupt is called and how do i implement it in the firmware?


  • I think I2C is too slow and also quite error prone. Why not simply using a board with 8 stepper drivers. The only one I know is the Azteeg X3 Pro. That would solve all problems without weeks of testing and cursing. Or use a expansion port to make a extra driver port. It is not that we are lacking lines.
  • Thanks for the reply.
    I know about other electronics solutions, but to avoid replacing all the 3D printers electronic, it could be an easy fix with an add-on board where you just connect it to the i2c port.
    But i will forget about it, if you think the i2c port is too slow.

Sign In or Register to comment.