Обнаружение пропуска шагов и калибровка без концевиков (Stall detection & Sensorless homing)

Открытая прошивка RepRapFirmware
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Обнаружение пропуска шагов и калибровка без концевиков (Stall detection & Sensorless homing)

Сообщение demonlibra »

Перевод статьи Stall detection and sensorless homing

Обнаружение пропуска шагов и калибровка без концевиков
Этот документ относится к платам: Duet 2 WiFi / Ethernet, Duet 3 MB6HC и Duet 3 Mini 5+.
Версия прошивки: RepRapFirmware 1.2 и новее (только Duet 2), RepRapFirmware 3.1.1 и новее.


Обзор
Драйверы Trinamic TMC2660 (Duet 2 WiFi / Ethernet), драйверы TMC5160 / 2160 (Duet 3 MB6HC) и драйверы TMC2209 (Duet 3 Mini 5+) поддерживают функцию stallGuard. Эта функция позволяет драйверу обнаруживать остановку двигателя. Обнаружение остановки может быть полезно для определения пропуска шагов, например по причине столкновения сопла с препятствием, а также для парковки осей без использования концевых выключателей.

Драйверы TMC2224 на Duet Maestro не поддерживают обнаружение пропуска шагов.

В прошивке (RRF 3.2), функция обнаружения пропуска шагов не работает с платами Duet 3 TOOL1LC и EB3HC и не может использоваться для парковки.
См. Раздел Ограничения конфигурации прошивки Duet 3.


Ограничения
  • Порог обнаружения пропуска шагов необходимо настраивать под конкретный шаговый двигатель.
  • Драйверы шагового двигателя обновляют состояние обнаружения пропуска шагов только каждые 1 или 4 полных шага, в зависимости от конфигурации.
    Таким образом, фактическое положение при обнаружении шага будет соответствовать +/- половине полного шага или +/- 2 полных шага.
    Это означает, что данный метод парковки намного менее точный, чем при использовании концевых выключателей.
  • Обнаружение пропуска шагов ненадежно при низких оборотах двигателя.
    На низких скоростях возможны ложные срабатывания. Чтобы избежать этого, прошивка позволяет устанавливать минимальные скорости (в полных шагах двигателя в секунду), ниже которых обнаружение пропуска шагов будет игнорироваться. Эти значения, возможно, потребуется настроить в соответствии с вашими требованиями. Надежное обнаружение пропуска шагов легче настроить при более высоких скоростях двигателя.
  • Обнаружение пропуска шагов ненадежно при скоростях двигателя, которые слишком высоки, чтобы драйверы могли подавать напряжение, достаточное для поддержания тока двигателя.
    Поэтому, если вы хотите использовать обнаружение пропуска шагов во время печати, вы должны ограничить скорость печати до значений, не требующих более высокого напряжения, чем обеспечивает ваш источник питания (максимум 25 В).
    См. Раздел Выбор шаговых двигателей: как рассчитать необходимое напряжение источника питания.
  • Порог обнаружения пропуска шагов немного зависит от температуры двигателя, поэтому нельзя допускать значительных колебаний температуры двигателя.
  • Обнаружение пропуска шагов работает путем обнаружения увеличения нагрузки двигателя.
    Возможно, потребуется уменьшить ускорение и/или рывок, чтобы избежать ложного обнаружения пропуска шагов.
  • Очень вероятно, что обнаружение пропуска шагов работает лучше на слаботочных двигателях с большой индуктивностью, чем на сильноточных двигателях с малой индуктивностью, хотя мы не проверили это экспериментально.
    К сожалению, двигатели с высокой индуктивностью страдают от снижения крутящего момента и повышенного шума на более низких скоростях, чем двигатели с низкой индуктивностью, поэтому их не рекомендуется использовать, если вы хотите получить перемещения с высокой скоростью.

Минимальная рекомендуемая скорость
Приблизительное значение минимальной скорости вращения (полных шагов в секунду) задаётся в параметре M915 H, для которой возможно получить надежное обнаружение пропуска шагов, определяется следующей формулой:

