Olá
Revisitando este tópico, juntei algumas dicas para os colegas que resolverem tentar o BAL no Repetier Firmware 1.0.3. Segue com comentários o que alterei no Configuration.h
1) #define HOMING_ORDER HOME_ORDER_XYTZ
Isso é necessário para o HOME primeiro ir para X, depois Y, depois temperatura (se houver) e finalmente o Z. Se usar o Z primeiro (HOME_ORDER_ZXY, que é o padrão), pode acabar com o servo fora da mesa e dar zica
2) como o repetier-firmware não tem o Z_SAFE_HOMING do Marlin, e o que mais acontece é dar porrada no pobre do bracinho do servo durante os testes (ou quebrar o servo, como eu quebrei), então recomendo forçar o HOME do Z acontecer no centro da mesa com
#define ZHOME_X_POS 100
#define ZHOME_Y_POS 100
3) Para usar um servo, precisa conectar o vcc ao + na RAMPS e conectar o brinquedo aos pinos do servo 0 (1o servo). O negativo é perto da borda, positivo no meio e sinal mais pro centro da placa, então se ligar invertido só não funciona, mas não queima. Para habilitar no firmware, basta
#define FEATURE_SERVO 1
#define SERVO0_NEUTRAL_POS 1500
Como já disseram no tópico, para testar qual a posição correta do braço levantado (stow) e baixado (deploy) use o gcode M340 P0 Sx onde x varia de 1 a 2500(?), sendo 0 para desligar o servo. No meu caso ficou 500 e 1500, mas no seu caso pode encontrar outros valores dependendo da posição que estava quando parafusou o bracinho
Suba o firmware e teste o servo com o gcode M340 P0 Sxx antes de continuar, e anote os valores para o braço baixado e recolhido.
4) Para habilitar o BAL no Repetier Firmware a documentação é pouca e ruim. Tem uma explicação (em inglês) no inicio do arquivo Repetier-Firmware/Repetier/BedLeveling.cpp, vale uma lida, assim como
aqui. A rigor, você precisa de
#define FEATURE_Z_PROBE 1
Se usar o bico como probe, ao invés de um servo,
#define EXTRUDER_IS_Z_PROBE 1 // a única coisa que essa linha faz é ignorar os X e Y offset do probe
(FEATURE_AUTOLEVEL é para calibração de deltas, deixe zerado numa cartesiana)
5) Normalmente se usa o pino do endstop z-min para o probe. Configure no define e verifique se está funcionando com o gcode M119, alterando PULLUP e HIGH de acordo (o normal é 0, para botões normalmente fechados. Eu uso normalmente abertos, então ponho 1)
#define Z_PROBE_PIN ORIG_Z_MIN_PIN
#define Z_PROBE_PULLUP 1
#define Z_PROBE_ON_HIGH 1
6) A posição do botão do servo em relação ao bico é configurada com
#define Z_PROBE_X_OFFSET 0
#define Z_PROBE_Y_OFFSET 0
#define Z_PROBE_HEIGHT 40
#define Z_PROBE_BED_DISTANCE 10
Se o X for negativo, o botão está a ESQUERDA do bico. Se o Y for positivo, o botão está ATRÁS do bico (mais pro fundo da impressora). A altura e a distância são coisas que você vai inicialmente chutar e depois ajustar na mão com a coisa montada. Se usar o bico como acionador do botão, HEIGHT será NEGATIVO, caso contrário positivo.
7) Caso use o servo, precisa configurar os gcodes que acionam e guardam o braço (os valores S1500, bara baixado, e S500, para recolhido, você obteve lá no passo #3)
#define Z_PROBE_START_SCRIPT "M340 P0 S1500 R500"
#define Z_PROBE_FINISHED_SCRIPT "M340 P0 S500 R500"
8) Você pode querer definir também
#define Z_PROBE_REPETITIONS 2 // Quantas vezes vai testar cada ponto
#define Z_PROBE_SWITCHING_DISTANCE 5 // Distancia (altura) segura para recolher o botão (o firmware reclamou do valor padrão que é 3 e eu precisei aumentar)
#define Z_PROBE_SPEED 150 // Velocidade para o eixo-z em mm/s durante a medição
#define Z_PROBE_XY_SPEED 1500 // Velocidade do x e y em mm/s - pode ser qualquer coisa entre MAX_ACCELERATION_UNITS_PER_SQ_SECOND_X e MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_X
9) Os 3 pontos que vão servir de medição são definidos abaixo. Uma dica, como o braço do servo pode estar bem a esquerda, a medição do primeiro X deve começar dentro da mesa de forma que o braço fique sobre ela (por exemplo, em 50). Garanta o mesmo para o Y. O segundo ponto fica a direita (X2 próximo de 200) na mesma linha Y. E o terceiro ponto na mesma coluna X2 com o Y próximo do fim da mesa. Você acha esses pontos movendo o bico com o repetier-host e baixando o servo (usando o gcode numa altura apropriada)!
#define Z_PROBE_X1 50 // precisa compensar o Z_PROBE_X_OFFSET
#define Z_PROBE_Y1 30 // precisa compensar o Z_PROBE_Y_OFFSET
#define Z_PROBE_X2 180
#define Z_PROBE_Y2 Z_PROBE_Y1
#define Z_PROBE_X3 Z_PROBE_X2
#define Z_PROBE_Y3 180
10) Agora vem a parte chata... recomendo fazer isso com a mesa usando MOLAS e tomando muito cuidado para o braço do servo não descer fora da mesa para, com movimentos errados, dar zica no brinquedo.
Execute os comandos pelo repetier-host
G0 Z50 // sobe o bico para uma distancia segura para baixar o braço do servo
G28 X0 Y0 // home do x e y
G0 X100 Y100 // vai pro meio da mesa
M340 P0 Sxxx // baixa o braço, use o número achado no passo #3
G28 Z0 // vai baixar o Z até acionar o botão
Isto feito, se acontecer com você o que aconteceu comigo, do probe "enterrar" dentro
da mesa (usou as molas como sugeri, não usou??), suba manualmente o Z pelo repetier-host até notar que a
mesa não está mais pressionada pelo probe. Esse Z que achou vai ser o valor do Z_PROBE_BED_DISTANCE do passo #6. Agora suba mais um pouco até ouvir o clique do botão ser "desacionado", a diferença deste para a distância encontrada antes vai ser o número do Z_PROBE_HEIGHT do passo #6. Você pode gravar os valores achados na EPROM (ALT+E), e em seguida executar o gcode M501 para recarregar o valor para a RAM tornando-o ativo
Eu tive que repetir esse processo algumas vezes até achar os valores ideais de altura e distancia do meu probe. Quando a impressora deixou de "enterrar" o bico na mesa, eu retirei as molas para fazer o ajuste final da altura, porque o auto bed leveling precisa da mesa um pouco mais dura para acionar o botão...
Agora faça G29 e, com sorte, vai obter na janela de debug do
repetier-host a informação de alinhamento da sua mesa. Pode querer usar
para ajustar os parafusos e repetir o processo (mais fácil que baixando o
bico numa folha de papel, não é?) para deixar sua mesa completamente alinhada.
E então, finalmente, execute G32 para gerar o mapa da sua mesa. Após isso, o bico fica levantado, execute G0 X100 Y100 Z0 F4000 e o bico deve ficar rente com o meio da mesa. Andar pelo X e pelo Y com o repetier-host deve ajustar o Z sozinho "automagicamente"... se tudo estiver certo, obviamente ;-)
No fatiador, meu gcode de inicio ficou (não precisei fazer ajustes manuais do Z, como alguns colegas fizeram)
G0 Z10 ; sobe Z só por segurança (coloque um valor que de espaço para o braço baixado do seu servo)
G28 X0 Y0 ; home x e y
G4 P0 ; espera o home acabar
; pode inserir o pre-aquecimento aqui, se desejar
; M340 P0 S1500 ; se precisar baixar o braço. valor do passo #3!
G32 ; faz o ABL
; M340 P0 S500 ; se precisar subir o braço. valor do passo #3!
G1 X0 Y0 Z0 F4000 ; vai pro canto para começar a impressão
Bem, é isso. Espero que ajude a quem se aventurar a usar o BAL do Repetier!!!
[]s, !3runo Cabral