Buenas tardes Mario,
siento haber tardado tanto en contestar, pero para contestarte necesitaba sacar un rato para ponerme con el código de la BCN3D+, lo primero que te diría es que en la medida que te sea posible copies la configuración que te da el firmware original (ha cambiado bastante con respecto al Marlin actual, pero es la mejor referencia que tienes).
Si no tienes el firmware lo puedes descargar aquí:
github.com/BCN3D/BCN3DPlus-Firmware
Cosas que debes tener en cuenta a la hora de actualizar el firmware:
-Definición de las resistencias de PullUp (esta parte el Marlin original no suele descomentarla)
#ifndef ENDSTOPPULLUPS
// fine Enstop settings: Individual Pullups. will be ignored if ENDSTOPPULLUPS is defined
//#define ENDSTOPPULLUP_XMAX
#define ENDSTOPPULLUP_YMAX
#define ENDSTOPPULLUP_ZMAX
#define ENDSTOPPULLUP_XMIN
// #define ENDSTOPPULLUP_YMIN
//#define ENDSTOPPULLUP_ZMIN
#endif
-La dirección de lHoming (como sabes los finales de carrera están puestos en diferentes sitios que lo que suele ser común)
#define X_HOME_DIR 1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1
-El tamaño máximo de X el firmware original lo fija en 252, si tu has sido capaz de sacarle algo mas ajustalo a lo que tu le saques, pero ten cuidado de que sea una medida real, la impresora debería parar al si hace homing en X y posteriormente recorre una distancia que supere la que le has marcado, si no para y llega al final puede que te hayas pasado midiendo o que tengas mal configurado los pasos por milímetos de los motores y avance mas de lo que deba.
-En cuanto al autolevel decías que tenias problemas con los puntos de medida, yo creo que en lugar de modificar las medidas de impresión deberías ajustar el autolevel, para esto vamos a ver si somos capaces de ver como está configurado, para esto....
Lo primero que debes hacer es descomentar la línea que pone
#define DEBUG_LEVELING_FEATURE además de la línea que pone
#define LCD_BED_LEVELING
Una vez hecho esto, puedes acceder a un reporte detallado del autolevel mandando el comando M111 S32 por la consola.
Otra punto donde puedes centrarte para el autolevel es en este:
//===========================================================================
//=================================== Mesh ==================================
//===========================================================================
#define MESH_INSET 10 // Set Mesh bounds as an inset region of the bed
#define GRID_MAX_POINTS_X 3 // Don't use more than 7 points per axis, implementation limited.
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
En este ejemplo tienen definido 3 puntos para el eje X y otros 3 para el eje Y, el parámetro MESH_INSET tiene relación con donde hace la medición respecto al extrusor (o eso creo), puede encontrar más información de este parámetro en la pestaña de configuración avanzada "
Configuration_adv.h"
#if ENABLED(MESH_BED_LEVELING) || ENABLED(AUTO_BED_LEVELING_UBL)
// Override the mesh area if the automatic (max) area is too large
//#define MESH_MIN_X MESH_INSET
//#define MESH_MIN_Y MESH_INSET
//#define MESH_MAX_X X_BED_SIZE - (MESH_INSET)
//#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
#endif
Creo que la solución a tu problema va por aquí, pero sin probarlo no puedo asegurarte nada. Espero haberte ayudado un poco