Hmin = full_steps_per_rev * Rated_current * actual_current / (sqrt (2) * pi * Rated_holding_torque)
где
  • full_steps_per_rev - количество полных шагов на один оборот 200 (для двигателей 1.8) или 400 (для двигателей 0.9)
  • Rated_current - ток (А)
  • Rated_holding_torque - удерживающий момент (Нм).
Из этой формулы видно, что обнаружение пропуска шагов на низких скоростях легче при более низких токах двигателя.
По этой причине ток двигателя снижают во время парковки без концевиков (Sensorless Homing).

Старайтесь поддерживать скорость выше 40 мм/с.


Настройка
Обнаружение пропуска шагов настраивается командой M915.
  • Pnnn:nnn:... Номер драйвера для настройки
  • Оси X, Y, Z, U, V, W, A, B, C для настройки (альтернатива использованию параметра P)
  • Snnn Порог обнаружения пропуска шагов (от -64 до +63, значения ниже -10 не рекомендуются).
    Более высокие значения уменьшают чувствительность, более низкие значения повышают вероятность ложного обнаружения остановки.
  • Fn Режим фильтра
    1 = с фильтром (одно показание на 4 полных шага)
    0 = без фильтра (по умолчанию, 1 показание на полный шаг)
  • Hnnn (необязательно) Минимальные количество полных шагов двигателя в секунду, при котором работает обнаружение пропуска шагов.
    По умолчанию 200 (попробуйте 400 для двигателей с 0,9 градуса).
  • Rn Действие при обнаружении пропуска шагов
    0 = никаких действий (по умолчанию)
    1 = вывести уведомление в консоль
    2 = приостановить печать
    3 = приостановить печать, выполнить /sys/rehome/.g и возобновить печать
Драйверы шагового двигателя TMC2209, используемый в Duet 3 Mini 5+ (и Duet 3 Tool board TOOL1LC), содержат stallGuard 4, который оптимизирован для работы в режиме stealthChop.
Драйверы TMC5160 и TMC2260 содержат stallGuard 2 и работают в режиме spreadCycle.
Вам необходимо настроить скорость, с которой stealthChop переключается на spreadCycle, командой M569 V. По умолчанию 2000.
  • Выполните в консоли команду M569 P [номер драйвера], чтобы увидеть текущую скорость (мм/сек) переключения в режим spreadCycle.
  • Уменьшение значения параметра V увеличивает порог скорости, с которой драйвер переключается со stealthChop на spreadCycle.
    Убедитесь, что настройка обнаружения пропуска шагов происходит, когда драйвер находится в режиме stealthChop.

Чувствительность обнаружения пропуска шагов (параметры S, F и H)
  • Использование F1 должно снизить вероятность получения ложных срабатываний, а также позволяет выполнить настройку для более высокой скорости.
    В худшем случае (Duet + Duex 5) состояние проверяется каждые 100 мкс.
    Поэтому, если вы используете F0, время между полными шагами должно быть не менее 100 мкс, чтобы гарантировать обнаружение пропуска шагов.
    При F1 время уменьшено до 25 мкс, но при этом возникает задержка обнаружения пропуска шагов.
    Для парковки без концевиков (Sensorless Homing) рекомендуется использовать F0.
  • Установите самое низкое значение параметра S, при котором отсутствуют ложные обнаружения пропуска шагов.
    Типичные значения для двигателей Nema 17 находятся в диапазоне от 1 до 3.
    Ложные сообщения об остановке наиболее вероятны при быстром движении, поскольку ускорение увеличивает нагрузку на двигатель.
    Ложные сообщения об остановке также более вероятны при горячем двигателе.
  • Если трудно подобрать значение S, которое надежно обнаруживает пропуск шагов без ложных срабатываний попробуйте следующее:
    • Увеличьте минимальное количество полных шагов в секунду (параметр H) и используйте более высокие скорости перемещения.
    • Уменьшите ускорение (M201) и/или рывок (M566).
    • Если обнаружение пропуска шагов используется для парковки без концевиков, уменьшите ток двигателя на время парковки.
      Смотрите команду M913: Set motor percentage of normal current.
