Calibracion de la impresora con el firmware 1.4.2



  • Hola a todos me gustaria saber como puedo calibrar correctamente la impresora con el firmware 1.4.2, he visto un post en este foro en donde explican el procedimento de calibracion variando unas cifras que controlan el movimiento de los motores, a traves del programa de arduino, pero es con el firmware marlin, he intentado hacerlo pero no lo he conseguido, siempre me da error de compilacion.


    Este es el post del que hablo: Post

    Por eso pregunto si no hay alguna manera de ajustar esta calibracion dentro del firmware original de prusa, es poco lo que necesito ajustar unas decimas de milimetro pero es muy molesto que las piezas no salgan a la medida justa.

    Muchas gracias



  • Que error te da cuando compilas?



  • Me da varios errores:

    Arduino:1.6.1 (Windows 7), Placa:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

    Utilizando biblioteca LiquidCrystal en carpeta: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal

    Utilizando biblioteca SPI en carpeta: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI

    Utilizando biblioteca Wire en carpeta: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire

    C:\Program Files (x86)\Arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10601 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\cardreader.cpp -o C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\cardreader.cpp.o

    C:\Program Files (x86)\Arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10601 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\ConfigurationStore.cpp -o C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\ConfigurationStore.cpp.o

    C:\Program Files (x86)\Arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10601 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\digipot_mcp4451.cpp -o C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\digipot_mcp4451.cpp.o

    C:\Program Files (x86)\Arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10601 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\Marlin.cpp -o C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\Marlin.cpp.o

    C:\Program Files (x86)\Arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10601 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\MarlinSerial.cpp -o C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\MarlinSerial.cpp.o

    C:\Program Files (x86)\Arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10601 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\Marlin_main.cpp -o C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\Marlin_main.cpp.o

    In file included from C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\Marlin.h:15:0,

                 from C:\Users\Raul\AppData\Local\Temp\build4127854337929692811.tmp\Marlin_main.cpp:30:
    

    c:\program files (x86)\arduino\hardware\tools\avr\avr\include\util\delay.h: In function 'void process_commands()':

    c:\program files (x86)\arduino\hardware\tools\avr\avr\include\util\delay.h:163:40: error: __builtin_avr_delay_cycles expects a compile time integer constant

    __builtin_avr_delay_cycles(__ticks_dc);

                                        ^
    

    Error de compilación



  • @raulskarface, usa la versión 1.0.6 de Arduino. La versión que estás usando de Arduino da algunos problemas con la función delay. 



  • Bien sigo diciendo que el error  es que la funcion espera una constante y lo que se le ha introducido es una variable .
    Hay que
    cambiar  _delay_ms() por delay() ya que la funcion
    _delay_ms solamente trabaja con constantes , no se le puede poner una
    variable.

    Si se compila con una version anterior la funcion M300 no va a funcionar. La cuestion es que en versiones anteriores el compilador no producia el error, pero omitia la funcion.
    La solucion mas rapida, compilar con una version anterior, se soluciona el problema NO.
    En el marlin oficial la funcion _delay_ms() no esta puesta esta : delay(). Ahora cada uno que haga lo que quiera



  • He probado con las dos soluciones que me comentais.


    Si uso la version anterior de arduino , me sigue dando errores:

      This report would have more information with
      "Show verbose output during compilation"
      enabled in File > Preferences.
    Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
    In file included from U8glib.cpp:38:
    /U8glib.h:42:25: error: utility/u8g.h: No such file or directory
    In file included from U8glib.cpp:38:
    U8glib.h:48: error: 'u8g_t' does not name a type
    U8glib.h:49: error: 'u8g_uint_t' does not name a type
    U8glib.h:54: error: 'u8g_dev_t' has not been declared
    U8glib.h:55: error: 'u8g_dev_t' has not been declared
    U8glib.h:56: error: 'u8g_dev_t' has not been declared
    U8glib.h:58: error: 'u8g_dev_t' has not been declared
    U8glib.h:60: error: 'u8g_dev_t' has not been declared
    U8glib.h:62: error: 'u8g_dev_t' has not been declared
    U8glib.h:69: error: expected )' before '*' token</span></font></div><div><font face="Arial, Verdana"><span style="font-size: 13.3333330154419px;">U8glib.h:71: error: expected)' before '' token
    U8glib.h:73: error: expected )' before '*' token</span></font></div><div><font face="Arial, Verdana"><span style="font-size: 13.3333330154419px;">U8glib.h:75: error: expected)' before '' token
    U8glib.h:77: error: expected )' before '*' token</span></font></div><div><font face="Arial, Verdana"><span style="font-size: 13.3333330154419px;">U8glib.h:79: error: expected)' before '' token
    U8glib.h:82: error: expected `)' before '' token

    y sigue un monton de veces con este error......, no lo pudeo poner todo en el post que no no cabe


    y si cambio la funcion _delay_ms(1000) por delay(1000) tambien, me da este error:


    In file included from C:\Users\Raul\AppData\Local\Temp\build2755266446379616972.tmp\Marlin.h:15:0,
                     from C:\Users\Raul\AppData\Local\Temp\build2755266446379616972.tmp\Marlin_main.cpp:30:
    c:\program files (x86)\arduino\hardware\tools\avr\avr\include\util\delay.h: In function 'void process_commands()':
    c:\program files (x86)\arduino\hardware\tools\avr\avr\include\util\delay.h:163:40: error: __builtin_avr_delay_cycles expects a compile time integer constant
      __builtin_avr_delay_cycles(__ticks_dc);
                                            ^
    Error de compilación


    Alguna sugerencia



  • a ver tienes que cambiar la función _delay_ms() por delay() , solamente donde se utilicen variables. En el que tu has cambiado no tenias porque ya que 1000 es una constante. El error te lo esta dando en el comando M300 , tiene que cambiar_delay_ms(beepP); por delay (beepP) , el resto de las llamadas a la función están bien ya que utilizan constantes. beeP es una variable y el compilador , espera una constante por eso te da el error.

    Ah se me olvidaba el primer error :
    error: utility/u8g.h: No such file or directory
    es que no encuentra esa librería , a partir de ahi toda la lista de errores.



  • Muchismas gracias por la ayuda, parece que de momento no me da error de compilacion, por lo menos la barra de progreso al compilar avanza mas que antes.
    Pero ahora tengo otro problema, llega a un punto en que la compilacion no da errores pero no avanza, se queda como atascado, me aparece el mensaje de compilando programa.... pero se queda atascado lo ultimo que parece en la consola es: "C:\Users\Raul\AppData\Local\Temp\build4147898410594161709.tmp/core.a -LC:\Users\Raul\AppData\Local\Temp\build4147898410594161709.tmp -lm"

    He probado en varias ocasiones y se pasa mas de media hora sin hacer ningun avance, por lo que creo que algo esta fallando??
    Alguna sugerencia?? Estoy usando arduino 1.6.4 y he cambiado la variable delay tal y como suregiste

    Muchas gracias



  • Bien raulskarface , yo tenia la version de arduino 1.6.3 , así es que me he bajado la 1.6.4 y he compilado el marlin 1.4.2 y todo ok 100% , a demás ha tardado como mucho un minuto. El por que se queda ahi bloqueado , no lo se , pero yo lo que haría seria limpiar el directorio temp , que es donde los programas usan para almacenar ficheros temporal-mente. A ver si es que tienes saturado tu disco duro, no se ?. 



  • Otra solución , es que me mandes por correo el fichero configuration.h , que supongo que sera el que has modificado. Yo te lo compilo y te mando el hex. Aun que con esto no resuelves el problema.



  • Muchas gracias, he limpiado el directorio temp, he desinstalado arduino y he vuelto a instalar, en mi disco duro tengo 10gb libes, asi que no debe ser de eso, tambien he probado en otro portatil y nada.

    No se que es pero algo estoy haciendo mal.

    Lo que hago es descargar el firmware marlin 1.4.2, en u archivo zip, lo descomprimo en una carpeta que se llama Marlin.


    Copio el contenido de la carperta Config/hepestos/ directamente en la carpeta Marlin.
    Copio el contenido de la carpeta libraries, esdecir la carpeta SdFat y U8glib en la carpeta Marlin
    Copio los dos archivos que hay en la carpeta scrib en la carpeta Marlin.

    Despues abro el archivo del proyecto "Marlin.ino".

    Escojo la placa Arduino Mega o Mega 2560, el  procesador atmega 2650 y en la seccion de programador USBasp

    entonces hago el cambio del la variable delay y modifico las variables del parametro DEFAULT_AXIS_STEPS_PER_UNIT

    No se si algo de esto lo estoy haciendo mal, si esta todo bine hecho, la verdad es que no se porque me esta pasando esto, pero bueno.
    Me da rabia, pero tendre que aceptar tu oferta de mandarte el archivo o decirte los valores de default steps per unit for Ultimaker, que es lo unico que quiero ajustar para que las dimensiones de impresion sean las correctas. 

    Pero me da rabia molestarte y tambien me da rabia el no saber porque no me funciona, ademas tengo miedo que al cambiar los valores no esten bien y tener que volver a cambiarlos.

    Muchas gracias



  • Yo la carpeta U8glib y scrib ( sera scripts)  no la he llegado a copiar y me compila bien. Pero boy a hacer la prueba de copiar eso también y ya te digo.



  • Bien si copio la carpeta U8glib , da errores de compilacion

    . Por que no pruebas copiando todo menos esa carpeta a ver que pasa?. Igual el problema viene de esas librerías. 



  • muchisimas gracias parece que asi si que funciona!!!! muchas gracias!!!

    A ver si cambiando solo los valores del moviemiento de los motores puedo corregir los fallos de dimensiones de la piezas.

    Y una ultima pregunta tonta, como genero el archivo .hex para actualizar con cura - Me auto respondo, ya lo he encontrado.

    Ahora mi duda es la siguiente, y perdon por ser tan pesado, Ahora mismo tengo cargado en la impresora el archivo hex del 1.4.2 que hay en el primer post de este foro.
    La impresora funciona muy bien, solo necesito ajustar la calibracion para que las piezas salgan lo mas exactas posible.
    Si yo compilo con arduino a partir del marlin 1.4.2 genérico, y solo varío el idioma y los valores del movimiento de los motores, con esa modificaiones llega para que al archivo que genero tenga la misma configuracion del que tengo ahora cargado??? o tengo que configurar algun parametro mas para que la impresora funcione correctamente???

    Es decir no se si se pueden cambiar los valores de DEFAULT_AXIS_STEPS_PER_UNIT directamente en un archivo.hex, (me da la impresion que no)?????

    De nuevo muchas gracias




  • No puedes modificar los valores en un archivo hex. Si modificas el idioma solamente en el código de Arduino estarías teniendo el mismo firmware que el hex colgado aquí. 


    Para modificar la variable DEFAULT_AXIS_STEPS_PER_UNIT lo debes hacer en el código de Arduino.