Мой первый шагающий паук сорок минут изображал вибрирующий табурет: три серво на борту, каждая отдельно слушалась скетча безупречно, а корпус вместе с ними только дрожал и медленно съезжал набок. Я командовал всем трём моторам разом — write(60), write(120), write(90) — и одинаковыми паузами разворачивал обратно. Механика была честная, провода целые, питание казалось нормальным, но паук не делал ни шага: у трёх суставов не было расписания, кто в этот момент стоит на земле, а кто висит в воздухе. Два вечера я подозревал шестерёнки, прежде чем нарисовал на бумажке четыре фазы — и паук поехал с первого запуска того же железа.
В этом уроке соберём мини-паука на трёх серво: две группы ног и один толкач. Никакой тригонометрии — кинематика здесь умещается в два правила и таблицу поз, которую можно проверить пальцем прямо на макетке. Походку запустим в симуляторе ниже: три циферблата покажут углы всех суставов, а Serial отчитается, какой фазой живёт паук прямо сейчас. Для живой платы понадобится три подключённые SG90 и отдельное питание — к его числам мы подойдём в конце, а пока запомните, что три мотора в момент старта съедают больше, чем отдаёт USB-порт.
Почему именно три? Это минимум, при котором шаг остаётся настоящим: подъёмники ставят ноги и снимают их, толкач двигает корпус относительно опоры. Двумя серво получается уже ёрзание, а не ходьба. Вся конструкция рассчитана на лёгкий корпус: палочки от мороженого, картон, детали из набора. Если хочется возить батарейный отсек на борту — это разговор про MG995 с металлическими шестернями и их токи, я бы не смешивал его с первым пауком.
Кинематика по-простому: два правила походки
Кинематика — слово-страшилка, за которым прячется простой вопрос: куда сдвинется корпус, если повернуть суставы на такие-то углы. Для нашего паука хватает двух правил. Первое: нога в воздухе корпус не двигает — толкают только ноги, стоящие на земле. Второе: поднимать одну группу ног можно только тогда, когда вторая твёрдо стоит. Всё остальное — расписание: в каждый момент паук точно знает, кто опущен, кто поднят и куда едет толкач. Сломанное расписание, а не слабые моторы — так выглядит почти каждая неудача новичка.
Раскладка у меня такая: левое серво поднимает левую тройку ног, правое — правую, третье — толкач, качающий бёдра вперёд и назад относительно корпуса. Углы подъёмников я нарочно сузил: 90° — ноги на земле, 60° — левые в воздухе, 120° — правые. Этого хватает, чтобы оторвать кончики лапок на пару миллиметров, и хватает запаса до упоров — я всегда оставляю от 15 до 30° до крайних положений, когда серво бьётся о механический предел каждые 20 мс, пластиковые зубья облизываются за пару месяцев. Толкач ходит между 70° и 110°: при качалке длиной 3 см это около двух сантиметров хода за гребок. Темп тоже с прикидкой: SG90 при 4,8 В проходит 60° за 0,1 с, поэтому гребок на 40° я растянул на пять шагов по 60 мс — мотор успевает за приказом, и паук не дёргается, а идёт.
Прежде чем лить скетч, я всегда проверяю расписание пальцем: кручу качалки руками из 90° в фазные углы и смотрю, стоит ли в этот момент хоть одна тройка на столе. Пять минут пальцами экономят вечер перепаек: сразу видно, что 60° поднимает лапки выше нужного и серво напрягается, а 120° упирает правую тройку в крышку корпуса. Числа в таблице — стартовые: у вашей механики они будут свои, и подбираются они рукой, а не формулой.
Четыре фазы: расписание вместо углов
Походка живёт в таблице: четыре фазы, и в каждой происходит ровно одно дело — поднять, опустить или прогрести. Моя первая версия делала всё разом: толкач грёб, подъёмники махали, корпус дрожал на месте, потому что опорные ноги ехали вместе с корпусом и скользили по столу. Лечение заняло одну строку — пауза 50–80 мс между сменой опоры и гребком: нога обязана коснуться земли раньше, чем толкач поедет. С той паузой тот же самый паук на том же самом питании проехал полтора метра по столу без единой остановки.
| Фаза | Левые ноги | Правые ноги | Толкач | Что происходит |
|---|---|---|---|---|
| A | 90° — на земле | 120° — подняты | 110° → 70° | опорные левые гребут, корпус едет вперёд |
| B | 90° — на земле | 120° → 90° — встали | 70° — пауза | правые коснулись стола |
| C | 60° — подняты | 90° — на земле | 70° → 110° | опорные правые гребут, корпус едет вперёд |
| D | 60° → 90° — встали | 90° — на земле | 110° — пауза | левые коснулись стола |
Цикл замыкается сам в себя: A — B — C — D — и снова A. При моих паузах полный круг занимает около 1,3 с, и за это время корпус проезжает свои два сантиметра — медленно, зато без пропусков опоры. Если паук едет вбок или заваливается, походка обычно ни при чём: центр тяжести не над опорной группой. Двигайте батарейку вдоль корпуса, пока не поймаете равновесие, — это самый дешёвый балансир. И начинайте с вежливых настроек: такт в полторы секунды и суженные ходы. Широкий мах и бодрый темп я добавляю только после того, как паук сто раз проехал стол, не упав набок.
Когда фаз станет больше четырёх — захотите поворот, ползание назад, стойку на месте, — держите их по-прежнему таблицей, но следите, чтобы скетч не превратился в простыню delay(). Расписание задач без блокировок я разбирал в уроке про планировщик на millis: пауку удобно вести как «до какого времени ждём», а не «спим сколько задано».
Отладка по Serial и питание трёх моторов
Serial — мой главный инструмент на этом этапе: каждая фаза печатает своё имя, а гребок — пары tk=… по шагам. Здоровый лог выглядит как ритмичное чередование FAZA A … FAZA D; десять тактов обязаны дать десять полных четвёрок, и если порядок ломается, сразу видно, на какой фазе паук спотыкается. Пары вида tk=105 нужны и для плоттера: там три ряда суставов ложатся в понятную лесенку — подъёмники ходят ступеньками, толкач пилит пилой. Если лесенка превращается в кашу, значит, серво не успевает и шаги надо растянуть.
Питание — вторая половина успеха. В момент старта каждая SG90 берёт 100–250 мА, три мотора разом — до 700–750 мА, а USB-порт отдаёт около 500 мА, из которых плата отщипывает свои 40–50. Плата перезагружается посреди такта, серво теряют позицию, паук бьётся — и выглядит это ровно как брак. Лечение одно: отдельный отсек на четыре батарейки АА (4,5–6 В) на силовые провода всех трёх серво, минус источника — в общий GND с платой, сигнальные остаются на D11, D10 и D9. Полный разбор с числами и схемой я делал в уроке про внешнее питание серво, а за разводкой шин по макетке удобно сходить в материал про шины питания и полярность.
#include <Servo.h> Servo lev;Servo prav;Servo tk; void setup() { lev.attach(11); prav.attach(10); tk.attach(9); lev.write(90); prav.write(90); tk.write(110);} void loop() { prav.write(120); // A: правые в воздухе delay(80); for (int a = 110; a >= 70; a = a - 10) { tk.write(a); // толкач гребёт delay(60); } prav.write(90); // B: правые встали delay(250); lev.write(60); // C: левые в воздухе delay(80); for (int a = 70; a <= 110; a = a + 10) { tk.write(a); delay(60); } lev.write(90); // D: левые встали delay(250);}- 1. Толкач гребёт в тот момент, когда обе группы ног подняты. Что сделает корпус?
- 2. Сколько серво нужно минимум для настоящей походки с подъёмом групп ног?
- 3. Зачем между опусканием ног и гребком пауза 50–80 мс?
- 4. Как правильно питать три SG90 на одной макетке?
- 5. Ход толкача 70–110°, качалка длиной 3 см. Сколько корпус проходит за один гребок?
- Походка — это расписание фаз, а не набор углов: толкают только ноги, стоящие на земле.
- Подъёмники ходят между 60° и 120°, толкач между 70° и 110° — запас от упоров бережёт шестерёнки.
- Пауза 50–80 мс между сменой опоры и гребком лечит скольжение на месте.
- Три серво питаются от отдельного источника 4,5–6 В, минус — в общий GND с платой.
- Serial ведёт журнал: десять тактов обязаны дать десять четвёрок FAZA A–D, сбои видны по одной фазе.
Частые вопросы по теме урока
- Толкач гребёт в тот момент, когда обе группы ног подняты. Что сделает корпус?
- Первое правило походки: нога в воздухе корпуса не двигает. Толкач переставит бёдра, а корпус останется там же — это и есть скольжение на месте из моей первой версии. останется на месте: двигают только ноги, стоящие на земле
- Сколько серво нужно минимум для настоящей походки с подъёмом групп ног?
- Подъёмники ставят ноги и снимают их, толкач перемещает корпус относительно опоры. На двух серво получается ёрзание, на одном — дёрганье провода. три: два подъёмника и толкач
- Зачем между опусканием ног и гребком пауза 50–80 мс?
- Мотору нужно время доехать до угла: SG90 делает 60° за 0,1 с. Без паузы опорные ноги едут вместе с корпусом — тот самый вибрирующий табурет. чтобы нога коснулась земли раньше, чем корпус поедет, — иначе опора скользит
- Как правильно питать три SG90 на одной макетке?
- Старт трёх моторов — до 700–750 мА, USB отдаёт около 500. Отдельное питание снимает перезагрузки, а общий GND обязателен, иначе сигнал не поймут. отдельный источник 4,5–6 В на силовые провода и общий GND с платой
- Ход толкача 70–110°, качалка длиной 3 см. Сколько корпус проходит за один гребок?
- 40° из полного круга качалки при плече 3 см дают примерно два сантиметра. Число проверяется линейкой за минуту — я так и сверял первые пауки. около 2 см