Narwhal - a custom TAZ firmware

Hi there,
I’ve created a new firmware for my TAZ4+ (forked from Marlin 2015Q1) to help me define my current “machine setup” and save some time re-flashing the firmware every time I change from dual to single extruders. The firmware is based on 2 firmware versions I’ve merged together from the TAZ5 latest and the dual_extruder_dual_fan_control.

In addition I’ve added some features to ease up the UX, such as: inline editing of values, all filament configuration stored in the EPROM, extrude from both extruders in the “move axis” menu, ability to config PIDC per extruder, store the X,Y offset of the second extruder on the printer + some more.

I’m actively developing the firmware on github: and would love to get some feedback + ideas for new features to make it easier to handle the printer from the LCD.


good job

Would you mind if I use your source to try out a few ideas on better Z axis control. I could create my own fork but Id rather be part of a team all working on different sections. I’m just starting to dig into the movement routines and have seen a few holes that should not be that difficult to address. The biggest problem I see is missed steps on the Z axis are not corrected, if at all, until the next Z position command at the start of a new layer. I see no reason the start of each line can’t have an absolute Z value, giving the printer a change to to correct at the next line segment instead of ruining the entire layer, and often the whole print. I also discovered that is there are less than 5 Z steps they are ignored until the next movement block. This seems to me to inherently propogate errors. Ideally I’d like to see a method to sanity check All axis’s against a another model, perhaps built using a rotary encoder to maintain an actual distance from home instead of relying on a software model that doesn’t account of actual movement. If a stepper is told to move 7mm but misses half the steps currently you might as well abandoned a print. A longer range goal would be a way to stop when and error occurs and allow te code to rewind to a set point and continue.

If anyone else is already working on such things please let me know, or let me know if you are interested in helping. I’m retired now and have the time and interest. Plus I have years of development experience in both strict software and firmware. Dont tell anyone but I’m even comfortable under Windows but would rather work in Linux.

The great product and open nature of the Taz led me to choose it for my first 3d printer so any contributions I can make will help TAZ owners first. Thanks to Lulzbot for such an easy product to improve without tons of reverse engineering. I spent a long time hacking automotive controllers with very little real information so open products are so much more fun :slight_smile:

Of course, you are welcome to contribute + I’d love to be involved as well. let me ping you directly so we can work out the details.

I haven’t made a lot of progress because something weird is happen in the lastet 2015Q2 Taz firmware. My X microswitch seems to be ignored when homing and the carriage hammers against the end stop for about 20 secs. I’m trying to track the down now. bed auto leveling also seems a little buggy, normally starting prints with the nozzle 4 mm off the bed. When I get those ironed out I’d like to merge your changes into the 2015Q2 base, along with my fixes and a few tweaks like a HOME_Z_ONLY menu option. Single command options like G28 Z0 are really easy to add, so if more are desired just let me know which ones.

Ok, some idiot not to be named installed new roller micro switches and installed the X axis switch upside down so the connections were on the wrong end. Who would do such a thing?