Taz 5 + BLTouch [Project]

I’ve merged the changes and compiled it successfully, just need to test it. My wife wants this things called dinner though and I really love her so I might get back to this today, maybe.

Update:

I’m still so new to Github… I was on the wrong branch and have no idea how to properly fork/branch a repo so I’m starting one myself and hope that’s OK.

AHHH!!! Formatting in OP is broken and there’s nothing wrong with the PHP but it’s acting like I’m escaping the first list=a and AHHH


On a related note I’ve added a cool post processing feature to the OP for those that use Octoprint and S3D that’s enabled from the latest version I’m testing and hope to share soon.

(Please someone save the poor OP, it was formatted so beautifully before)

question is if I change the name to taz 6 in the lulzbot config - like you changed it to taz 5 will that effect the changes you’ve made to the auto leveling routine you’ve created- or is that global for all printers?

So, hopefully all I have to do is comment out the z end stop line as mentioned by marcio, and make my temp control changes?

-john

saved

You’ll want to comb through the Configuration.h file for any thing that might affect the taz 6 specifically. Since the taz 5 doesn’t use bed leveling many of the calls in this section don’t affect it but that will probably be different for the Taz 6. It may take some trial and error.

The X and Y extruder offset will probably be different but you might get lucky since the assembly is based on the taz 6 design.

#define X_PROBE_OFFSET_FROM_EXTRUDER LULZBOT_X_PROBE_OFFSET_FROM_EXTRUDER -32 // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER LULZBOT_Y_PROBE_OFFSET_FROM_EXTRUDER -30 // Y offset: -front +behind [the nozzle]

You’ll almost definitely need to change the bed probe position since the Taz 6 is slightly different here

  #define LEFT_PROBE_BED_POSITION 20
  #define RIGHT_PROBE_BED_POSITION 260
  #define FRONT_PROBE_BED_POSITION 20
  #define BACK_PROBE_BED_POSITION 240

Be really careful when homing Z and running G29 the first time, manually trigger the bltouch to make sure everything works to prevent damage to the printer.

I’ve been editing in 1.0.6 - need to get 1.8.3 working - can’t remember how to do that - the link you posted for the libraries is a bit confusing for me? The libraries are in the app package on the mac - vaguely remember following the lulzbot instructions for getting the right stuff in the right place for 1.0.6… also where the hell is pins.h? I need to change the pin for the extruder temp sensor…

I have the OP copied if you need it…

also the video you posted showed a 3x3 row of bed probes - little confused how the bed probe positions affect this?

-john

It has been a while since I looked at the Taz 6 firmware, but you might need to change where the Taz 6 thinks home position is. Otherwise it might try to probe on the switch off on the side of the heat bed, and miss the plate with the BL touch.

Whoops… Yea, that’s wrong and super confusing. OP corrected.The folders included with the arduino package will not compile due to some lulzbot specific changes. Once you replace the folders don’t update your libraries, arduino will ask every time you open it.

This file?

The probe position tells it where the corners of the bed are and it creates the gird from those corners. This is particularly important for the Taz 6 since it will try to probe off the bed resulting in a disaster. The X & Y probe offset makes sure that when the mesh grid is created the firmware knows where the nozzle is compared to the probe. The Taz 6 uses the nozzle as its prob so by default there is no offset but this won’t be true with the BLTouch. Side note, this FW is using a 4x4 grid now.

When I enabled to BLTouch the Taz 5 switched to it as it’s z end stop and started using safe homing to the corner of the bed. The Taz 6 might not do this but I think it will. He’ll just need to watch it closely and home from at least 100mm up to see what it will try to do.

So this is in lulzbot_conditionals:

/*********************** AUTOLEVELING / BED PROBE *******************************/

#if defined(LULZBOT_USE_AUTOLEVELING) && defined(LULZBOT_MINI_BED)
#define LULZBOT_LEFT_PROBE_BED_POSITION 0
#define LULZBOT_RIGHT_PROBE_BED_POSITION 164
#define LULZBOT_BACK_PROBE_BED_POSITION 162
#define LULZBOT_FRONT_PROBE_BED_POSITION -6

#elif defined(LULZBOT_USE_AUTOLEVELING) && defined(LULZBOT_TAZ_BED)
#define LULZBOT_LEFT_PROBE_BED_POSITION -9
#define LULZBOT_RIGHT_PROBE_BED_POSITION 288
#define LULZBOT_BACK_PROBE_BED_POSITION 289
#define LULZBOT_FRONT_PROBE_BED_POSITION -9
#endif

#if defined(LULZBOT_USE_AUTOLEVELING)
#define LULZBOT_NOZZLE_CLEAN_FEATURE
> // Select type of leveling to use:
> //#define LULZBOT_AUTO_BED_LEVELING_BILINEAR
#define LULZBOT_AUTO_BED_LEVELING_3POINT
#endif

#if defined(LULZBOT_AUTO_BED_LEVELING_3POINT)

// Experimental three point leveling.
#define LULZBOT_ABL_PROBE_PT_1_X LULZBOT_LEFT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_1_Y LULZBOT_FRONT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_2_X LULZBOT_RIGHT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_2_Y LULZBOT_FRONT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_3_X LULZBOT_RIGHT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_3_Y LULZBOT_BACK_PROBE_BED_POSITION
#elif defined(LULZBOT_AUTO_BED_LEVELING_BILINEAR)
// Traditionally LulzBot printers have employed a four-point leveling
// using a degenerate 2x2 grid. This is the traditional behavior.
#define LULZBOT_GRID_MAX_POINTS_X 2
#define LULZBOT_GRID_MAX_POINTS_Y 2
#if defined(LULZBOT_IS_MINI)
// We can’t control the order of probe points exactly,
// but on a Mini setting this makes the probe look better.
#define LULZBOT_PROBE_Y_FIRST
#endif
#endif

/* Auto-leveling was introduced on the Mini and TAZ 6.

  • Define probe parameters related to bed leveling,
  • e.g. the washers on the bed. These are confusingly
  • named Z_MIN_PROBE in Marlin. The Z-Home switch
  • is called Z_MIN_ENDSTOP
    */
    #if defined(LULZBOT_USE_AUTOLEVELING)
    #define LULZBOT_FIX_MOUNTED_PROBE
    #define LULZBOT_PROBE_POINTS_OUTSIDE_OF_BED
    #endif > // LULZBOT_USE_AUTOLEVELING

#define LULZBOT_PROBE_DOUBLE_TOUCH
#define LULZBOT_X_PROBE_OFFSET_FROM_EXTRUDER 0
#define LULZBOT_Y_PROBE_OFFSET_FROM_EXTRUDER 0
#define LULZBOT_Z_PROBE_OFFSET_RANGE_MIN -2
#define LULZBOT_Z_PROBE_OFFSET_RANGE_MAX 5
#define LULZBOT_XY_PROBE_SPEED 6000
#define LULZBOT_Z_PROBE_SPEED_SLOW (160)
#define LULZBOT_Z_PROBE_SPEED_FAST (8
60)
#define LULZBOT_Z_CLEARANCE_DEPLOY_PROBE 5
#define LULZBOT_Z_CLEARANCE_BETWEEN_PROBES 5

The Taz 6 uses “LULZBOT_USE_AUTOLEVELING” - I’m thinking I should change this to bilinear in the Taz 6 section at the top:

#if defined(LULZBOT_Oliveoil_TAZ6)
#define LULZBOT_CUSTOM_MACHINE_NAME > “LulzBot TAZ 6”
#define LULZBOT_LCD_MACHINE_NAME > “TAZ 6”
#define LULZBOT_IS_TAZ
#define LULZBOT_TAZ_BED
#define LULZBOT_USE_LCD_DISPLAY
#define LULZBOT_USE_AUTOLEVELING
#define LULZBOT_USE_MAX_ENDSTOPS
> //#define LULZBOT_USE_HOME_BUTTON
#define LULZBOT_USE_NORMALLY_CLOSED_ENDSTOPS
#define LULZBOT_BAUDRATE 250000
#define LULZBOT_UUID > “845f003c-aebd-4e53-a6b9-7d0984fde609”
#endif

This from pins.h in 1.0.6:

/*****************************************************************

  • Rambo Pin Assignments
    ******************************************************************/
    #if MB(RAMBO)
    #define KNOWN_BOARD
    #ifndef AVR_ATmega2560
    #error Oops! Make sure you have > ‘Arduino Mega 2560’ > selected from the > ‘Tools -> Boards’ > menu.
    #endif

#define LARGE_FLASH > true

#define X_STEP_PIN 37
#define X_DIR_PIN 48
#define X_MIN_PIN 12
#define X_MAX_PIN 24
#define X_ENABLE_PIN 29
#define X_MS1_PIN 40
#define X_MS2_PIN 41

#define Y_STEP_PIN 36
#define Y_DIR_PIN 49
#define Y_MIN_PIN 11
#define Y_MAX_PIN 23
#define Y_ENABLE_PIN 28
#define Y_MS1_PIN 69
#define Y_MS2_PIN 39

#define Z_STEP_PIN 35
#define Z_DIR_PIN 47
#define Z_MIN_PIN 10
#define Z_PROBE_PIN 22
#define Z_MAX_PIN 30
#define Z_ENABLE_PIN 27
#define Z_MS1_PIN 68
#define Z_MS2_PIN 67

#define HEATER_BED_PIN 3
#define TEMP_BED_PIN 2

#define HEATER_0_PIN 9
#define TEMP_0_PIN 3

#define HEATER_1_PIN 7
#define TEMP_1_PIN 1

#ifdef BARICUDA
#define HEATER_2_PIN 6
#else
#define HEATER_2_PIN -1
#endif
#define TEMP_2_PIN -1

#define E0_STEP_PIN 34
#define E0_DIR_PIN 43
#define E0_ENABLE_PIN 26
#define E0_MS1_PIN 65
#define E0_MS2_PIN 66