Действия при обнаружении пропуска шагов (параметр R)
  • Используйте R0, если вы настраиваете обнаружение пропуска шагов для парковки без концевиков (Sensorless Homing).
  • Используйте R1 при экспериментировании с другими параметрами, чтобы вы могли видеть, какой эффект они оказывают.
  • Используйте R2 для автоматической остановки печати при обнаружении пропуска шагов.
  • Используйте R3 чтобы выполнить парковку осей и продолжить печать автоматически.
    У вас должен быть файл /sys/rehome.g с командами парковки.
    На декартовом принтере или принтере CoreXY, как правило требуется парковка только для двигателей X и Y.
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Обнаружение пропуска шагов

Сообщение demonlibra »

личный опыт настройки

В случае платы DUET 3 MINI 5+ необходимо иметь прошивку не старше RepRapFirmware 3.3.
Прошивка RepRapFirmware 3.2 не обнаруживает пропуск шагов с драйверами TMC2209.

Настоятельно рекомендую перед настройкой скинуть ремень.
Я после многократных попыток настройки снял мотор и подключил на столе.
Для проведения экспериментов написал следующий сценарий:
stalldetection_test.gcode

Код: Выделить всё

global counter=0

M569 P0 D3 V20     ; tpwmthrs 40 (117.2 mm/sec)
M569 P1 D3 V20     ; tpwmthrs 40 (117.2 mm/sec)
M906 X1000 Y1000   ; Current mA
M913 X35 Y35       ; Current %
M566 X1 Y1         ; Jerk mm/min
M201 X300 Y300     ; Accelerations mm/sec^2

M220 S20           ; Set speed factor override percentage
M915 X Y S0 F0 H475 R1

;G28
G92 X0 Y0

G0 X20 Y20
while true
  if global.counter=10
    echo "10 pass"
    set global.counter=0
	
  G4 S3
  G1 X145 F6000
  G1 X10 F6000
  M400
  set global.counter=global.counter+1
Сценарий содержит следующие ключевые моменты:
  • Исключение переключения в режим SpreadCycle повышением скорости переключения командой M569 Vn:

    Код: Выделить всё

    M569 P0 D3 V40     ; tpwmthrs 40 (117.2 mm/sec)
    M569 P1 D3 V40     ; tpwmthrs 40 (117.2 mm/sec)
    
    Т.е. переключение в режим SpreadCycle будет происходить при задании скорости перемещения более 117 мм/сек (G1 F7020).
    Этого достаточно, так как все эксперименты будут проводиться со скоростями меньше 100 мм/сек.

    Параметр V необходимо подбирать под свою конфигурацию. Для вывода данных выполните в консоле команды:

    Код: Выделить всё

    M569 P0
    M569 P1
    

  • Уменьшение тока c 1000 до 350 мА командами M906: Set motor currents или M913: Set motor percentage of normal current:

    Код: Выделить всё

    M913 X35 Y35       ; Процент тока, %
    
    В режиме StealthChop при токе меньше 350 мА мотор начинал гудеть, меньше 300 мА - драйвер уходил в аварийное состояние.
    Изображение
    Error: short-to-ground reported by driver(s) 0
    Warning: high temperature reported by driver(s) 0

  • Уменьшение рывков и ускорений командами M566: Set allowable instantaneous speed change и M201: Set max acceleration:

    Код: Выделить всё

    M566 X1 Y1         ; Рывок, мм/мин
    M201 X300 Y300     ; Ускорения, мм/сек^2
    

В процессе исполнения сценария (без внешних воздействий на мотор) меняйте скорость и подбирайте параметры S и H команды M915 для адекватного определения внешнего усилия на мотор.
  • Скорость рекомендую задавать в диапазоне 20 ... 30 мм/сек.
    Скорость легко можно менять ползунком в окне Status.
  • Рассчитайте теоретическое значение H - фильтр по количеству шагов мотора в секунду для функции определения пропуска шагов.
    H ≈ <скорость оси> / <длина периметра шкива> x <Количество шагов мотора на 1 оборот вала> x 0.95
    • Длина периметра шкива GT2-20 равна 40 мм.
    • Количество шагов мотора на 1 оборот вала для двигателя 1.8⁰ - 200, для двигателя 0.9⁰ - 400.
    • Коэффициент 0.95 определён экспериментально.

  • Подберите минимальное значение параметра S, при котором отсутствуют ложные срабатывания.
    Увеличение S уменьшает чувствительность и вероятность ложного срабатывания, но и для срабатывания потребуется большее усилие (удар).

