27-11-2016, 05:02 AM
(Última modificación: 27-11-2016, 02:12 PM por Jrx07.)
Hola, muy buenas, soy nuevo en el foro y tengo un problema que no he conseguido solucionar tras muchas horas de intentos y que me vuelve loco.
Hace no mucho, compré un sensor capacitivo NPN NO para mi prusa i3. Después de instalarlo mediante el método de poner un diodo en la señal y configurar el firmware de la impresora, que por cierto es la versión 1.1 RC3 de Marlin, me surge el problema de que a la hora de hacer el autobed leveling, el nozzle se hunde en la cama pero solo en el lado de la derecha cuando empieza a buscar los 4 puntos del modo grid, sin embargo, en los dos puntos del lado de la izquierda los detecta sin problemas.
He comprobado mil veces la cama caliente y esta bien nivelada a si que problema de eso no es, aun que de todas maneras no se debería de hundir por eso. Aparte, se enciende la luz del sensor pero sigue bajando y al poco se para y sigue con el siguente punto, pero como he dicho solo lo hace en el lado de la derecha. ¿Alguien sabe como solucionar este problema? Muchas gracias.
NP...I jeje... Hola, a ver si alguien te responde y aprendí algo por que no tengo ni idea
Enviado desde mi KT107 mediante Tapatalk
27-11-2016, 11:03 PM
(Última modificación: 27-11-2016, 11:06 PM por Shellmer.)
Mira que no tengas el offset en Z del sensor positivo y también que tu lógica del detector sea la correcta.
Con lo de la lógica del detector me refiero al estado en el que el arduino asume que ese final de carrera/sensor se está presionando, es decir... tu sensor probablemente de una salida de 5v en detección, pero por lo que yo sé, al menos en la mía, un final de carrera actúa al revés, dando señal lógica de 0v (un 0 logico) cuando detecta.
Me suena a que este debe de ser tu problema, pues si la lógica está al revés, creo recordar que baja un rato y cuando asume que hay algo raro, sube y pasa al siguiente punto.
Revisa este fragmento de código en tu marlin:
Código: // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
const bool X_MIN_ENDSTOP_INVERTING = false;
const bool Y_MIN_ENDSTOP_INVERTING = false; //Seguramente debas invertir este booleano, ponerl oal contrari ode como lo tengas en tu marlin
const bool Z_MIN_ENDSTOP_INVERTING = false;
const bool X_MAX_ENDSTOP_INVERTING = false;
const bool Y_MAX_ENDSTOP_INVERTING = false;
const bool Z_MAX_ENDSTOP_INVERTING = false;
//#define DISABLE_MAX_ENDSTOPS
//#define DISABLE_MIN_ENDSTOPS
No copies y pegues esta config o puede que la lies, solo prueba a invertir el booleano de tu Z Min y revisa tu Z offset, como lo hayas puesto positivo la lias, marlin te va a loquear.
Ah vale, arduino... Un mundo desconocido para mí...
Lo de los finales de carrera es norma en las grúas telescópicas cómo dice shellmer, tiene positivo en reposo y corta cuando detecta, de industrial sí sé algo.
Enviado desde mi KT107 mediante Tapatalk
El Z_Min_endstop_invertir lo tengo al contrario que los demás a si que puede que sea eso. En el Z offset lo tengo a 0, por que mi sensor se puede regular con tornillo, por lo que no me hace falta configurarlo, simplemente con ajustar el torNilo me sobraría. Probaré a cambiar la lógica a ver si funciona. Muchas gracias por vuestra ayuda!!
Perfecto, es importante que ese offset este a 0 si no lo usas, o si lo usas, que sea negativo, si no tras la calibración pasan cosas raras y nunca cuadran las alturas.
Suerte!!
Tengo así configurados los end stops:
#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
Lo que no se es si hay que cambiar la lógica de la ultima linea también, por que al igual es eso lo que me pasa.
(28-11-2016, 02:54 PM)Jrx07 escribió: Tengo así configurados los end stops:
#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
Lo que no se es si hay que cambiar la lógica de la ultima linea también, por que al igual es eso lo que me pasa.
Pues probablemente, yo esa opción no se si la tengo en mi marlin, pues uso un final de carrera que despliega un pequeño servo, pero supongo que no la tiene.
Tiene pinta de que es eso, solo haciendo pruebas lo averiguarás... como te digo, si la lógica esta invertida suceden cosas raras, y creo recordar que me paso lo mismo que a ti la primera vez que lo configuraba y no tenia mucha idea...
Pueba, como te digo, asi se aprende, a base de errores y pruebas.
Muchas gracias!! En cuanto pueda pruebo los cambios y comento los resultados, por si a alguien le puede ser útil...
|