-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FR] Quick Tool Change / I2C toolhead #7742
Comments
One piece of code that uses i2c directly is the Marlin includes an i2c bus under the For most cases there's no need to implement a protocol, as in the above examples. The device will already have its address, commands, and replies specified, so you'll only need to poll it periodically. I2C temperature sensingMarlin does ADC conversion using a timer interrupt, but the temperature readings are picked up and used within the program loop. So, using i2c means the ADC parts can be dropped, saving cycles, and I2C Fan controlPretty simple. Marlin doesn't yet encompass the concept of a fan type. They are currently all assumed to be PWM. The stepper interrupt that moves the stepper motors also changes the fan speed. That logic would remain the same, but the new value would be written to a global (for example, Hall effect filament movement and diameter sensorThe Prusa MK3 uses frickin' lasers! Marlin has support for a filament width sensor using an analog pin, and thus ADC. If the sensor is implemented over i2c it saves a lot of computation, even polling 20 times per second. I2C LED Control to indicate heating statusHeating status is displayed automatically in Marlin if you have one of the color LED options enabled, plus
I2C Extruder motor multiplexer (True mixing ?)E motors need to be well-synchronized with the XY motors, so a multiplexer has some limitations. The Prusa multi-extruder system can't do mixing, so it only needs to route stepper signals to one stepper at a time. A multiplexer that included the ability to mix would need a means to set the mixing ratio, and then on-board Bresenham logic to detect input steps, increment and reset counters, and proportionally redistribute steps. Note that from Marlin's perspective there's only one E axis. These are some initial notes on your needs. When someone has the time to work on this, do you have all your hardware components already well-specified? Do you know the i2c addresses and do you have datasheets on how to communicate with these devices? Any guidance you can provide in advance will help to prime the gears. |
here is a quick concept for the print head. I am omitting the extruder motor for now; it can come later. Let me know in case you forsee any issues with this. |
Looks like a very interesting project! I would not choose I2C for remote comms, it will be interesting to see how well I2C works in a noisy environment. It also seems that if you have an MCU, it could perform the functions of the MAX76615 quite easily. I also wonder if you are looking at using AVR as main controller, running steppers over I2C seems like it would push AVR beyond it's limits. |
The stepper(s) when done, will be driven by the MCU directly... they are just switched over I2C. However, that part of the project will come later. Right now, the focus is on only the print head. Regarding the MCU handling the functions of the MAX6615, I understand that; however, since I dont know the direction of the project yet, I have split them into two seperate parts. |
Ok, I thought you were more advanced with the hardware design, it sounds like you are at the early planning stage. I know there is a tendency to drive ahead with the "easy stuff" first, but I would establish a Proof of Concept first with the difficult parts prototyped to verify it is feasible. You refer to "VCC", that is the logic voltage, i.e. 5V or 3.3V. I looks like you actually mean 12V here. |
@bobc you are right; it is not 5V, it is actually 24V. The fan control is most probably going the MAX6615 route; I have ordered parts to prototype. |
My 2cents. I2C is a short range bus, which has minor EMI immunity. I spent several weeks going through the various bus options, to come up with a better long term solution to the numerous devices and displays that are already in use, and find a future proof solution. I have proposed a Feature Request for Marlin 2.x to have CAN support #7735 |
Feature Request
Hello,
My team and I would like to have support for a 'toolhead' we are developing. Its primary features are:
The total number wires that will run from the controller board to the extruder head will be:
We would be bringing the STEP and DIR for the extruder motor channel to the extruder controller board... An I2C processor will turn those two signals into several physical stepper motors...
We would like to understand how the feature request works; we dont mind attaching a reward for the same.
The entire project will be OSHW.
Thanks!
The text was updated successfully, but these errors were encountered: