BL Touch with The Beast Printer
I have been trying for days to get the BL Touch to work with my "Beast" printer on a RUMBA board and Repetier V92.
When I enable servo0 my LCD dial rotation quits(the "click" still works though)... if I revert the firmware the dial function returns.
I am hooking the bl touch to the Zmin endstop and the EXP3.
Here are the settings that I've tried... then farther below those are the settings without any changes that work without the sensor.
#define Z_PROBE_Z_OFFSET 0
#define Z_PROBE_Z_OFFSET_MODE 0
#define UI_BED_COATING 1
#define FEATURE_Z_PROBE 1
#define Z_PROBE_BED_DISTANCE 10
#define Z_PROBE_PIN -1
#define Z_PROBE_PULLUP 1
#define Z_PROBE_ON_HIGH 1
#define Z_PROBE_X_OFFSET 2.11
#define Z_PROBE_Y_OFFSET -46.33
#define Z_PROBE_WAIT_BEFORE_TEST 0
#define Z_PROBE_SPEED 5
#define Z_PROBE_XY_SPEED 80
#define Z_PROBE_SWITCHING_DISTANCE 3
#define Z_PROBE_REPETITIONS 2
#define Z_PROBE_HEIGHT .6
#define Z_PROBE_START_SCRIPT ""
#define Z_PROBE_FINISHED_SCRIPT ""
#define FEATURE_AUTOLEVEL 1
#define Z_PROBE_X1 20
#define Z_PROBE_Y1 20
#define Z_PROBE_X2 160
#define Z_PROBE_Y2 20
#define Z_PROBE_X3 100
#define Z_PROBE_Y3 160
#define BED_LEVELING_METHOD 0
#define BED_CORRECTION_METHOD 0
#define BED_LEVELING_GRID_SIZE 5
#define BED_LEVELING_REPETITIONS 5
#define BED_MOTOR_1_X 0
#define BED_MOTOR_1_Y 0
#define BED_MOTOR_2_X 200
#define BED_MOTOR_2_Y 0
#define BED_MOTOR_3_X 100
#define BED_MOTOR_3_Y 200
#define BENDING_CORRECTION_A 0
#define BENDING_CORRECTION_B 0
#define BENDING_CORRECTION_C 0
#define FEATURE_AXISCOMP 0
#define AXISCOMP_TANXY 0
#define AXISCOMP_TANYZ 0
#define AXISCOMP_TANXZ 0
Here is my starting(working) Configuration.h file (before any autolevel changes)
Any help would be appreciated.
/* ======== Servos =======
Control the servos with
M340 P<servoId> S<pulseInUS> / ServoID = 0..3 pulseInUs = 500..2500
Servos are controlled by a pulse width normally between 500 and 2500 with 1500ms in center position. 0 turns servo off.
WARNING: Servos can draw a considerable amount of current. Make sure your system can handle this or you may risk your hardware!
*/
#define FEATURE_SERVO 0
#define SERVO0_PIN 11
#define SERVO1_PIN -1
#define SERVO2_PIN -1
#define SERVO3_PIN -1
#define SERVO0_NEUTRAL_POS -1
#define SERVO1_NEUTRAL_POS -1
#define SERVO2_NEUTRAL_POS -1
#define SERVO3_NEUTRAL_POS -1
#define UI_SERVO_CONTROL 0
#define FAN_KICKSTART_TIME 200
#define FEATURE_WATCHDOG 0
// #################### Z-Probing #####################
#define Z_PROBE_Z_OFFSET 0
#define Z_PROBE_Z_OFFSET_MODE 0
#define UI_BED_COATING 1
#define FEATURE_Z_PROBE 0
#define Z_PROBE_BED_DISTANCE 10
#define Z_PROBE_PIN -1
#define Z_PROBE_PULLUP 0
#define Z_PROBE_ON_HIGH 0
#define Z_PROBE_X_OFFSET 0
#define Z_PROBE_Y_OFFSET 0
#define Z_PROBE_WAIT_BEFORE_TEST 0
#define Z_PROBE_SPEED 2
#define Z_PROBE_XY_SPEED 150
#define Z_PROBE_SWITCHING_DISTANCE 1
#define Z_PROBE_REPETITIONS 1
#define Z_PROBE_HEIGHT 40
#define Z_PROBE_START_SCRIPT ""
#define Z_PROBE_FINISHED_SCRIPT ""
#define FEATURE_AUTOLEVEL 1
#define Z_PROBE_X1 20
#define Z_PROBE_Y1 20
#define Z_PROBE_X2 160
#define Z_PROBE_Y2 20
#define Z_PROBE_X3 100
#define Z_PROBE_Y3 160
#define BED_LEVELING_METHOD 0
#define BED_CORRECTION_METHOD 0
#define BED_LEVELING_GRID_SIZE 5
#define BED_LEVELING_REPETITIONS 5
#define BED_MOTOR_1_X 0
#define BED_MOTOR_1_Y 0
#define BED_MOTOR_2_X 200
#define BED_MOTOR_2_Y 0
#define BED_MOTOR_3_X 100
#define BED_MOTOR_3_Y 200
#define BENDING_CORRECTION_A 0
#define BENDING_CORRECTION_B 0
#define BENDING_CORRECTION_C 0
#define FEATURE_AXISCOMP 0
#define AXISCOMP_TANXY 0
#define AXISCOMP_TANYZ 0
#define AXISCOMP_TANXZ 0
Also I don't know how the endstops are supposed to work after z-probing and auto leveling is set up and working.
1. Are there two z min endstops?... a switch from the original z-min... plus the BL Touch?
2. Does the mechanical switch get moved to act as a z-max? I don't mind having a z-min mechanical switch as well as the bl touch... in that case the mechanical switch could act as a back up in case the the bl touch stops functioning and the z motors don't know when to stop.
I have extra endstop switches I'd like to install as XY and Z MAX switches... but I don't want the Z to go to Z Max on a printer with a 690mm height... but it would be nice to trigger if there is an emergency and also to test the printers dimensions once in a while because I sometimes want to go from 1 extruder to 4 and back again... in that case I wouldn't mind it homing to z max to reset the current printer build volume.
My priority is to get the BL Touch with auto leveling working.
Again any help you can give would be much appreciated.
When I enable servo0 my LCD dial rotation quits(the "click" still works though)... if I revert the firmware the dial function returns.
I am hooking the bl touch to the Zmin endstop and the EXP3.
Here are the settings that I've tried... then farther below those are the settings without any changes that work without the sensor.
#define Z_PROBE_Z_OFFSET 0
#define Z_PROBE_Z_OFFSET_MODE 0
#define UI_BED_COATING 1
#define FEATURE_Z_PROBE 1
#define Z_PROBE_BED_DISTANCE 10
#define Z_PROBE_PIN -1
#define Z_PROBE_PULLUP 1
#define Z_PROBE_ON_HIGH 1
#define Z_PROBE_X_OFFSET 2.11
#define Z_PROBE_Y_OFFSET -46.33
#define Z_PROBE_WAIT_BEFORE_TEST 0
#define Z_PROBE_SPEED 5
#define Z_PROBE_XY_SPEED 80
#define Z_PROBE_SWITCHING_DISTANCE 3
#define Z_PROBE_REPETITIONS 2
#define Z_PROBE_HEIGHT .6
#define Z_PROBE_START_SCRIPT ""
#define Z_PROBE_FINISHED_SCRIPT ""
#define FEATURE_AUTOLEVEL 1
#define Z_PROBE_X1 20
#define Z_PROBE_Y1 20
#define Z_PROBE_X2 160
#define Z_PROBE_Y2 20
#define Z_PROBE_X3 100
#define Z_PROBE_Y3 160
#define BED_LEVELING_METHOD 0
#define BED_CORRECTION_METHOD 0
#define BED_LEVELING_GRID_SIZE 5
#define BED_LEVELING_REPETITIONS 5
#define BED_MOTOR_1_X 0
#define BED_MOTOR_1_Y 0
#define BED_MOTOR_2_X 200
#define BED_MOTOR_2_Y 0
#define BED_MOTOR_3_X 100
#define BED_MOTOR_3_Y 200
#define BENDING_CORRECTION_A 0
#define BENDING_CORRECTION_B 0
#define BENDING_CORRECTION_C 0
#define FEATURE_AXISCOMP 0
#define AXISCOMP_TANXY 0
#define AXISCOMP_TANYZ 0
#define AXISCOMP_TANXZ 0
Here is my starting(working) Configuration.h file (before any autolevel changes)
Any help would be appreciated.
/* ======== Servos =======
Control the servos with
M340 P<servoId> S<pulseInUS> / ServoID = 0..3 pulseInUs = 500..2500
Servos are controlled by a pulse width normally between 500 and 2500 with 1500ms in center position. 0 turns servo off.
WARNING: Servos can draw a considerable amount of current. Make sure your system can handle this or you may risk your hardware!
*/
#define FEATURE_SERVO 0
#define SERVO0_PIN 11
#define SERVO1_PIN -1
#define SERVO2_PIN -1
#define SERVO3_PIN -1
#define SERVO0_NEUTRAL_POS -1
#define SERVO1_NEUTRAL_POS -1
#define SERVO2_NEUTRAL_POS -1
#define SERVO3_NEUTRAL_POS -1
#define UI_SERVO_CONTROL 0
#define FAN_KICKSTART_TIME 200
#define FEATURE_WATCHDOG 0
// #################### Z-Probing #####################
#define Z_PROBE_Z_OFFSET 0
#define Z_PROBE_Z_OFFSET_MODE 0
#define UI_BED_COATING 1
#define FEATURE_Z_PROBE 0
#define Z_PROBE_BED_DISTANCE 10
#define Z_PROBE_PIN -1
#define Z_PROBE_PULLUP 0
#define Z_PROBE_ON_HIGH 0
#define Z_PROBE_X_OFFSET 0
#define Z_PROBE_Y_OFFSET 0
#define Z_PROBE_WAIT_BEFORE_TEST 0
#define Z_PROBE_SPEED 2
#define Z_PROBE_XY_SPEED 150
#define Z_PROBE_SWITCHING_DISTANCE 1
#define Z_PROBE_REPETITIONS 1
#define Z_PROBE_HEIGHT 40
#define Z_PROBE_START_SCRIPT ""
#define Z_PROBE_FINISHED_SCRIPT ""
#define FEATURE_AUTOLEVEL 1
#define Z_PROBE_X1 20
#define Z_PROBE_Y1 20
#define Z_PROBE_X2 160
#define Z_PROBE_Y2 20
#define Z_PROBE_X3 100
#define Z_PROBE_Y3 160
#define BED_LEVELING_METHOD 0
#define BED_CORRECTION_METHOD 0
#define BED_LEVELING_GRID_SIZE 5
#define BED_LEVELING_REPETITIONS 5
#define BED_MOTOR_1_X 0
#define BED_MOTOR_1_Y 0
#define BED_MOTOR_2_X 200
#define BED_MOTOR_2_Y 0
#define BED_MOTOR_3_X 100
#define BED_MOTOR_3_Y 200
#define BENDING_CORRECTION_A 0
#define BENDING_CORRECTION_B 0
#define BENDING_CORRECTION_C 0
#define FEATURE_AXISCOMP 0
#define AXISCOMP_TANXY 0
#define AXISCOMP_TANYZ 0
#define AXISCOMP_TANXZ 0
Also I don't know how the endstops are supposed to work after z-probing and auto leveling is set up and working.
1. Are there two z min endstops?... a switch from the original z-min... plus the BL Touch?
2. Does the mechanical switch get moved to act as a z-max? I don't mind having a z-min mechanical switch as well as the bl touch... in that case the mechanical switch could act as a back up in case the the bl touch stops functioning and the z motors don't know when to stop.
I have extra endstop switches I'd like to install as XY and Z MAX switches... but I don't want the Z to go to Z Max on a printer with a 690mm height... but it would be nice to trigger if there is an emergency and also to test the printers dimensions once in a while because I sometimes want to go from 1 extruder to 4 and back again... in that case I wouldn't mind it homing to z max to reset the current printer build volume.
My priority is to get the BL Touch with auto leveling working.
Again any help you can give would be much appreciated.
Comments
I'll run the M115 and see what it reports.
Ok I think I understand what your are saying about the Z probe being used as the the Z MIN endstop also, and I think it makes sense with Cartesian printers.
In order to use the Z probe as the Z MIN endstop the probe needs to be "deployed." So for some it would mean the servo needs to activate and move the sensor into position.
As far as I know if I home the Z axis it doesn't know to lower the sensor (in my case it is the probe/pin on a BL Touch).
Is there a way to hack all scripts that call Z homing to use some G-code.
When homing I would like the table to drop down 10MM... activate and drop the probe pin... begin slowly moving the Z back up towards Zmin... when the table triggers the pin the table stops and records the current Z position into eeprom as "Z0" and leaves the pin locked up.
I think I can figure out the scripts.... if there is a section where I can add custom G-code... possibly Start and End G-code scripts.
Then of course I'd like to still be able to use the probe as a normal Z probe and sample the height after homing and also sample three spots or a grid pattern to do automatic bed leveling... and store all this new data to eeprom after each step.
Sorry to bother you about this I just can't seem to find the exact text string.... Please tell me the exact text strings to use... both the text string for the endstop pin number and the exact text string to enter next to it. I don't want to change the wrong line as I see several areas where it might be entered... even though I sure there is only one place to put it.
Is the setting changed in configuration.h or pins.h or somewhere else?
This would make it so you would be able to enter gcode for Z homing and also be able to enter separate gcode for Z probing. If the start and stop code happens to be identical you would have to enter it twice but the advantage is you would be able to have them do very different things if you wanted.
If there is already a way to make Z homing use the Z probing start and stop gcode that would be great too... I just can't figure out how to do it.
Right now if I want to use the probe I'd have to home X and Y and then do a G30... but if I forget or accidentally click home XY and Z then I will crash the nozzle into the bed because the probe hasn't been moved down to start sensing Z because it hasn't received a servo signal to move it into position.