Daisy Chaining Controllers via I2C possible

So maybe this is not possible but I figured I should ask the pro's. I am looking at the Azteeg X3 PRO. I have my hypercube frame built (might as well call it a SuperCube, 900mm x 900mm x 1200mm print volume).

I am using 1 X stepper, 1 Y stepper, double Z steppers, and right now until I find out otherwise, 4 Extruders. What I would like to be able to run is 6 or more extruders without using shift registers or multiplexing. I have done a little reading and maybe I2C can be used to run a second x3 pro connected via I2C or do I have the I2C thing completely misunderstood?


  • While you can write software doing I2C to second board I think I2C is simply too slow to do what you need here. Stepper interrupts need to be very fast and work in interrupts, which you can not do that way. Not sure if you have enough temperature input/output but adding a external stepper driver just requires 3 extra pins whcih you can also take from multi purpose heaters or even xyz max endstop if you only use min endstops. So adding one more stepper is easy. Just needs a extra board for wiring power etc.
  • so what would be the best solution to run say 10 stepper motors. 6 of which are extruders?
  • Reason I am wanting to run so many extruders is for a large multicolor arch building print for an Architect friend of mine. Hoping to get in the door with this to make a little extra $$
  • You do not have enough pins I think for 10 extruders. You also need heater outputs to control. So I guess regardless of the solution you need C++ programming skills.

    I think you need a hardware solution - extra board for steppers, heater outputs (at least some) and some extra analog inputs or use a digital temperature input, also these often conflict with SPI. Then make extruder selection map the same 3 pins to enable/dir/step or maybe better only dir/step. For enable you can use own pins or all share same pin, but that would mean all are on same time drawing power.

    Or you use something similar to Prusa MMU2 which can in theory handle any number of filaments, but it requires big rewriting to write all the sensing and switching logic and how often this fails is also a question. You have quite a lot of switches, so for printing your solution is surely easier and faster.
  • Ok so this is definitely stepping outside the box...

    I have a Christmas light controller that is capable of sending out 48000 channels worth of data. Each channel is an is an on/off at a given power level. So I know nothing exists but what if something similar could be made for 3d printers. I mean the light controller manufacturer was able to independently control 48000 channels, why couldn't we use the same type of architecture to be able to control 16000 stepper motors? (1 channel for each enable, step and direction)Theoretically of course. The controller has an IP address so could repetier be reconfigured to send the 48000 on/offs to the controller?

  • Couldn't you share the step/direction pins to all stepper drivers and only use separate enable pins to direct a specific stepper?
  • The light controller uses a simple trick. Each chip interprets the first x byte, any data following after it are ignored and send to next chip. That way you can set all but the more you have the longer it takes. Now light do not change color 10000 times per second so that is no problem.

    For steppers enable must stay on as long as they are used or you loose position. That is the slow pin so to speak.
    dir and especially step are changed it high frequency depending on speed. These are what need the dedicated pins for speed. They are modified inside a timer that has to be very quick. Speeds > 10000Hz are even to quick for AVR so we toggle the pin simply multiple times in same interrupt. Using spi/I2C in this function is strictly forbidden. These may only be used in the main thread to ensure only one component is talking at a time with connected devices.

    What you can do is make extruder board where only one pin is used for dir/step but you have a way to set to which stepper the signals are routed. So on extruder changes you adjust routing info and can simply use same step/dir for all motors. You can also handle enable signal in the extruder select function and map that also. That way you have 8 or 16 extruders manageable with same number of pins. Leaves only the problem of temperature sensors and heater outputs.
Sign In or Register to comment.