#define E1_STEP_PIN 33
#define E1_DIR_PIN 42
#define E1_ENABLE_PIN 25
#define E1_MS1_PIN 63
#define E1_MS2_PIN 64

#define DIGIPOTSS_PIN 38
#define DIGIPOT_CHANNELS {4,5,3,0,1} > // X Y Z E0 E1 digipot channels to stepper driver mapping

#define SDPOWER -1
#define SDSS 53
#define LED_PIN 13
#define FAN_PIN 8 > //6 for dual extruder
#define FAN1_PIN -1
#define FAN2_PIN 2
#define PS_ON_PIN 4
#define KILL_PIN -1 > //80 with Smart Controller LCD
#define SUICIDE_PIN -1 > //PIN that has to be turned on right after start, to keep power flowing.

You would want to make sure it’s using bilinear and that you probe positions aren’t the ones listed, this will cause it to probe off the bed and it would probably not be pretty.

    #define LULZBOT_LEFT_PROBE_BED_POSITION       -9
    #define LULZBOT_RIGHT_PROBE_BED_POSITION     288
    #define LULZBOT_BACK_PROBE_BED_POSITION      289
    #define LULZBOT_FRONT_PROBE_BED_POSITION      -9

You could just set the values directly in congifuration.h like I did

Stock Configuration.h using variables

  // Set the boundaries for probing (where the probe can reach).
  #define LEFT_PROBE_BED_POSITION LULZBOT_LEFT_PROBE_BED_POSITION
  #define RIGHT_PROBE_BED_POSITION LULZBOT_RIGHT_PROBE_BED_POSITION
  #define FRONT_PROBE_BED_POSITION LULZBOT_FRONT_PROBE_BED_POSITION
  #define BACK_PROBE_BED_POSITION LULZBOT_BACK_PROBE_BED_POSITION

My Configuration.h using direct values

  // Set the boundaries for probing (where the probe can reach).
  #define LEFT_PROBE_BED_POSITION 20
  #define RIGHT_PROBE_BED_POSITION 260
  #define FRONT_PROBE_BED_POSITION 20
  #define BACK_PROBE_BED_POSITION 240

If you clone my FW you should only need to change some values and maybe replace some variables in Configuration.h then set your printer to the Taz 6 Configuration_LulzBot.h

Change:
#define LULZBOT_Juniper_TAZ5

To: 
#define LULZBOT_Oliveoil_TAZ6

After digging through the FW I’m super excited to see the new taz 7.

Yeah I follow but if you look in the taz 6 def it says “LULZBOT_USE_AUTOLEVELING” which is then defined with all the Taz 6 specific autolevling stuff - I can just change that to “LULZBOT_BED_LEVELING_BILINEAR” then it should not use the specific Taz 6 auto leveling routine and use the one defined in the bilinear auto leveling section - correct?"

I’m in a software disaster trying to get 1.8 to work… ugg what do I need to replace/add spcifically and where can I get the the files?

THANKS!

going to get this working - already designed a mount in fusion…

I believe changing that would do it. Once you’ve finalized the designs, printed, and installed them just compile it and test it out while monitoring it very closely.

I’ve updated to OP with the following:

Firmware- Download zip and extract > https://github.com/SBachman/BLTouch-Taz-5/blob/master/Marlin/Configuration.h

You’ll need to move the “hardware” & “libraries” folder from the extracted pathTO\BLTouch-Taz-5-master\ArduinoAddons\arduino-1.8.3 folder to your Arduino install directory,
overwriting any duplicate files

If you need more or are stuck on something let me know

Sorry to be a stick in the mud…

Please start a new thread for the Taz6+BLTouch mod… its confusing enough to track legacy TAZ 5 mods… :slight_smile:


Kindly replace recent posts for Taz6 development with links to the new thread, also.

While I agree a new thread should be made and said as much earlier I won’t replace my posts with links to the new thread because there’s some good information in these posts that could assist others wanting to modify the firmware for any Taz printer

OK - figured a bunch of stuff out - see PM…

Deleted - irrelevant…

What are you using for you end gcode in S3D?

Got everything sorted but after a print finishes all the moves when I go to start a new print the printer is uttelyr confused - have to reset to get it working again - this is with 1.1.8.10 from the devel website - wondering if you came across the same issue or if I missed something or got too aggressive with //

The display Says “TAZ Printing” after you stop a print in S3D? Must be something between S3D and Marlin?

-john

Sorry for being unresponsive, been busy with life and some other non 3d printer projects.

Here’s my ending script:

M104 S0 ; turn off extruder
M106 S0  ; turn off fan
M140 S45 ; set bed to 45 for part removal
G91 ; Relative positioning
G1 Z10 F800 ; raise z 10mm
G90 ; switch back to absolute positioning
G28 X0 ; home X axis
G1 Y276 F3600 ; bring bed forward
M84 ; disable motors

Additionally I use the following in OctoPrint for “After print job completes”:

M0 S3600 ; wait for button press or one hour
M140 S0 ; turn of bed