Провёл испытания с разными скоростями и получил следующие значения.
STEPPERONLINE 17HM19-2004S
Скорость оси, мм/сек M915 Hn M915 Sn
10 мм/с H95 S52
15 мм/с H142 S26
20 мм/с H190 S7
30 мм/с H285 S-20
40 мм/с H380 S-38
50 мм/с H475 S-50
60 мм/с H570 S-58
Изображение

Выбрал скорость 20 мм/сек, при которой M915 S ближе к 0.
Провёл эксперименты с остановкой вала рукой и подобрал следующие параметры:

Код: Выделить всё

M915 X Y S6 F0 H187 R1
PURELOGIC PL42H48-D5
Скорость оси, мм/сек M915 Hn M915 Sn
20 мм/с H95 S43
30 мм/с H142 S16
35 мм/с H166 S6
40 мм/с H190 S-2
Изображение

Выбрал скорость 30 мм/сек.
Провёл эксперименты с остановкой вала рукой и подобрал следующие параметры:

Код: Выделить всё

M915 X Y S18 F0 H141 R1
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Обнаружение пропуска шагов и Sensorless homing

Сообщение demonlibra »

продолжение перевода

Sensorless homing
Sensorless homing обеспечивает парковку осей без использования концевых выключателей, за счёт определения пропуска шагов при достижении крайнего положения. Настройка Sensorless homing требует проведения экспериментов для определения параметров.


Настройка Sensorless homing
1. Настройка

Первым шагом в настройке является изменение типа концевого выключателя на sensorless в файле config.g.
Чтобы изменить параметры концевого выключателя используется команду M574 в файле config.g.

Код: Выделить всё

M574 X1 Y1 S3
Команда выше устанавливает концевые выключатели в режим sensorless.

Следующее, что нужно сделать на этом шаге, задать параметры обнаружения пропуска шагов командой M915: Configure motor stall detection в config.g.

Код: Выделить всё

M915 X Y R0 F0
Сохраните изменения. Не нажимайте «да» для перезагрузки, т.к. есть другие изменения, которые необходимо внести.


2. Структура файлов парковки

Следующим шагом является изменение файлов парковки осей X и Y («homex.g», «homey.g» и «homeall.g»)
Необходимо использовать команду M913 для изменения тока моторов.
M906 задаёт ток двигателей, а M913 - процентом от тока двигателя.
homex.g
Ваш homex.g должен выглядеть примерно так:

Код: Выделить всё

M400
M913 X70 Y70 ; drop motor current to 70%
M400 G91; relative positioning
G1 H2 Z10 F12000 ; lift Z relative to current position
G1 H1 X-320.5 F10000 ; move quickly to X axis endstop and stop there (first pass)
G1 H2 X5 F12000 ; go back a few mm
G1 H1 X-320.5 F7000 ; move slowly to X axis endstop once more (second pass)
G1 H2 Z-10 F6000 ; lower Z again
G90 ; absolute positioning
M400
M913 X100 Y100 ; return current to 100%
M400
Файл «homey.g» должен выглядеть аналогично, только с переменными Y вместо X.
В файле «homeall.g» обязательно включите M400 M913 M400 в начало и конец частей парковки X и Y «homeall.g».


3.

Как видно из кода в шаге 2, F-параметры команд G1 для X и Y, довольно высоки. Это связано с тем, что для Sensorless Homing необходимо развивать минимальную скорость. Задайте скорость выше 3600 мм/сек (60 мм/мин). Сохраните изменения.


4. Настройте M906 в config.g

Настройте ток двигателя в файле config.g командой M906.
Постарайтесь использовать как можно более низкий ток (желательно менее 500 мА, если возможно, на X и Y).
Например, на моих CR-10 и Ender-3 мои X и Y установлены на 400 мА в M906. Сохраните изменения.

