Por fin monte un sensor inductivo para auto bed leveling



  • Me llegó el sensor hace unos días y no había tenido tiempo hasta ayer para montarlo.


    Después de pegarme varias horas con el diseño de un acople para montarlo lo imprimí y me prepare para configurarlo. Otros que había visto por ahí no me convencían por su escasa rigidez.
    Así que hice éste:

    Vereis que la superficie es más consistente que otras y admite poner las arandelas de presión, así mismo usa dos tornillos para fijarlo al ventilador de la tobera.

    Añadí entre la superficie de la cama y el cristal un trozo de papel de aluminio cubriendo toda la base.

    Os pongo un enlace para la configuración del firmware, es de un blog de F Malpartida, gran aporte:

    Echarle un vistazo por encima y luego os explico como lo he configurado yo para que me funcione bien, puesto que hay cosas que explica que no me funcionaban en la hephestos.

    Revisar en este blog sobre todo la configuración del firmware que salvo una cosa es la misma que he usado yo y la forma de hacer el divisor resistivo (lo de la resistencias con una proporcion 1.5, es decir por ejemplo 10k y 15k).


    Vereís que tenemos dos opciones para conectar el cable de señal del sensor, os recomiendo la del divisor resistivo (con dos resistencias), porque de esta forma podemos añadirlo en paralelo al final de carrera del eje Z. ¿y por qué lo pongo en paralelo? porque si algo falla este hará que la impresora se pare al bajar a un tope dado en el eje Z.

    La conexión a la placa:
    Conectamos la entrada de alimentación del sensor a 12 V de la entrada principal y el de señal con el divisor resistivo al cable de señal del final de carrera del eje Z.

    Por hoy lo dejo aquí...
    Voy a seguir con mis obligaciones maritales...

    Por cierto, os dejo un enlace para un programa que si no lo tenéis lo vamos a necesitar:


    bajaros la versión adecuada para vuestro sistema operativo.

    Con el programa que os digo podréis manipular la impresora para calibrarla por primera y última vez XD.
    Fijar el sensor inductivo a la pieza, sin apretar las tuercas de momento.
    Mirar que las alturas de los dos ejes Z estan correctas.
    Bajar el extrusor hasta que un folio roce entre extrusor y cristal.
    Ahora regular con las tuercas el sensor inductivo hasta que éste esté a algo menos de un milimetro del cristal, yo lo he puesto a unos 3 folios de grosor entre el cristal y el propio sensor. Ya podéis apretar las tuercas, bien, pero bien. No deberían moverse más de ahí.

    Ahora viene la parte divertida (de momento quitar las pinzas y todo lo que moleste al extrusor de la cama).

    Con el pronter face y el firmware bien configurado y cargado no os dejará bajar el cabezal más de lo que el propio sensor le marca, que será a unos 4 mm del papel de plata.

    Vamos a solucionarlo...

    Doy por supuesto que habéis dejado el final de carrera del eje Z conectado en paralelo. Subir el tornillo un mm aproximadamente de su posición normal, la finalidad es que actue sólo en caso de que algo falle, pero no debe funcionar si el Inductivo va bien.
    Nos conectamos con el pronterface (si ya no lo estáis) y le engañamos para decirle que el extrusor está más alto de lo que el cree.
    el comando es:
    G92 z10 (puse un -, edito para rectificar este fallo, perdón por las molestias)
    Ahora nos dejará bajar a nuestro albedrio unos 10 mm hacía abajo ** si nos hiciera falta .
    Si el extrusor está en la posición adecuada, es decir un folio roza entre extrusor y cristal, debemos saber a que altura está el limite del sensor inductivo, vamos a averiguarlo...

    Subimos 0.1 con el pronterface, (contar las veces) hasta que se apague el led del sensor.

    El número de veces que lo habeis subido es la distancia entre el sensor y el (extrusor+el folio rozando)

    Este número también podéis averiguar... (Mañana sigo)


    * Importante: como dice McVillano, sería interesante un sensor con unos mm más de margén, este de 4 mm funciona, pero está al limite ***




    Durante esta semana intentaré terminar de explicar la configuración y os pondré unas fotos.

    Las fotos:
    Foto 1: Aquí veis el cable trenzado rojo y azul que va al conector que iba el final de carrera Z, este ahora está conectado a la señal del inductivo y a GND del inductivo (la señal lo he puesto con un diodo como se explica en el enlace que pase), El de señal es el pin más exterior de la placa y el GND el del centro.

    Foto 2:
    Aquí veis el conexionado del final de carrera del eje Z he usado los pines auxiliares, que son el pin 57 del arduino y un GND.

    Foto 3:
    Aquí dos detalles
    Los cables que salían en la foto anterior podéis verlos conectados al final de carrera del Eje Z, debe conectarse de forma que cuando se pulse interruptor se cierre el circuito, en mi caso los dos pines superiores.
    Otra cosa que debeís apreciar en la foto es que el tornillo está un mm aprox. por encima de hacer contacto estando la cama en su posición más baja. Ese mm es el margen de seguridad que le he dado para que se pare la impresora si baja más de la cuenta.

    Bueno, aclarando un poco el tema, me dí de hostias a la hora de ponerlos en paralelo a través de circuitos electrónicos y todo eran problemas, así que decidí hacerlo por software, por eso use los pines de la foto 2 y implemente unas líneas de software y ahora todo va como la seda.
    Sin el software que he implementado y con la explicación de Malpartida todo funcionará correctamente, pero no os ira el "seguro" del final de carrera Z.

    En breve os explicaré el software implementado y un video funcionando.

    El video:


    Podéis apreciar que a mitad de impresión la paro y bajo un par de mm la esquina derecha de la cama y vuelvo a iniciar otra impresión y la impresora se "autocalibra".

    En un comentario posterior pongo el software implementado, echarle un vistazo más abajo

    Un saludo 



  • Este hilo necesita fotos jejej.



  • Si por favor, me llega un sensor de 1-10mm el jueves y tengo una chapa de aluminio preparada, me vendria muy bien losn esquemas del puenteo con el conector del final de carerra del z ya que yo tambien quiero dejar los dos



  • A mi tambien me pica la curiosidad por ver como funciona. ¿Salen muy caros esos sensores?




  • Muromberg dijo:
    A mi tambien me pica la curiosidad por ver como funciona. ¿Salen muy caros esos sensores?

    La friolera de 3.99 dolares, aquí lo compré yo:

    http://www.dx.com/p/lj12a3-4-z-bx-inductive-proximity-switch-black-silver-dc-6-36v-100cm-cable-228309i

    Por cierto siento no haber podido seguir hoy con la explicación, a ver si mañana puedo...



  • Gastate unos pocos euros mas y ve a por uno que detecte 1-10mm, si mas adelante vas a comprar la ampliacion de cama te vendra bien ya que el cristal es de 5 milimetrazos



  • Otra opción es poner un diodo en el pin de señal, así no es necesario realizar el divisor de tensión. 



  • A ver, creo ver que la idea es sustituir o dejar en segundo plano el final de carrera de z, pero creo que eso no es autoleveling, ¿verdad? ¿O sí?
    Es ideal cuando la cama está totalmente horizontal, pero digamos que eso no comprende desniveles de la cama, simplemente baja hasta que la encuentra.
    El software que he visto (lo típico del servo) lo que hace es recorrer toda la cama el extrusor solito y luego al imprimir aunque esté torcida, al moverse el extrusor también se mueve Z.
    Por lo demás es genial, gran idea, puede que yo también me anime con un sensor capacitivo, para no tener que poner aluminio.



  • En una base plana no hace falta recorrerla para saber su inclinación con 4 medidas en las esquinas con este sensor sabe la inclinación de la cama y la corrige. Si me apuras con tres medidas tambien podrias



  • Lo que hace el sensor es coger un determinado número de puntos para saber que inclinación tiene el plano de la base con referencia al extrusor. Como dice McV, con tener tres puntos ya tienes un plano, pero es bueno coger algunos más para tenerlo bien definido.



  • He actualizado un poco el hilo en el comentario inicial, pero no se como subir las fotos correctamente.. que torpe soy

    En breve pondré el video y terminaré la explicación

    Un saludo



  • Líneas de Software añadidas para el seguro de final de carrera:

    Sin abrir el IDE Arduino y para la versión 1.3.1 de marlin hephestos:
    Debemos asignar un nuevo pin de funcionamiento, con cualquier editor de texto plano (yo uso notepad++)
    editar el archivo pins.h de la carpeta del firmware y poner en las primeras lineas, por ejemplo después de
    #define DIGIPOTSS_PIN -1
    En la ínea 15
    añadir:
    #define KILL_PIN2 57

    Cerrar y guardar los cambios.

    Ahora abrimos el IDE Arduino y abrimos nuestro firmware a modificar, vamos al marlin_main

    Buscar lo siguiente:
    void setup_killpin()
    {
      #if defined(KILL_PIN) && KILL_PIN > -1
        pinMode(KILL_PIN,INPUT);
        WRITE(KILL_PIN,HIGH);
      #endif
    }

    justo después de éste codigo añadir:

    void setup_killpin2()
    {
      #if defined(KILL_PIN2) && KILL_PIN2 > -1
        pinMode(KILL_PIN2,INPUT);
        WRITE(KILL_PIN2,HIGH);
      #endif
    }

    Ahora buscar estas líneas:
     #if defined(KILL_PIN) && KILL_PIN > -1
        if( 0 == READ(KILL_PIN) )
          kill();
      #endif

    Y justo debajo añadir estas:

      #if defined(KILL_PIN2) && KILL_PIN2 > -1
        if( 0 == READ(KILL_PIN2) )
          kill();
      #endif

    Guardar los cambios y meter el firmware en la impresora y funcionará el final de carrera. Lo hará como si pulsarais el boton de "pánico" y parará la impresora inmediatamente. 

    Os aconsejo encarecidamente que lo hagáis, en varias ocasiones de forma sorpresiva, debido a bugs del firmware, a un pegote de plástico o a que alguién accidentalmente pulse en el LCD el auto level, el sensor se puede quedar fuera de la cama y al no haber un final de carrera el eje Z no parará de bajar.


  • Si señor Rafael, es muy buena idea. Veo que le has puesto papel de aluminio. Si lanzas varias veces el proceso de medir las distancias, ¿siempre da el mismo valor? No se si el papel puede tener algo de tolerancia en el movimiento.



  • sgruben dijo:
    Si señor Rafael, es muy buena idea. Veo que le has puesto papel de aluminio. Si lanzas varias veces el proceso de medir las distancias, ¿siempre da el mismo valor? No se si el papel puede tener algo de tolerancia en el movimiento.
    Me dá unas decimas de error entre medidas, del orden de 10 decimas.
    Tengo que decir que intenté hacerlo con una plancha de acero inoxidable y misterios de la física el sensor detectaba mucho más tarde al acero que al papel de aluminio, con lo cual y lo ajustado del sensor (4mm) no me daba para poner el cristal como base de impresión.
    No obstante la tolerancia del sensor con el acero era muy similar a la del papel de aluminio (supongo que tendrá que ver con lo barato del sensor) es decir que el error es más probable que sea del sensor que del propio material.


  • Volviendo al tema del tipo de base tengo que decir que confio más en una solución de metal muy fino sobre "no metal" porque de esta manera evitamos problemas de deformación, es decir que usamos como base la original de la mesa que al no ser metal es mucho menos sensible a combarse debido a contracciones-dilataciones por efecto del calor o torsiones de los propios tornillos.

    Por lo tanto, creo que una buena solución sería usar la propia cama y un tipo de lamina de aluminio algo más gruesa que el papel de aluminio y pegarla definitivamente a la placa de plástico original de la mesa.

    Probaré con la cinta metálica para aislamiento térmico de conducciones de aire acondicionado y os cuento...



  • Hola...

    Como posible solución...,funcionaría cambiando el cristal de la base por un espejo???



  • aobreg dijo:
    Hola...

    Como posible solución...,funcionaría cambiando el cristal de la base por un espejo???


    La cinta de aire acondicionado me la detecta peor que el papel de aluminio, probaré el espejo y te digo.

    De todas formas, un sensor de 10 mm vale 5 euros, es la mejor solución.


    Acabo de pedir uno y en un mes lo tendré por aquí, la configuración es la misma, sólo hay que subir un poco la referencia de distancia en el Marlin.



  • Otra opción es poner un diodo en el pin de señal, así no es necesario realizar el divisor de tensión. 
    Me puedes decir como se hace, mañana me traen el sensor y no se montarlo No tengo ni idea de electronica, tiene q ser una esplicacion para niño pequeño


  • En este vídeo se explica fenomenal. Te lo podría redactar, pero es que malpartida lo explica tan bien que es difícil mejorar.



  • hola el sensor q he comprado es Capacitivo se pone igual q el otro sensor, no me he dado cuenta