3D Touch Sensor:Auto-levelling for Geeetech 3D printer

frogsuk
Posts: 9
Joined: Sun Feb 18, 2018 3:27 am

Re: 3D Touch Sensor:Auto-levelling for Geeetech 3D printer

Post by frogsuk » Tue Feb 20, 2018 4:47 pm

Thank you William,

I now have a problem with getting the 3D Touch to work now I have all the wiring done.
The voltage I have at the sensor is as follows:

[Orange 4.87v Red 4.61v Brown 0v]
[Black 0v White 5.02v]

I have altered the original Marlin Firmware from the website:
PI3A Pro(for the upgraded kit using lead screw).zip
As per the instructions on:
https://www.geeetech.com/wiki/index.php ... ing_Sensor
and when I try “Verify and Compile” on Marlin Arduino 1.01 I get the following errors:

Marlin_main.cpp: In function 'void servo_init()':
Marlin_main.cpp:571: error: 'servo' was not declared in this scope
Marlin_main.cpp: In function 'void deploy_z_probe()':
Marlin_main.cpp:1286: error: 'Servo' was not declared in this scope
Marlin_main.cpp:1286: error: 'srv' was not declared in this scope
Marlin_main.cpp:1286: error: 'servo' was not declared in this scope
Marlin_main.cpp: In function 'void stow_z_probe(bool)':
Marlin_main.cpp:1354: error: 'Servo' was not declared in this scope
Marlin_main.cpp:1354: error: 'srv' was not declared in this scope
Marlin_main.cpp:1354: error: 'servo' was not declared in this scope
Marlin_main.cpp: In function 'void homeaxis(AxisEnum)':
Marlin_main.cpp:1605: error: 'servo' was not declared in this scope
Marlin_main.cpp:1708: error: 'servo' was not declared in this scope

I had to make the adjustments in Configuration.h and pins_ULTIMAKER.h

I have included on Google Drive, the original Firmware file:
PI3A Pro(for the upgraded kit using lead screw).zip
https://drive.google.com/file/d/1auraAh ... sp=sharing

And the modified Firmware file:
I3PROA_Marlin.zip
https://drive.google.com/file/d/1yPFwaD ... sp=sharing

Please help as this is starting to get frustrating.

frogsuk
Posts: 9
Joined: Sun Feb 18, 2018 3:27 am

Re: 3D Touch Sensor:Auto-levelling for Geeetech 3D printer

Post by frogsuk » Wed Feb 21, 2018 8:47 pm

I am having a problem with getting the 3D Touch to work on my Geeetech I3Pro A

