
Меня не оставляет желание сделать свой маленький квадрокоптер, и хотелось бы прийти к этому планомерно и методично.
В прошлой статье я описал способ определения ориентации с помощью инерциального датчика. Следующий этап - разработка алгоритма автоматической стабилизации. Одной из наиболее простых и применяемых реализаций замкнутого управления является ПИД-регулятор, подробно разобранный на всех тематических ресурсах, например, тут.
Сходу было решено сделать стенд, на котором можно попрактиковаться в отладке алгоритма и подборе коэффициентов. Очевидно, нужно что-то вращающееся и с пропеллерами, но чтобы не улетело, потому что это запрещено.
Так был принят в разработку стенд со следующими требованиями:
-
Стенд должен быть:
экстремальным в эксплуатации
симпатичным
достаточно надёжным, чтобы я наигрался, пока он не сломался
В качестве вычислительного устройства должен использоваться микроконтроллер STM32 с ядром Cortex-M4 или круче
Необходима связь с ПК для настройки коэффициентов и отображения графиков
Обзор будет разделён на три статьи. В сегодняшней расскажу об устройстве стенда, о его механических свойствах, процессе проектирования и электронике.
Механикa

Дом строят с печки, а стенд ПИД-регулятора - с пропеллера, купленного 10 лет назад на Али. Тогда же куплены BLDC моторчик с гордой надписью dji 2212/920KV и подходящий ESC. Диаметр винта внушительный - 254 мм.
Чтобы как-то соотнести с рамой квадрокоптера, длина луча выбрана соответствующая - 254 мм. Чтобы было удобно работать со стендом, сидя за столом, ось луча поднята от станины на те же 254 мм и ещё на чуть‑чуть.
Конструкция несложная, вот основные компоненты:
Станина
Мачта, поднимающая ось луча. Крепится к станине широким фланцем
Балка, одним концом соединённый с мачтой двумя шариковыми подшипниками. На нём крепятся датчик и мотор. Все вместе они образуют луч
Держатель мотора, который является интерфейсом между лучом и мотором
Мотор с пропеллером
Коробочка с электроникой
Благодаря паре шариковых подшипников, разнесённых на 20 мм, луч вращается свободно там, где надо, сохраняя жёсткость в остальных направлениях. Чтобы луч не опрокинулся, на нём предусмотрен упор.
Датчик крепится на луче одним винтом и двусторонним скотчем. Расположен поближе к оси, чтобы уменьшить влияние нормального и тангенциального ускорения при вращении.
Пластиковые детали скрепляются либо болтами, либо винтами и резьбовыми втулками.
Стенд без станины весит 660 грамм, что и является основным критерием надёжности.

Все непокупные детали будут изготовлены на FDM-принтере из PLA. Длинные детали пришлось разделить, чтобы они вместились в принтер. Получилось 30 деталей, 28 из которых напечатались без поддержек.
В качестве станины я выбрал обрезок алюминиевого рабочего стола с T-образными пазами. В пазы отлично помещается шестигранная шляпка гайки М6, которыми крепится фланец. Самоклеящиеся резиновые ножки добавили ему устойчивости и сделали его тише.
Вот правила, которых я придерживался при моделировании стенда:
Параметрическое моделирование
Работу стоит начать с обмера сложных покупных деталей. Параметрическое моделирование предполагает разработку сложных форм, состоящих из геометрических примитивов, получаемых из плоских эскизов экструзией, вращением или протягиванием. Эскизы преимущественно состоят из отрезков, дуг окружностей и точек, взаимное расположение которых определяется привязками и геометрическими размерами. Правильное выстраивание зависимостей облегчит редактирование модели в будущем.

Наиболее универсальным решением считаю использование Excel-таблицы, значения из которой можно импортировать в несколько файлов проекта одновременно. Это избавит от необходимости регулярного согласования деталей в случае изменения габаритов покупных деталей.
Использование сложных эскизов
Почему-то на большинстве курсов по 3D-моделированию учат делать по эскизу для каждой операции создания поверхности (элементы 3D), например, выдавливания или вращения. Однако при таком подходе сложно устанавливать взаимосвязи. Приходится проецировать геометрию, устанавливать привязки. Ссылаться на размеры базовой фигуры становится непросто, приходится включать видимость соответствующего эскиза. В результате на дочернем эскизе появляется такое же количество элементов, как на базовом, и это ради того, чтобы при редактировании элемента 3D, проецированные элементы эскиза потеряли зависимость, или того хуже, эскиз потерял опорную плоскость.

