별카:)
10
2019-06-12 19:08:58
0
94

3d printing 관련 Marlin 펌웨어 질문



안녕하세요! 아두이노 기반 3d printer 펌웨어인 marlin에 대해서 질문드립니다.

marlin 메인 소스코드 안에있는 g-code를 커스터마이징(M422 - M426)해서 자동으로 오프셋을 측정하고 저장하려는 코드를 짜려고 합니다. (프로세싱 이슈와 개별 기능 테스트를 위해서 G-code를 쪼개었지만 추후에 하나로 합칠 예정입니다.) IR 센서는 프린팅베드와 노즐간의 거리를 측정하며 가까울 때 트리거가 됩니다.

우선 알고리즘은

1. homing
2. IR센서를 중심 위치로 옮기기
3. Z-축을 센서가 트리거되지 않을 때 까지 올리기(0.1mm)

다음은 Marlin_main.cpp 에 추가한 코드 입니다.

case 423: // M423: Z-offset calibration/ move probe at the centre point
gcode_G28(false);
enqueue_and_echo_commands_P(PSTR("G1 Z1.8"));
stepper.synchronize();
enqueue_and_echo_commands_P(PSTR("G1 X25 Y50"));
stepper.synchronize();

break;

case 424: // M424: Z-offset calibration/ read probe status, testing
if (current_position[X_AXIS] == 25) {
gcode_M119();
READ(Z_MIN_PROBE_PIN) ^ Z_MIN_PROBE_ENDSTOP_INVERTING;
probe = (READ(Z_MIN_PROBE_PIN) ^ Z_MIN_PROBE_ENDSTOP_INVERTING);
if (probe = true) {
SERIAL_PROTOCOLLNPGM("probe = true.");
}
}

break;

case 425: // M424: Z-offset calibration/ increase the Z height by 0.1

if (probe) {
double Z = current_position[Z_AXIS] + 0.1;
char zaxis[20];//buffer for the real number printing/scaning
SERIAL_PROTOCOLLNPGM("probe = true!.");//for testing
dtostrf(Z, 3, 1, zaxis);
sprintf_P(cmd, PSTR("G1 Z%s F300"), zaxis);
enqueue_and_echo_command(cmd);//send the cmd in the queue
stepper.synchronize();

Z = Z + 0.1;
}

break;

case 426: // M424: Z-offset calibration/ lift Z height(M425) until probe trigger point(probe status = false)
while (probe == true ) {
safe_delay(2000);
enqueue_and_echo_commands_P(PSTR("M425"));
stepper.synchronize();
safe_delay(500);
}

break;

G code M423 - M425은  개별적으로 잘 작동하나 M426 을 보내면 터미널에서 enqueueing은 뜨지만 processing은 하지 않는 것을 보아 커맨드가 큐에 추가되지 않은 것으로 보입니다.

아래는 터미널이 출력하는 정보입니다.

echo:Filament settings: Disabled
echo: M200 D1.75
echo: M200 D0
echo:Steps per unit:
echo: M92 X228.57 Y228.57 Z1828.57 E756.20
echo:Maximum feedrates (units/s):
echo: M203 X70.00 Y70.00 Z20.00 E10.00
echo:Maximum Acceleration (units/s2):
echo: M201 X500 Y500 Z100 E10
echo:Acceleration (units/s2): P R T
echo: M204 P500.00 R500.00 T500.00
echo:Advanced: S T B X Z E
echo: M205 S0.00 T0.00 B20000 X4.00 Y4.00 Z0.20 E0.10
echo:Home offset:
echo: M206 X0.00 Y0.00 Z0.00
echo:Auto Bed Leveling:
echo: M420 S0
echo:PID settings:
echo: M301 P18.88 I0.80 D110.96
echo: M304 P88.61 I15.91 D123.40
echo:Z-Probe Offset (mm):
echo: M851 Z-2.60

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡM423보냄ㅡㅡㅡㅡㅡㅡㅡㅡ

echo:busy: processing
echo:busy: processing
echo:busy: processing
X:60.00 Y:62.00 Z:0.00 E:0.00 Count X:13714 Y:14171 Z:0
echo:enqueueing "G1 Z1.8"
echo:enqueueing "G1 X25 Y50"
ok

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡM424보냄ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Reporting endstop status
x_min: open
y_min: open
z_min: TRIGGERED
z_probe: open
probe = true.
ok

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡM425보냄ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

probe = true!.
echo:enqueueing "G1 Z1.9 F300"
ok

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡM426보냄ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

echo:enqueueing "M425"
echo:enqueueing "M425"
echo:enqueueing "M425"
echo:enqueueing "M425"
echo:enqueueing "M425"
echo:enqueueing "M425"FAILED.
echo:enqueueing "M425"FAILED.
echo:enqueueing "M425"FAILED.
echo:enqueueing "M425"FAILED.
echo:enqueueing "M425"FAILED.




고수님들 도움 부탁 드려요 ㅜ.ㅜ감사합니다.



0
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.