I have used the command lines tests and no faults noted :(

The voltage at the wiring feeding the prob is:
[Orange 4.87v Red 4.61v Brown 0v]
[Black 0v White 5.02v]

But when the 3DTouch is connected, it does not light up or work.
The voltage at the solder points on the 3DTouch are:
[Orange 1.76v Red 1.19v Brown 0v]
[Black 0v White 1.77v]

I have also checked the original voltage checkpoints and the voltages have dropped there too
Any ideas?

I had to make the adjustments in Configuration.h and pins_ULTIMAKER.h

I have included on Google Drive, the original Firmware file:
PI3A Pro(for the upgraded kit using lead screw).zip
https://goo.gl/ypfuyg
And the modified Firmware file:
Marlin_new_3DTouch.zip
https://goo.gl/BQyyGg
Please help as this is starting to get frustrating.
still not working :-(

My pin.h file does not have the settings in so I updated the settings in the pins_ULTIMAKER.h file. my pin file contents are

/**
* Ultimaker pin assignments
*/

#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
#error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
#endif

#define LARGE_FLASH true

#define X_STEP_PIN 25
#define X_DIR_PIN 23
#define X_MIN_PIN 22
#define X_MAX_PIN 24
#define X_ENABLE_PIN 27

#define Y_STEP_PIN 31
#define Y_DIR_PIN 33
#define Y_MIN_PIN 26
#define Y_MAX_PIN 28
#define Y_ENABLE_PIN 29

#define Z_STEP_PIN 37
#define Z_DIR_PIN 39
#define Z_MIN_PIN 30
#define Z_MAX_PIN -1//32
#define Z_ENABLE_PIN 35

#define HEATER_BED_PIN 4
#define TEMP_BED_PIN 10

#define HEATER_0_PIN 2
#define TEMP_0_PIN 8

#define HEATER_1_PIN 3
#define TEMP_1_PIN 9

#define HEATER_2_PIN -1
#define TEMP_2_PIN -1

#define E0_STEP_PIN 43
#define E0_DIR_PIN 45
#define E0_ENABLE_PIN 41

#define E1_STEP_PIN 49
#define E1_DIR_PIN 47
#define E1_ENABLE_PIN 48

#define SDPOWER -1
#define SDSS 53
#define LED_PIN 13
#define FAN_PIN 7
#define PS_ON_PIN 12
#define KILL_PIN -1
#define SUICIDE_PIN 54 //PIN that has to be turned on right after start, to keep power flowing.
#define SERVO0_PIN 11 //13 // untested

#ifdef ULTRA_LCD

#ifdef NEWPANEL
//arduino pin witch triggers an piezzo beeper
#define BEEPER 18

#define LCD_PINS_RS 20
#define LCD_PINS_ENABLE 17
#define LCD_PINS_D4 16
#define LCD_PINS_D5 21
#define LCD_PINS_D6 5
#define LCD_PINS_D7 6

//buttons are directly attached
#define BTN_EN1 40
#define BTN_EN2 42
#define BTN_ENC 19 //the click

#define SDCARDDETECT 38

#else //!NEWPANEL - Old style panel with shift register

//arduino pin witch triggers an piezzo beeper
#define BEEPER 18

//buttons are attached to a shift register
#define SHIFT_CLK 38
#define SHIFT_LD 42
#define SHIFT_OUT 40
#define SHIFT_EN 17

#define LCD_PINS_RS 16
#define LCD_PINS_ENABLE 5
#define LCD_PINS_D4 6
#define LCD_PINS_D5 21
#define LCD_PINS_D6 20
#define LCD_PINS_D7 19

#define SDCARDDETECT -1

#endif // !NEWPANEL

#endif // ULTRA_LCD


And my pins.h file contents are:


/**
* pins.h
*/

#ifndef PINS_H
#define PINS_H

// Preset optional pins
#define X_MS1_PIN -1
#define X_MS2_PIN -1
#define Y_MS1_PIN -1
#define Y_MS2_PIN -1
#define Z_MS1_PIN -1
#define Z_MS2_PIN -1
#define E0_MS1_PIN -1
#define E0_MS2_PIN -1
#define E1_MS1_PIN -1
#define E1_MS2_PIN -1
#define DIGIPOTSS_PIN -1
#define HEATER_3_PIN -1
#define TEMP_3_PIN -1

#if MB(GEN7_CUSTOM)
#include "pins_GEN7_CUSTOM.h"
#elif MB(GEN7_12)
#include "pins_GEN7_12.h"
#elif MB(GEN7_13)
#include "pins_GEN7_13.h"
#elif MB(GEN7_14)
#include "pins_GEN7_14.h"
#elif MB(CHEAPTRONIC)
#include "pins_CHEAPTRONIC.h"
#elif MB(SETHI)
#include "pins_SETHI.h"
#elif MB(RAMPS_OLD)
#include "pins_RAMPS_OLD.h"
#elif MB(RAMPS_13_EFB) || MB(RAMPS_13_EEB) || MB(RAMPS_13_EFF) || MB(RAMPS_13_EEF) || MB(RAMPS_13_SF)
#include "pins_RAMPS_13.h"
#elif MB(GEN6)
#include "pins_GEN6.h"
#elif MB(GEN6_DELUXE)
#include "pins_GEN6_DELUXE.h"
#elif MB(SANGUINOLOLU_11)
#include "pins_SANGUINOLOLU_11.h"
#elif MB(SANGUINOLOLU_12)
#include "pins_SANGUINOLOLU_12.h"
#elif MB(MELZI)
#include "pins_MELZI.h"
#elif MB(STB_11)
#include "pins_STB_11.h"
#elif MB(AZTEEG_X1)
#include "pins_AZTEEG_X1.h"
#elif MB(MELZI_1284)
#include "pins_MELZI_1284.h"
#elif MB(AZTEEG_X3)
#include "pins_AZTEEG_X3.h"
#elif MB(AZTEEG_X3_PRO)
#include "pins_AZTEEG_X3_PRO.h"
#elif MB(ULTIMAKER)
#include "pins_ULTIMAKER.h"
#elif MB(ULTIMAKER_OLD)
#include "pins_ULTIMAKER_OLD.h"
#elif MB(ULTIMAIN_2)
#include "pins_ULTIMAIN_2.h"
#elif MB(3DRAG)
#include "pins_3DRAG.h"
#elif MB(K8200)
#include "pins_K8200.h"
#elif MB(TEENSYLU)
#include "pins_TEENSYLU.h"
#elif MB(RUMBA)
#include "pins_RUMBA.h"
#elif MB(PRINTRBOARD)
#include "pins_PRINTRBOARD.h"
#elif MB(BRAINWAVE)
#include "pins_BRAINWAVE.h"
#elif MB(BRAINWAVE_PRO)
#include "pins_BRAINWAVE_PRO.h"
#elif MB(SAV_MKI)
#include "pins_SAV_MKI.h"
#elif MB(TEENSY2)
#include "pins_TEENSY2.h"
#elif MB(GEN3_PLUS)
#include "pins_GEN3_PLUS.h"
#elif MB(GEN3_MONOLITHIC)
#include "pins_GEN3_MONOLITHIC.h"
#elif MB(MEGATRONICS)
#include "pins_MEGATRONICS.h"
#elif MB(MEGATRONICS_1)
#include "pins_MEGATRONICS_1.h"
#elif MB(MEGATRONICS_2)
#include "pins_MEGATRONICS_2.h"
#elif MB(MEGATRONICS_3)
#include "pins_MEGATRONICS_3.h"
#elif MB(OMCA_A)
#include "pins_OMCA_A.h"
#elif MB(OMCA)
#include "pins_OMCA.h"
#elif MB(RAMBO)
#include "pins_RAMBO.h"
#elif MB(ELEFU_3)
#include "pins_ELEFU_3.h"
#elif MB(5DPRINT)
#include "pins_5DPRINT.h"
#elif MB(LEAPFROG)
#include "pins_LEAPFROG.h"
#elif MB(BAM_DICE)
#include "pins_RAMPS_13.h"
#elif MB(BAM_DICE_DUE)
#include "pins_BAM_DICE_DUE.h"
#elif MB(FELIX2)
#include "pins_FELIX2.h"
#elif MB(99)
#include "pins_99.h"
#else
#error Unknown MOTHERBOARD value set in Configuration.h
#endif

// List of pins which to ignore when asked to change by gcode, 0 and 1 are RX and TX, do not mess with those!
#define _E0_PINS E0_STEP_PIN, E0_DIR_PIN, E0_ENABLE_PIN, HEATER_0_PIN, analogInputToDigitalPin(TEMP_0_PIN),
#define _E1_PINS
#define _E2_PINS
#define _E3_PINS

#if EXTRUDERS > 1
#undef _E1_PINS
#define _E1_PINS E1_STEP_PIN, E1_DIR_PIN, E1_ENABLE_PIN, HEATER_1_PIN, analogInputToDigitalPin(TEMP_1_PIN),
#if EXTRUDERS > 2
#undef _E2_PINS
#define _E2_PINS E2_STEP_PIN, E2_DIR_PIN, E2_ENABLE_PIN, HEATER_2_PIN, analogInputToDigitalPin(TEMP_2_PIN),
#if EXTRUDERS > 3
#undef _E3_PINS
#define _E3_PINS E3_STEP_PIN, E3_DIR_PIN, E3_ENABLE_PIN, HEATER_3_PIN, analogInputToDigitalPin(TEMP_3_PIN),
#endif
#endif
#endif

#ifdef X_STOP_PIN
#if X_HOME_DIR < 0
#define X_MIN_PIN X_STOP_PIN
#define X_MAX_PIN -1
#else
#define X_MIN_PIN -1
#define X_MAX_PIN X_STOP_PIN
#endif
#endif

#ifdef Y_STOP_PIN
#if Y_HOME_DIR < 0
#define Y_MIN_PIN Y_STOP_PIN
#define Y_MAX_PIN -1
#else
#define Y_MIN_PIN -1
#define Y_MAX_PIN Y_STOP_PIN
#endif
#endif

#ifdef Z_STOP_PIN
#if Z_HOME_DIR < 0
#define Z_MIN_PIN Z_STOP_PIN
#define Z_MAX_PIN -1
#else
#define Z_MIN_PIN -1
#define Z_MAX_PIN Z_STOP_PIN
#endif
#endif

#ifdef DISABLE_MAX_ENDSTOPS
#undef X_MAX_PIN
#undef Y_MAX_PIN
#undef Z_MAX_PIN
#define X_MAX_PIN -1
#define Y_MAX_PIN -1
#define Z_MAX_PIN -1
#endif

#ifdef DISABLE_MIN_ENDSTOPS
#undef X_MIN_PIN
#undef Y_MIN_PIN
#undef Z_MIN_PIN
#define X_MIN_PIN -1
#define Y_MIN_PIN -1
#define Z_MIN_PIN -1
#endif

#if defined(DISABLE_Z_PROBE_ENDSTOP) || !defined(Z_PROBE_ENDSTOP) // Allow code to compile regardless of Z_PROBE_ENDSTOP setting.
#undef Z_PROBE_PIN
#define Z_PROBE_PIN -1
#endif

#ifdef DISABLE_XMAX_ENDSTOP
#undef X_MAX_PIN
#define X_MAX_PIN -1
#endif

#ifdef DISABLE_XMIN_ENDSTOP
#undef X_MIN_PIN
#define X_MIN_PIN -1
#endif

#ifdef DISABLE_YMAX_ENDSTOP
#define Y_MAX_PIN -1
#endif

#ifdef DISABLE_YMIN_ENDSTOP
#undef Y_MIN_PIN
#define Y_MIN_PIN -1
#endif

#ifdef DISABLE_ZMAX_ENDSTOP
#undef Z_MAX_PIN
#define Z_MAX_PIN -1
#endif

#ifdef DISABLE_ZMIN_ENDSTOP
#undef Z_MIN_PIN
#define Z_MIN_PIN -1
#endif

#define SENSITIVE_PINS { 0, 1, \
X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, \
Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, \
Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_PROBE_PIN, \
PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, \
_E0_PINS _E1_PINS _E2_PINS _E3_PINS \
analogInputToDigitalPin(TEMP_BED_PIN) \
}

#define HAS_DIGIPOTSS (DIGIPOTSS_PIN >= 0)

#endif //__PINS_H

derekoh
Posts: 0
Joined: Mon Feb 26, 2018 12:01 am

Re: 3D Touch Sensor:Auto-levelling for Geeetech 3D printer

Post by derekoh » Mon Feb 26, 2018 12:33 am

Help! I've purchased a BLTouch from Geeetech and am trying to install it on my i3 X Pro (with GT2560 Rev A+ board).

I've wired it up correctly, and it lights up and does the couple of test lowers/raises when I power on. I've made all the changes to the firmware and uploaded that. The light does come on when I push the pin up, and goes off when I pull it down. The M280 P0 S10/90/120/160 commands don't do anything, and M119 is showing Z_MIN always "open" (If I disconnect the wires from the BLTouch, then Z_MIN changes to "TRIGGERED". If I then touch those two wires together it will switch to open), so it's not a wiring issue.

Any ideas what could be wrong?

In the configuration.h I setup the following:

#define ENABLE_AUTO_BED_LEVELLING
#define AUTO_BED_LEVELLING_GRID
left/right/back/front - all defined ok

G29 moves to the various positions and tries to test (but grinds into the bed because of the Z_MIN issue)

in pins.h (under the Ultimaker section):

#define Z_MAX_PIN -1
#define Z_MIN_PIN 30
#define SERVO0_PIN 11 (as I'm using the 2560 A+ board)

Any ideas?

User avatar
William
Site Admin
Posts: 6340
Joined: Tue Jun 07, 2016 9:38 am

Re: 3D Touch Sensor:Auto-levelling for Geeetech 3D printer

Post by William » Mon Feb 26, 2018 10:33 am

You can refer to this line
ZMAX-3DTOUCH.png
ZMAX-3DTOUCH.png (27.95 KiB) Viewed 23686 times
-Keep your mind and try to test it. :)
-Everything will be fun!-Support all Getech printer.
-You can ask me the questions and I will kindly reply.
-Respect others is the best way you can get help!