Этих неудобств можно избежать, укладывая большее количество фигур на эскиз. Туда же можно помещать контуры будущих деталей с заведомо известными габаритами. Например, можно нарисовать контур шайбы, чтобы определить размер необходимой площадки. К тому же, это формирует целостное представление о будущей конструкции.
Порядок проектирования
Можно выделить два подхода к созданию сборок:
1) Проектирование отдельных деталей с последующим объединением в файле сборки. В таком случае приходится внимательно пользоваться внешней таблицей параметров, импортировать параметры деталей из других файлов, избегать кольцевых зависимостей. Этот подход сложный, однако он позволяет использовать изысканные автоматизированные инструменты, например, генерацию рам из профилей или размещение крепежа, адаптирующегося под ширину скрепляемых деталей
2) Проектирование детали из нескольких твёрдых тел с последующим разделением в сборке. Отлично подходит для моделирования практически с нуля. Например, когда я планирую печатать на FDM-принтере элемент конструкции с большими нависающими частями, удобно разделить деталь на две, напечатать по отдельности и склеить
Так как основные детали будут изготовлены на FDM-принтере и скреплены винтиками, оптимально будет применить оба подхода. САПР, которым я пользуюсь, предоставляет возможность моделировать многотельные детали, которые затем автоматически разбиваются на отдельные элементы сборки. Затем детали вставляются в сборку и автоматически размещаются так, как размещались в исходном файле. В этой же сборке можно добавить различные скругления и фаски, отверстия под крепёж. Таким образом, промежуточные детали наследуют изменения, произведённые в сборке и в исходном файле, и могут быть отправлены на печать без дополнительных усилий.
Такая комбинация значительно ускоряет процесс в случае разработки небольших моделей, состоящих преимущественно из изготавливаемых деталей.
Небольшие лайфхаки
Описанные правила стоит применять со скепсисом, потому что их эффективность проверялась на небольших сборках, до пары сотен деталей. А эти лайфхаки будут полезны многим.
Мотор крепится за статор четырьмя винтами М3. Фланец оказался с подвохом, отверстия расположены на одинаковых расстояниях друг от друга. Хотелось бы считать, что они находятся на углах квадрата, но нет. Я не стал возиться со штангенциркулем, а просто отсканировал фланец мотора на домашнем МФУ. Полученную картинку закинул в эскиз САПРа, отмасштабировал, обвёл и получил отличное посадочное место.

Второй полезный совет заключается в том, что в сборных деталях, напечатанных на принтере, практично делать шестигранные отверстия для гаек. Они могут быть расположены на любой поверхности и напечатаны ровно благодаря тому, что FDM-принтеры способны печатать поверхности, нависающие под 60° к вертикали почти из любого пластика. Эти отверстия ускорят сборку, и их можно разместить там, куда не пролезет гаечный ключ. Недостатком является то, что гайка не способна двигаться по плоскости, это может вызвать заклинивание винта при сборке. Чтобы минимизировать риски, не стоит использовать винты с потайной головкой.

Наконец, расскажу о том, как запрессовать метрический крепёж в подшипник. При отсутствии токарного станка, есть искушение использовать резьбовую шпильку в качестве вала. Она металлическая, вместо стопорного кольца можно использовать гайку. Но диаметры шпильки и подшипника не подходят для соединения с натягом, что плохо. С другой стороны, можно напечатать ось на 3D-принтере, но не стоит ожидать от неё существенной прочности.
Напрашивается очевидное решение.

Подобрав параметры печати, можно получить вал, который продевается в подшипник с небольшим зазором, но при вкручивании винта вал расширяется, и соединение становится жёстким.
Электроника
В качестве микроконтроллера выбран STM32F411CEU6, собранный на модуле Black-Pill. В отличие от использованного в предыдущей статье F103, этот обладает ускорителем вычислений с плавающей точкой единичной точности и значительно большей тактовой частотой процессора. Также в качестве приятного бонуса, порт USB исполнен в разъёме Type-C. Так как я планирую использовать USB в режиме CDC, частоту придётся понизить с максимальных 100 МГц до 96 МГц. Модуль поддерживает питание от 5 В, которое, в отсутствии подключения к ПК, может быть получено от ESC.
ESC - китайский ноунейм. Интерфейс управления стандартный - двухсотпятидесятигерцовая ШИМ с заполнением 0,25 - 0,5. Моторчик - бесколлекторный, аутраннер. Трехпроводное подключение без датчика положения.
В качестве датчика был выбран MPU6050 на модуле GY-521. В нём нет магнитометра, как в используемом ранее MPU9255. Но он и не понадобится. Зато в модуле есть отверстие для винтика. В остальном модули практически идентичны. GY-521 питается от 5 В и общается с МК через I²C.
Укладка проводов может вызвать вопросы, и я отвечу. Провода торчат в разные стороны с целью уменьшения оседания ЭМИ на сигнальные провода. Всё же I²C предназначен для обмена данными компонентами, находящимися в пределах платы, а векторное управление мотором, регулируемое ШИМом, при токах до 10 А RMS - это существенный источник помех.
Впрочем, для адекватной работы стенда достаточно потребления 4 А в пике. Поэтому используется небольшой импульсный БП на 12 В, примерно соответствующий трёхбаночному литий-ионному аккумулятору.
Всего хорошего, до встречи в следующей статье.
PatakinVVV
Есть ли какие-то ограничения по устойчивости конструкции при больших оборотах?