Сохраните изменения и перезапустите плату Duet.

5. Проверьте изменения параметров

При аварии при попытке выполнения парковки необходимо уменьшить скорость параметром F в командах G1 или уменьшить ток двигателя (M906 и M913).
Проводите тестирование для поиска адекватных параметров.
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Обнаружение пропуска шагов и Sensorless homing

Сообщение demonlibra »

личный опыт с мотором Stepperonline 17HM19-2004S 2А 0.9⁰

У меня получилось парковать оси X и Y со следующими параметрами:
config.g

Код: Выделить всё

; Endstops
M574 X1 S3                                   ; configure sensorless endstop for low end on X
M574 Y1 S3                                   ; configure sensorless endstop for low end on Y

; Configure motor stall detection
M915 X Y R0 F0
homex.g

Код: Выделить всё

; homex.g
; called to home the X axis

M400                   ; Wait for current moves to finish
M569 P0 D3 V40         ; Change from SpreadCycle to StealthChop at 117.2 mm/sec for X axis
M569 P1 D3 V40         ; Change from SpreadCycle to StealthChop at 117.2 mm/sec for Y axis
M913 X35 Y35           ; Decrease motors current to 35% from 1000 mA = 350 mA
M566 X6 Y6             ; Decrease Jerk mm/min
M201 X300 Y300         ; Decrease Accelerations mm/sec^2
G91                    ; Relative positioning

M915 X Y S6 F0 H187 R0 ; Configure motor stall detection
G1 H1 X5 F1200         ; Move X axis from left stop
G1 H1 X-154 F1200      ; Move X axis to left stop
G1 X10 F1200           ; Move X axis from left stop
M400                   ; Wait for current moves to finish

M569 P0 D3 V1000       ; Change from SpreadCycle to StealthChop at 4.7 mm/sec for X axis
M569 P1 D3 V1000       ; Change from SpreadCycle to StealthChop at 4.7 mm/sec for X axis
M913 X100 Y100         ; Return motors current to 100%
M566 X900 Y900         ; Return Jerk 15 mm/min
M201 X1000 Y1000       ; Return Accelerations 1000 mm/sec^2
G90                    ; Absolute positioning
M400                   ; Wait for current moves to finish

homey.g

Код: Выделить всё

; homey.g
; called to home the Y axis

M400                   ; Wait for current moves to finish
M569 P0 D3 V40         ; Change from SpreadCycle to StealthChop at 117.2 mm/sec for X axis
M569 P1 D3 V40         ; Change from SpreadCycle to StealthChop at 117.2 mm/sec for Y axis
M913 X35 Y35           ; Decrease motors current to 35% from 1000 mA = 350 mA
M566 X6 Y6             ; Decrease Jerk mm/min
M201 X300 Y300         ; Decrease Accelerations mm/sec^2
G91                    ; Relative positioning

M915 X Y S6 F0 H187 R0 ; Configure motor stall detection
G1 H1 Y5 F1200         ; Move Y axis from left stop
G1 H1 Y-159 F1200      ; Move Y axis to left stop
G1 Y10 F1200           ; Move Y axis from left stop
M400                   ; Wait for current moves to finish

M569 P0 D3 V1000       ; Change from SpreadCycle to StealthChop at 4.7 mm/sec for X axis
M569 P1 D3 V1000       ; Change from SpreadCycle to StealthChop at 4.7 mm/sec for X axis
M913 X100 Y100         ; Return motors current to 100%
M566 X900 Y900         ; Return Jerk 15 mm/min
M201 X1000 Y1000       ; Return Accelerations 1000 mm/sec^2
G90                    ; Absolute positioning
M400                   ; Wait for current moves to finish

homeall.g

Код: Выделить всё

; homeall.g
; called to home all axes

;HOMING Z
M150 X2 R200 U0 B0 S3    ; Change LedLight of the screen to blue
G91                      ; relative positioning
M913 Z60                 ; set 60% motor current for safety before move
G1 H2 Z-1 F300           ; lift Z relative to current position
G1 H1 Z160 F600          ; move Z up until the endstop is triggered
G1 H2 Z-3 F300           ; lift Z relative to current position
G1 H1 Z3.5 F75           ; move Z up until the endstop is triggered
M913 Z100                ; set 100% motor current for motor Z