stark0
Posts: 18
Joined: Sun Jul 10, 2016 1:11 am

Re: 3D Touch Sensor:Auto-levelling for Geeetech 3D printer

Post by stark0 » Tue Mar 06, 2018 7:34 pm

[quote=stark0 post_id=38363 time=1494061531 user_id=51808]
Hi!

I have the 3D touch sensor working but I'm having leveling problems.

[img]https://lh3.googleusercontent.com/QSOSF ... 23-h917-no[/img]
The two pieces have been printed at the same time but in different parts of the bed. The left one on the center and the right one at the right of the bed. I don't know what can be wrong, any ideas?

Thank you!
[/quote]

Am I the only one having calibration problems? I can't print large pieces as the left part and the right one are differently calibrated.

pepopepo
Posts: 0
Joined: Sun Apr 08, 2018 3:12 am

Re: 3D Touch Sensor:Auto-levelling for Geeetech 3D printer

Post by pepopepo » Sun Apr 08, 2018 3:22 am

I got my new Geeetech 3DTouch Automatic alignment sensor so I put it in the video in the second layer the needle falls down if I pushed 2 things so soon and is about 4 layers to the needle pulled up.
I can not figure out why the needle goes down the other way up the press, thank you for your advice and help
Attachments
BLTouch.rar
(875.75 KiB) Downloaded 769 times
4.rar
(9.39 MiB) Downloaded 791 times

