
- One of the biggest changes to the new firmware is the addition of slave PID temperature control. This allows the main Arduino Mega to focus all its attention on the movement and acceleration computations, while the slave Arduino is busy doing PID calculations to regulate all the temperatures. Using this method, I was getting a 20% performance increase on the master firmware which means less pausing between print commands. This leads to improved print quality and smoother motion. See the readme file in the sourceforge release for details about the slave setup. In addition to the option for slave PID control, the internal PID control on the master firmware has also been updated so that it can control up to 3 different temperatures. This is intended to be used with 2 extruders and a heated build table. I don't think many users will require more than that at this point in time, but it is very easy to add more if required.
- Another big change in the v1.4 release that has been very helpful to me is the addition of absolute position logging via an attached EEPROM. This allows the machine to retain its knowledge of position even after the machine is powered off. While the user coordinate system may change from build to build, an additional absolute coordinate system has been added, and this is what is stored on the EEPROM. I have tested this using the 512 byte EEPROM already included with most Arduinos as well as an external AT24C1024 connected via I2C. While I am currently only using this storage for the absolute positioning variables, there is lots of potential here for new features in the future.
- There has also been a lot of changes to the multi-headed operations included in the firmware. Now that I have a machine that I can test these functions on, I have been able to improve the routines and fix any minor bugs that were present. I have successfully used these functions in several multi-tool builds that I have done and they are very simple to implement. My next big task in this arena is likely going to be figuring out how to generate multi-funtion Gcodes that can be used for doing both milling and prototyping or something of that nature. At the moment I am just splicing together 2 seperature Gcodes with the appropriate tool switching commands in between. Automating this process would be a nice addition and I believe skeinforge has the ability to calculate both additive and subtractive toolpaths so it should be possible.
If you want more details, the full list of changes from the readme file in the sourceforge release is below
- Added slave temperature control so that the master Arduino can allocate all its resources to handling the machine movement and not dealing with PID temperature control, see the new Hydra_Slave_Temp_Control sketch for the slave firmware and be sure to edit the master firmware to use slave control as well
- Added M301 and M302 commands so you can easily check to make sure your slave Arduino is communicating to the master correctly
- Internal PID control (if you chose to not use slave control) is now updated so that up to 3 temperatures can each be PID controlled by the master (extruder 1, extruder 2, and heated table)
- EEPROM position logging so that absolute positions can be retained even after being powered off, exiting the GUI triggers this to happen (M900 command)
- Added G80 and G81 drill cycle commands for intended use with PCB milling (advanced drill cycle operations not currently supported), this is untested though so use at your own risk!
- Added support for Ncodes at the beginning of each line with the program line as the parameter (ie "N51 G1 X1.00 Y0.00 Z0.00 F30") as programs like MasterCAM like to add this in the gcode file
- Added M120 and M121 codes to run the stepper extruder forward and backward, can use these to pull filament backwards at the end of a move to prevent excess nozzle oozing or to start filament flow at the beginning of a layer
- Added a G5 jog gcode for simple movements without needing to know your current position
- Added ability to jog individual Z-axes using the T18 command without triggering the switch_tool routine
- Added a M6 tool change Gcode, the continue_pin button must be pressed once this is done to continue
- added M500 Gcode command that waits for user confirmation (by pushing the continue_pin button) before proceeding
- Limit switch current position handling updated to give more accurate end positioning
- Extruder federate calculations updated to provide better results with our current setup (0.5mm nozzle)
- sticky federates are now supported
- minor bug fixes to multi-headed tool operations (Tcodes) now that I actually have a machine to test them on
- several updates to the startup and exit routines
- updated steps_to_take variables to be longs instead of integers because users with high microstepping rates were able to overrun the integer data types on long moves (thanks martin!)
- stepper motor driver enable logic can now be swapped for different motor drivers so that HIGH or LOW can be used to enable the driver
As always, the release files can be downloaded from the Hydra-MMM Sourceforge page at https://sourceforge.net/projects/hydra-mmm/. Give it a try and let me know what you think!
Now, onto the second reason for this post; finding some beta testers to help me improve this firmware! The firmware has a lot of different functions, and for that reason there is a lot that needs to be tested. While most users don't have a 4-headed machine, rapid prototypers and homemade CNC machines are both relatively common. If anyone out there is interested in helping out with testing or developing the Hydra-MMM software or firmware, please email me at hydra.mmm.project@gmail.com or shout out in the comments!
Tool change, Awesome!
ReplyDeleteHi,
ReplyDeletecan you help me to setup the environment ?
I try during 2 hours without success.
I followed =>
1) copy the Libraries (in a "libraries" folder) into "C:\Users\Ulysse\Documents\Arduino" ..
This path is set as the sketchbook location ..
2) open the file "Hydra_Firmware_v1_4"
located on my computer in : "D:\Mes documents\Mes Projets\reprap\software\firmware\Hydra-MMM_v1_4\Hydra-MMM_v1_4\Arduino\Hydra_Firmware_v1_4"
3) Then "Verify/compile" menu ...
I receive this messages :
"
o: In function `cpwStepper::steptype(int)':
C:\Users\Ulysse\AppData\Local\Temp\build8398361430226792014.tmp/cpwStepper.cpp:54: multiple definition of `cpwStepper::steptype(int)'
C:\Users\Ulysse\AppData\Local\Temp\build8398361430226792014.tmp\cpwStepper\cpwStepper.cpp.o:C:\Users\Ulysse\Documents\Arduino\libraries\cpwStepper/cpwStepper.cpp:54: first defined here
o: In function `cpwStepper::disable()':
C:\Users\Ulysse\AppData\Local\Temp\build8398361430226792014.tmp/cpwStepper.cpp:45: multiple definition of `cpwStepper::disable()'
C:\Users\Ulysse\AppData\Local\Temp\build8398361430226792014.tmp\cpwStepper\cpwStepper.cpp.o:C:\Users\Ulysse\Documents\Arduino\libraries\cpwStepper/cpwStepper.cpp:45: first defined here
o: In function `cpwStepper::takestep(unsigned char)':
C:\Users\Ulysse\AppData\Local\Temp\build8398361430226792014.tmp/cpwStepper.cpp:67: multiple definition of `cpwStepper::takestep(unsigned char)'
C:\Users\Ulysse\AppData\Local\Temp\build8398361430226792014.tmp\cpwStepper\cpwStepper.cpp.o:C:\Users\Ulysse\Documents\Arduino\libraries\cpwStepper/cpwStepper.cpp:67: first defined here
o: In function `cpwStepper':
C:\Users\Ulysse\AppData\Local\Temp\build8398361430226792014.tmp/cpwStepper.cpp:21: multiple definition of `cpwStepper::cpwStepper(int, int, int, int, int)'
C:\Users\Ulysse\AppData\Local\Temp\build8398361430226792014.tmp\cpwStepper\cpwStepper.cpp.o:C:\Users\Ulysse\Documents\Arduino\libraries\cpwStepper/cpwStepper.cpp:21: first defined here
o: In function `cpwStepper':
C:\Users\Ulysse\AppData\Local\Temp\build8398361430226792014.tmp/cpwStepper.cpp:21: multiple definition of `cpwStepper::cpwStepper(int, int, int, int, int)'
C:\Users\Ulysse\AppData\Local\Temp\build8398361430226792014.tmp\cpwStepper\cpwStepper.cpp.o:C:\Users\Ulysse\Documents\Arduino\libraries\cpwStepper/cpwStepper.cpp:21: first defined here
"
Thanks in advance, for any help ..
ReplyDeleteRegards,
I was wondering if I could build the Hydra. If so, do you have a parts list available? It's really cool but I just need to know what I need to build it. Thanks.
ReplyDeleteHi Clayton,
ReplyDeleteI've been wanting to build myself a reprap for a few years, but what i wanted more was a CNC mill. Your design is exactly what i want. If you can, please email me so i can ask you some more questions about it.
Thanks, -Andrew
Keen101 [at] gmail [dot] com.