;PREPARING HOMING X and Y
M400                    ; Wait for current moves to finish
M569 P0 D3 V40          ; Change from SpreadCycle to StealthChop at 117.2 mm/sec for X axis
M569 P1 D3 V40          ; Change from SpreadCycle to StealthChop at 117.2 mm/sec for Y axis
M913 X35 Y35            ; Decrease motors current to 35% from 1000 mA = 350 mA
M566 X6 Y6              ; Decrease Jerk mm/min
M201 X300 Y300          ; Decrease Accelerations mm/sec^2
G91                     ; Relative positioning
;HOMING X and Y
M915 X Y S6 F0 H187 R0  ; Configure motor stall detection
G1 H1 X5 F1200          ; Move X axis from left stop
G1 H1 X-154 F1200       ; Move X axis to left stop
G1 X10 F1200            ; Move X axis from left stop
M400
G1 H1 Y5 F1200          ; Move Y axis from left stop
G1 H1 Y-159 F1200       ; Move Y axis to left stop
G1 Y10 F1200            ; Move Y axis from left stop
M400                    ; Wait for current moves to finish

M569 P0 D3 V1000        ; Change from SpreadCycle to StealthChop at 4.7 mm/sec for X axis
M569 P1 D3 V1000        ; Change from SpreadCycle to StealthChop at 4.7 mm/sec for X axis
M913 X100 Y100          ; Return motors current to 100%
M566 X900 Y900          ; Return Jerk 15 mm/min
M201 X1000 Y1000        ; Return Accelerations 1000 mm/sec^2
G90                     ; Absolute positioning
M400                    ; Wait for current moves to finish

;HOMING X and Y manual without limit switches
;M150 X2 R0 U0 B200 S3    ; Change LedLight of the screen to blue
;M18 X Y                  ; Switch off motor X and Y
;M300 P500                ; Beep
;M291 P"Move head X0 Y0" R"HOMING X Y" S2 ; Show message on the screen
;M17                      ; Switch on all motors
;G92 X0 Y0                ; Set current position X=0 Y=0

Подбор скорости перемещения и параметров команды M915 были выполнены выше.

Файл homex.g исполняется при вводе в консоле G28 X
Файл homey.g исполняется при вводе в консоле G28 Y
Файл homeall.g исполняется при вводе в консоле G28

Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Обнаружение пропуска шагов и Sensorless homing

Сообщение demonlibra »

Подобрал параметры Sensorless Homing шаговых двигателей PURELOGIC PL42H48-D5 для прошивки RepRapFirmware.
Снизил скорость с 30 до 20 мм/сек.
homeall.g

Код: Выделить всё

; homeall.g
; called to home all axes

M17                     ; Enable all stepper motors
G4 S1                   ; Wait 1 second

;HOMING Z
M150 X2 R200 U0 B0 S3   ; Change LedLight of the screen to blue
G91                     ; relative positioning
M913 Z60                ; set 60% motor current for safety before move
G1 H2 Z-1 F300          ; lift Z relative to current position
G1 H1 Z160 F600         ; move Z up until the endstop is triggered
G1 H2 Z-3 F300          ; lift Z relative to current position
G1 H1 Z3.5 F75          ; move Z up until the endstop is triggered
M400                    ; Wait for current moves to finish
M913 Z100               ; set 100% motor current for motor Z


;PREPARING HOMING X and Y
G4 S1                   ; Wait 1 second
M569 P0 D3 V40          ; Change from SpreadCycle to StealthChop at low speed for X axis
M569 P1 D3 V40          ; Change from SpreadCycle to StealthChop at low speed for Y axis
M913 X30 Y30            ; Decrease motors current to 30%
M566 X1 Y1              ; Decrease Jerk mm/min
M201 X300 Y300          ; Decrease Accelerations mm/sec^2
G91                     ; Relative positioning
M915 X Y H90 S45 F0 R0  ; Configure motor stall detection for 20 mm/sec