frogsuk
Posts: 9
Joined: Sun Feb 18, 2018 3:27 am

Re: 3D Touch Sensor:Auto-levelling for Geeetech 3D printer

Post by frogsuk » Fri May 25, 2018 8:15 pm

Has anyone yet got the 3D Touch working on the Aluminuim Geeetech Pro A with the GT2650+ board?
If so please could I have a copy of your firmware as this has been doing my head in for 6 months now!!!

Ingybing
Posts: 5
Joined: Wed Jun 27, 2018 5:39 pm

Re: 3D Touch Sensor:Auto-levelling for Geeetech 3D printer

Post by Ingybing » Sun Jul 01, 2018 6:14 am

I've purchased a Acrylic Prusa I3 Pro B printer, built it (with multiple nights of cursing an swearing ;)) and am now trying to add the 3D touch sensor. I've got it responding to commands after finding out the GT2650 A+ already had the 3 pins necessary and i didn't have to de-solder the zMax port!. But when it's doing a G28, the X & Y axis home and end-stop, then for the Z axis, the bed centres properly for the sensor to strike the middle of the bed but the hot end just strikes the print bed first and it carries on driving into the bed. The pin on the sensor is down and extended but its not long enough to make contact with the bed first before the hot end. As a result if i don't stop it the motor would continue driving the hot end down. If I put something in the way to strike the pin first the sensor seems to work as expected and the z-min is established. Is there something else i should be adjusting on the extruder, or printing a new bracket with a bigger spacer?

The image shows what i mean. You can see the pin is down, the hot end is touching the bed but the pin is still over a key's widths away from the bed so its never going to strike it first. The following image shows what i mean.

Image

Gingko
Site Admin
Posts: 230
Joined: Tue Apr 24, 2018 10:43 am

Re: 3D Touch Sensor:Auto-levelling for Geeetech 3D printer

Post by Gingko » Tue Jul 03, 2018 5:15 pm

Hi, try to adjust the hight of hotend to decrease the distance between hotend and extruder carriage, then relevel the bed.

Ingybing
Posts: 5
Joined: Wed Jun 27, 2018 5:39 pm

Re: 3D Touch Sensor:Auto-levelling for Geeetech 3D printer

Post by Ingybing » Sun Jul 08, 2018 5:56 pm

Hi,

Thanks got it working and had a few prints going but then noticed extruder motor was dropping steps and looks like it was too low to the bed.. re-calibrated several times. Then did several G29's in succession without changing anything. The Z readings were +- .3 mm each read so no wonder some times it was choking the extruder. Also during two prints the pin randomly dropped... Completely fed up with it and going back to manually levelling the bed for more consistent reliable results.. Can't say as i rate this piece of kit at all. Waste of time and money. :(

Locked