За месяц у меня скопились три заявки: покормить кота, пока я в отъезде, закрыть штору по расписанию, повернуть стрелку-указатель на стенд. Все три закрылись одним и тем же вопросом: сколько шагов. Моторы разные, механики разные, но расчёт один — шаги на единицу результата, время хода и точка нуля. Каждый расчёт ниже я гонял на столе, а цифры взял из конструкций, которые пережили хотя бы неделю работы: витринные проекты и рабочие дают разные числа. Здесь считаю все три проекта от числа до скетча, чтобы под вашу задачу осталось подставить свои миллиметры и граммы.
Рамка простая: кормушка отмеряет корм оборотами шнека, шторка ездит миллиметрами от концевика, указатель показывает градусы. Для каждого — мотор, арифметика, главная грабля. Когда дойдёте до своей механики, которой тут нет, — калькулятор механики раздела сведёт шаги с оборотами и передаточными числами за минуту. Три примера выбраны под три способа считать — обороты, миллиметры, градусы; остальное собирается из этих кубиков. И у всех трёх общий знаменатель: мотор без датчика верит только себе, поэтому ноль в каждом сценарии берут извне.
Кормушка: порция равна обороту
Шнек диаметром 30 миллиметров выдаёт за оборот около пятнадцати граммов сухого корма — цифра с моей воронки, у вас будет своя, отмерьте раз и запишите. Порция — ровно один оборот вала: 2048 полных шагов у 28BYJ-48. Скорость 8 об/мин: оборот идёт 7,5 секунд, кот не пугается шума. Быстрее можно, но смысла нет: на 8 об/мин корм сыплется ровно, без пылевого облака из воронки. Три порции в день — мотор работает по десять секунд и молчит остальные. Для этой задачи сила NEMA 17 не нужна от слова совсем; серво-версия дозатора есть в уроке про кормушку для питомца, шаговик выигрывает тем, что делает не один оборот, а сколько захотите — серво упрётся в свои 180 градусов. Скорость подбирается по шуму, а не по спешке: 8 об/мин звучит тихим шелестом, на пятнадцати редуктор трещит, и кот прячет усы.
Расписание держит millis: интервал шесть часов, по таймеру — реверс на сто шагов, чтобы отмахать крошки от заслонки, и порция вперёд. Когда порции привязаны к часам суток, а не к интервалу, прикручиваются часы реального времени: автополив по расписанию живёт на той же логике и переезжает в кормушку с заменой реле на мотор.
Осталась тонкость, которую я узнал на второй неделе: бункер. Первые порции шнек отдаёт честно, к третьему дню корм слёживается и давит на витки, и без реверса-встряски порция выходит вдвое легче расчётной. Отсюда сто шагов назад перед каждой подачей — они стоят секунды, а точность дозы возвращают на место. И не прижимайте шнек к заслонке вплотную: зазор в два миллиметра, который выглядит халтурой на чертеже, спасает от заклинивания на крупном корме.
#include <Stepper.h> const int STEPS_PER_REV = 2048;Stepper stepper(STEPS_PER_REV, 8, 10, 9, 11); const unsigned long INTERVAL = 21600000UL; // 6 часов между порциямиunsigned long lastFeed = 0; void setup() { stepper.setSpeed(8); Serial.begin(9600); Serial.println("Feeder ready: porsiya = 1 oborot");} void loop() { if (millis() - lastFeed >= INTERVAL) { lastFeed = millis(); stepper.step(-100); // реверс: отмахать крошки от заслонки delay(200); stepper.step(STEPS_PER_REV); // порция: ровно оборот шнека Serial.println("Porsiya vydana: 2048 shagov"); }}Шторка: концевик и ход
Механика определяет мотор сразу. Шнур на барабане диаметром 20 миллиметров наматывает 62,8 миллиметра за оборот; ход 1,2 метра — это девятнадцать оборотов. NEMA 17: 19 × 200 = 3856 шагов, при 120 об/мин весь ход занимает десять секунд. 28BYJ-48: 19 × 2048 ≈ 39 000 шагов, при потолке 10 об/мин — почти две минуты против десяти секунд, и это ещё полбеды. Беда в моменте: штора массой два килограмма на барабане радиусом сантиметр требует 2 кг·см — почти семикратно больше паспортных трёхсот грамм-сантиметров. Пластиковый редуктор такую тягу просто проскальзывает, я это проходил на собственной шторе. Альтернатива шнуру — ремень GT2 со шкивом на двадцать зубьев: сорок миллиметров за оборот, ход 1,2 метра — тридцать оборотов и шесть тысяч шагов; расчёт тот же, меняется только цена сантиметра пути: шкив на двадцать зубьев и метр ремня стоят около шестисот рублей.
Ноль шторка берёт при включении: мотор едет к концевику на D2 мелкими порциями, срабатывание — отъезд и обнуление счёта, дальше любой ход считается от нуля. Схему homing с защитой от слепого пробега собирает урок про нулевую точку, границы хода и аварийный стоп — урок про лимиты хода. Без концевика счёт шагов после первого же проскальзывания шнура врёт, и штора доезжает до упора с гулом на полную мощность. Порог срабатывания держите с гистерезисом: после первого касания отъезд на сто шагов и только потом обнуление — иначе дребезг концевика размажет ноль на десятки шагов. Концевик берите с рычагом: штора наезжает мягко, а не бьёт кнопкой в торец. Последовательность моего homing: до десяти шагов за раз, пауза пять миллисекунд, максимум четыре тысячи шагов на поиск — концевик обычно находится на второй сотне, и защита останавливает слепую езду раньше, чем шнур намотается на барабан.
Указатель: градусы в шаги
Указатель — самая честная задача для 28BYJ-48: груз — стрелка, скорость любая, точность 0,176 градуса. Арифметика: 2048 шагов на 360 градусов — 5,689 шага на градус; 90 градусов — 512, четверть оборота; 45 — 256. Пока цель кратна четвертям, всё целое и счёт идёт без хвостов. Поэтому я заранее огрубляю шкалу к четвертям оборота — 512 шагов на деление, и расчёт всегда падает в целые. Первый же угол в 10 градусов даёт 56,89 шага, и округление начинает жить своей жизнью: если каждый ход считать заново от округлённого числа, хвосты складываются. Правильно — держать позицию в long и считать разницу между целью и позицией, а по обороту сверяться с концевиком. На моём стенде погоды стрелка ходит между сектором «ясно» и «дождь» — двадцать два градуса цели, сто двадцать пять шагов, и за два месяца расхождения с концевиком не случилось. Таблицу перевода и ловушки округления разбирает урок про шаги на градус.
Между ходами обесточивайте: стрелке нечего держать, а 240 миллиампер удержания круглосуточно греют мотор и сжирают питание стенда за сутки. Стратегии снятия тока и сторож простоя — в уроке про ток удержания. Если стрелка оползает под собственным весом — это вопрос механики, а не тока: противовес решает дешевле, чем более мощный мотор.
| Проект | Мотор и драйвер | Расчёт хода |
|---|---|---|
| Кормушка | 28BYJ-48 + ULN2003 | порция = 2048 шагов (оборот шнека), 7,5 с при 8 RPM |
| Шторка | NEMA 17 + A4988 | ход 1,2 м = 19 оборотов = 3856 шагов, ноль с концевика |
| Указатель | 28BYJ-48 + ULN2003 | 5,689 шага на градус: 90 градусов = 512, позиция в long |
Как считать свою задачу, которой здесь нет. Алгоритм в четыре строки: единица результата — порция, миллиметр, градус; сколько её даёт один оборот вашей механики; обороты умножить на шаги мотора; результат разделить на скорость в об/мин — это время хода. Проверим на шибере вентиляции: ход 200 миллиметров, винт М8 даёт 1,25 миллиметра за оборот — 160 оборотов, 32 000 шагов у BYJ, и при 12 об/мин это почти тринадцать минут. Вывод напрашивается сам: либо винт с крупным шагом, либо NEMA 17 на сотнях оборотов, либо смириться с медленным шибером. На практике я выбрал третий вариант: вентиляция обновляется раз в десять минут, и никто не заметил.
И последняя скобка, которая экономит вечера: считайте не лучший случай, а худший. Корм слёживается, шнур натягивается на морозе, стрелка трёт о шкалу — всё это добавляет момент, которого нет в таблице мотора. Запас в два раза по моменту и по времени — не роскошь, а разница между проектом на неделю и проектом на месяц переделок. Я оставляю двадцать-тридцать процентов на всё это разом — и перестал переписывать скетчи после первого запуска.
- 1. Порция кормушки — один оборот шнека. Сколько полных шагов у 28BYJ-48?
- 2. Ход шторки 1,2 метра на барабане 20 мм — сколько оборотов вала?
- 3. Почему для шторки берут NEMA 17, а не 28BYJ-48?
- 4. Сколько шагов на 90 градусов у 28BYJ-48 в полном шаге?
- 5. Шнек кормушки заклинило крошками. Что покажет счётчик шагов?
- Порция = оборот: 2048 шагов, 7,5 секунды при 8 RPM; реверс на сто шагов отмахивает крошки
- Шторке нужен NEMA 17: момент 2 кг·см против 0,3 у BYJ и ход в десять секунд против минут
- Концевик обязателен: ноль берут при включении, счёт шагов после заедания врёт честным голосом
- Указатель: 2048/360 = 5,689 шага на градус, 90 градусов = 512; позицию держите в long, а не в округлённых углах
- Между подачами обесточивайте: 240 мА удержания греют мотор, который ничего не держит
Частые вопросы по теме урока
- Порция кормушки — один оборот шнека. Сколько полных шагов у 28BYJ-48?
- 2048 полных шагов на оборот: 32 шага ротора умножить на редуктор 1:64. При 8 RPM такой оборот идёт 7,5 секунды. Один грамм корма при шнеке 30 мм — примерно 136 шагов. 2048
- Ход шторки 1,2 метра на барабане 20 мм — сколько оборотов вала?
- Окружность барабана 62,8 мм: 1200 / 62,8 ≈ 19 оборотов. Для NEMA 17 это 3856 шагов, для 28BYJ-48 — около 39 тысяч. около 19
- Почему для шторки берут NEMA 17, а не 28BYJ-48?
- Момент решает: 2 кг·см против 0,3 у BYJ — редуктор проскальзывает. Скорость вторая: 39 000 шагов при потолке 10-15 RPM тянутся минуты. Штора в 2 кг требует момент в разы больше 300 г·см, а ход занимает минуты против секунд
- Сколько шагов на 90 градусов у 28BYJ-48 в полном шаге?
- Четверть оборота: 2048 / 4 = 512 шагов. 45 градусов — 256, а вот 10 градусов дают 56,89 шага с хвостом. 512
- Шнек кормушки заклинило крошками. Что покажет счётчик шагов?
- Библиотека считает импульсы, а не положение вала: при срыве шагов счёт идёт дальше без движения. Нужны концевик, датчик поворота или реверс-встряска. Счёт продолжится: порция «выдана», а корма нет