;HOMING X
G1 H1 X5 F600           ; Move X axis from left stop
G4 P100                 ; Wait 100 msec
G1 H1 X-154 F1200       ; Move X axis to left stop at 20 mm/sec
G4 P100                 ; Wait 100 msec
G1 X10 F600             ; Move X axis from left stop
M400

;HOMING Y
G1 H1 Y5 F600           ; Move Y axis from left stop
G4 P100                 ; Wait 100 msec
G1 H1 Y-159 F1200       ; Move Y axis to left stop at 20 mm/sec
G4 P100                 ; Wait 100 msec
G1 Y10 F600             ; Move Y axis from left stop
M400                    ; Wait for current moves to finish

M913 X100 Y100          ; Return motors current to 100%
M566 X900 Y900          ; Return Jerk to 15 mm/min
M201 X1500 Y1500        ; Return Accelerations 1500 mm/sec^2
G90                     ; Absolute positioning
M400                    ; Wait for current moves to finish

;HOMING X and Y manual without limit switches
;M150 X2 R0 U0 B200 S3    ; Change LedLight of the screen to blue
;M18 X Y                  ; Switch off motor X and Y
;M300 P500                ; Beep
;M291 P"Move head X0 Y0" R"HOMING X Y" S2 ; Show message on the screen
;M17                      ; Switch on all motors
;G92 X0 Y0                ; Set current position X=0 Y=0
homex.g

Код: Выделить всё

; homex.g
; called to home the X axis

M400                    ; Wait for current moves to finish
M569 P0 D3 V40          ; Change from SpreadCycle to StealthChop at high speed for X axis
M569 P1 D3 V40          ; Change from SpreadCycle to StealthChop at high speed for Y axis
M913 X30 Y30            ; Decrease motors current to 30%
M566 X1 Y1              ; Decrease Jerk mm/min
M201 X300 Y300          ; Decrease Accelerations mm/sec^2
G91                     ; Relative positioning

G1 H1 X5 F600           ; Move X axis from left stop
M400                    ; Wait for current moves to finish
M915 X Y H90 S45 R0     ; Configure motor stall detection for 20 mm/sec
G4 P100                 ; Wait 500 msec
G1 H1 X-154 F1200       ; Move X axis to left stop at 20 mm/sec
G4 P100                 ; Wait 500 msec
G1 X10 F1200            ; Move X axis from left stop
M400                    ; Wait for current moves to finish

M913 X100 Y100          ; Return motors current to 100%
M566 X900 Y900          ; Return Jerk 15 mm/min
M201 X2000 Y2000        ; Return accelerations 1000 mm/sec^2
G90                     ; Absolute positioning
M400                    ; Wait for current moves to finish

homey.g

Код: Выделить всё

; homey.g
; called to home the Y axis

M400                    ; Wait for current moves to finish
M569 P0 D3 V40          ; Change from SpreadCycle to StealthChop at high speed for X axis
M569 P1 D3 V40          ; Change from SpreadCycle to StealthChop at high speed for Y axis
M913 X30 Y30            ; Decrease motors current to 30%
M566 X1 Y1              ; Decrease Jerk mm/min
M201 X300 Y300          ; Decrease Accelerations mm/sec^2
G91                     ; Relative positioning

G1 H1 Y5 F600           ; Move Y axis from left stop
M400                    ; Wait for current moves to finish
M915 X Y H90 S45 R0     ; Configure motor stall detection for speed 20 mm/sec
G4 P100                 ; Wait 500 msec
G1 H1 Y-159 F1200       ; Move Y axis to left stop at 20 mm/sec
G4 P100                 ; Wait 500 msec
G1 Y10 F1800            ; Move Y axis from left stop
M400                    ; Wait for current moves to finish

M913 X100 Y100          ; Return motors current to 100%
M566 X900 Y900          ; Return Jerk 15 mm/min
M201 X1500 Y1500        ; Return Accelerations 1000 mm/sec^2
G90                     ; Absolute positioning
M400                    ; Wait for current moves to finish

Не бойся поломать. Бойся не починить ))
Изображение

Вернуться в «RepRapFirmware»