Гравёр хотел поднимать стол кнопкой: щёлк — и платформа с заготовкой подъехала под лазер ровно на десять миллиметров. Вал 28BYJ-48 сделал свои две тысячи шагов, стол поднялся… на сколько? У вала шаги, у стола миллиметры, а между ними винт с гайкой. Пока я не посчитал ход винта за оборот, ответ звучал как «примерно», а в механике «примерно» через десять включений превращается в «где моя заготовка».
Винтовая пара — самый честный переводчик из оборотов в прямую линию: вал крутится, гайка едет по прямой, гайку прикручиваете к столу — стол едет вверх. Вся арифметика держится на одном числе: сколько миллиметров проходит гайка за один оборот винта. Это называется ход за оборот, и у винтов одинакового диаметра оно разное — от 1,25 мм у обычной метрической М8 до 8 мм у станковой TR8×8. Что значат обе цифры в маркировке и почему 8 — это не шаг резьбы, разложено в уроке-калькуляторе механики; здесь берём число как есть и считаем.
Шаг на миллиметр: считаем от хода винта
Формула одна: шагов на миллиметр равно шагов на оборот мотора, делённых на ход винта. Для 28BYJ-48 (2048 шагов — откуда число, показано в уроке про передаточное число) с TR8×8 — 2048 / 8 = 256 шагов на каждый миллиметр хода. Один полный шаг двигает стол на 1/256 мм, то есть примерно на 4 микрона. Звучит как измерительная лаборатория, но это бумажная точность: люфт гайки 0,1-0,5 мм, упругость муфты и прогиб самого стола съедают нули быстрее, чем вы успеете их записать. Бумажная цифра нужна для скетча, реальная проверяется линейкой.
С NEMA 17 (200 шагов на оборот) и драйвером A4988 в микрошаге 1/16 выходит 3200 импульсов на оборот — на том же TR8×8 это 400 импульсов на миллиметр. Проверка на любом винте одна и та же: командуйте двадцать миллиметров, прикладывайте штангенциркуль, и если расхождение больше полумиллиметра — ищите люфт в механике, а не глюк в скетче. Скорость считается по соседней формуле: обороты в минуту, умноженные на ход винта. setSpeed(10) у 28BYJ-48 на TR8×8 — это 80 мм/мин; тот же мотор на медленном TR8×2 даст 20 мм/мин, зато 1024 шага на миллиметр. Размен точности и скорости тут не в коде, а в железе — в винте.
Отдельно про целые числа в скетче: posShagov / 256 печатает только целые миллиметры, а дробная часть сидит в остатке. Если нужна десятая доля, выводите остаток отдельно: (posShagov % 256) * 10 / 256 — это десятые доли миллиметра теми же целыми числами. Целочисленная арифметика на Uno быстрее и предсказуемее плавающей точки и не тащит с собой сюрпризов округления в логе. Половина жалоб на «неточные» расчёты начинается с деления, а не с механики.
| Винт | Ход за оборот | Шагов/мм с 28BYJ-48 | Держит ли груз без тока |
|---|---|---|---|
| TR8×2 (один заход) | 2 мм | 1024 | Да: угол подъёма резьбы меньше угла трения |
| TR8×8 (четыре захода) | 8 мм | 256 | Обычно да, но при жидкой смазке проверьте рукой |
| ШВП SFU1204 | 4 мм | 512 (с NEMA 17 — 50) | Нет: шариковая гайка почти без трения, нужен ток или тормоз |
| Винт М8 с гайкой | 1,25 мм | 1638 | Да, но люфт резьбы заметнее — для гравёра сойдёт |
Тяга считается через момент мотора: усилие в ньютонах примерно равно 2π, умножить на КПД пары, умножить на момент и поделить на ход винта. Для трапецеидальной резьбы КПД около 0,3-0,4. 28BYJ-48 после своего редуктора выдаёт порядка 0,03 Н·м: 6,28 × 0,35 × 0,03 / 0,008 — около 8 ньютонов, то есть примерно 800 граммов подъёма. Хватает на стол из фанеры с лазерным диодом, не хватает на чугунную плиту. Подставьте свой момент и свой ход — формула одна на все винты.
NEMA 17 с моментом 0,4 Н·м на том же винте даёт уже около 110 ньютонов — одиннадцать килограммов, чем и объясняется выбор этих моторов в 3D-принтерах. КПД здесь главный подозреваемый: шарико-винтовая пара поднимает его до 90% и одновременно умножает цену в пять-десять раз; трапеция со своими 30-40% платит этой неэффективностью за самоторможение. Мой компромисс для самоделок простой: трапеция там, где груз под килограмм и скорость не горит, ШВП — там, где нужны скорость и ресурс, и ток удержания в придачу.
Тягу можно проверить и без формул. Подвесьте к гайке через перекинутый через блок шнур груз: пол-литровая бутылка с водой — это примерно 5 ньютонов. Мотор, который поднимает бутылку на своём винте, реален; мотор, который гудит и стоит, — перегружен, и никакой микрошаг его не спасёт. Такой тест занимает пять минут и сразу показывает рабочий запас: я считаю нормой, когда мотор тянет вдвое больше расчётной нагрузки, — остальное съедают трение направляющих и постаревшая смазка. И помните, что тяга падает с оборотами: на предельных 15 об/мин от паспортного момента остаётся меньше половины, поэтому подъёмники любят неторопливые скорости.
// Подъёмник стола на 28BYJ-48 + TR8x8: D2 вверх, D3 вниз// 256 шагов на миллиметр, лимит 40 мм для защиты механики#include <Stepper.h> const int SHAGOV_MM = 256; // 2048 шагов на оборот / ход 8 ммconst int LIM_MM = 40; // предел хода столаStepper stepper(2048, 8, 10, 9, 11); const int KNOPKA_VVERH = 2;const int KNOPKA_VNIZ = 3;long pozitsiyaMm = 0; void ehat(int mm) { long tsel = pozitsiyaMm + mm; if (tsel < 0) { tsel = 0; } if (tsel > LIM_MM) { tsel = LIM_MM; } int hoda = tsel - pozitsiyaMm; if (hoda == 0) { return; } stepper.setSpeed(10); // 10 об/мин = 80 мм/мин стола stepper.step(hoda * SHAGOV_MM); pozitsiyaMm = tsel; Serial.print("Vysota mm="); Serial.println(pozitsiyaMm);} void setup() { pinMode(KNOPKA_VVERH, INPUT_PULLUP); pinMode(KNOPKA_VNIZ, INPUT_PULLUP); Serial.begin(9600); Serial.println("D2 - vverh na 5 mm, D3 - vniz na 5 mm, limit 40 mm");} void loop() { if (digitalRead(KNOPKA_VVERH) == LOW) { ehat(5); delay(500); } if (digitalRead(KNOPKA_VNIZ) == LOW) { ehat(-5); delay(500); }}Самоторможение: когда ток можно снять
Малый угол подъёма резьбы работает как противоход в велосипеде: крутить винт мотором можно, а нагрузка крутить винт обратно — нет. Для TR8×2 самоторможение гарантировано конструкцией: один заход, угол подъёма заметно меньше угла трения. У четырёхзаходного TR8×8 запас тоньше: сухая резьба обычно держит, но смазанная может отдавать — возьмите за правило проверять собранную ось рукой при выключенном питании. ШВП не держит никогда: трение шариков минимально, стол опустится сам, поэтому на шариковых осях ток удержания обязателен.
Связка с первым уроком этого раздела прямая: если винт самотормозит, сторож простоя становится бесплатным — обесточили, стол стоит, мотор холодный, все детали в уроке про отключение катушек. Если ось на ШВП или ремне — держите током и считайте нагрев. Подъёмники с гравировальной головкой я делаю на трапеции именно ради этого свойства: скорость там не критична, а вот стол, уехавший вниз посреди гравировки, — это испорченная деталь и потраченный материал. Считайте это страховкой, которую механика выдаёт бесплатно, и не стесняйтесь ею пользоваться.
Что проверить после сборки, по шагам. Первое: при выключенном питании стол должен ехать рукой с заметным усилием и не проворачивать винт сам — это проверка самоторможения. Второе: прогон двадцати миллиметров по линейке, расхождение не больше люфта. Третье: десять циклов вверх-вниз с возвратом в ноль с точностью до шага. Если все три прошли, пара готова к работе; если нет — почти всегда виновата гайка: перетянутая греется и клинит, недотянутая люфтит, а регулируемая латунная с пружиной закрывает оба случая за двести рублей. Для затяжных прогонов есть тестовый стенд, который гоняет мотор и драйвер по кругу, — та же арифметика в деле. И помните, что формула шагов на миллиметр работает не только вверх: дозатор филамента из урока про дозатор отмеряет граммы по той же арифметике.
Обслуживание пары — две операции в год. Смазка: трапецию кормят густой пластичной смазкой, тонким слоем по всей резьбе, помня, что TR8×8 со смазкой теряет часть самоторможения — проверяйте рукой после каждой процедуры. ШВП смазывают так же, и потеря самоторможения там не страшна: она его и так не имела. Вторая операция — проверка затяжки гайки и муфты: винт, провернувшийся в посадочном отверстии муфты, тихо съедает счёт шагов, и вся арифметика урока превращается в бумажную фикцию. Плановое обслуживание по-прежнему дешевле внепланового разбора.
- 1. Ход винта — 8 мм за оборот, мотор делает 2048 шагов на оборот. Сколько шагов на миллиметр?
- 2. setSpeed(10) на 28BYJ-48 с винтом TR8×8. Скорость стола?
- 3. Почему ШВП не держит груз без тока?
- 4. Момент мотора 0,03 Н·м, винт TR8×8, КПД 0,35. Что за тяга?
- 5. Стол доезжает до метки с разным перелётом при ходе слева и справа. Первое подозрение?
- Шагов на миллиметр = шагов на оборот / ход винта: 2048 шагов и TR8×8 дают 256 шагов/мм
- Скорость стола = об/мин × ход винта: setSpeed(10) на TR8×8 — это 80 мм/мин
- Тяга ≈ 2π × КПД × момент / ход: 28BYJ-48 на TR8×8 тянет около 800 г, NEMA 17 — порядка 11 кг
- TR8×2 самотормозит всегда, TR8×8 — обычно, ШВП — никогда: проверяйте ось рукой без питания
- Люфт 0,1-0,5 мм — главный вор точности: подход к точке с одной стороны и лимит хода в скетче
Частые вопросы по теме урока
- Ход винта — 8 мм за оборот, мотор делает 2048 шагов на оборот. Сколько шагов на миллиметр?
- 2048 / 8 = 256 шагов на каждый миллиметр хода; один полный шаг сдвигает стол примерно на 4 микрона — бумажная точность. 256
- setSpeed(10) на 28BYJ-48 с винтом TR8×8. Скорость стола?
- Обороты в минуту умножить на ход винта: 10 × 8 = 80 мм/мин. На TR8×2 тот же мотор дал бы 20 мм/мин. 80 мм/мин
- Почему ШВП не держит груз без тока?
- Самоторможение держится на трении в резьбе; шариковая гайка сводит его к нулю, поэтому на ШВП нужен ток удержания или механический тормоз. Шарики в гайке убирают трение — винт провернется от нагрузки
- Момент мотора 0,03 Н·м, винт TR8×8, КПД 0,35. Что за тяга?
- F ≈ 2π × КПД × момент / ход: 6,28 × 0,35 × 0,03 / 0,008 ≈ 8 Н. Стол из фанеры с лазером уедет, чугунная плита — нет. Около 8 Н — примерно 800 граммов
- Стол доезжает до метки с разным перелётом при ходе слева и справа. Первое подозрение?
- Зазор 0,1-0,5 мм между винтом и гайкой не отыгрывается при смене направления. Лечение — подход к точке всегда с одной стороны. Люфт в паре винт-гайка