Pull to refresh
  • by relevance
  • by date
  • by rating

Математика на пальцах: ардуино головного мозга или линейно-квадратичный регулятор для управления электродвигателем

C++AlgorithmsMathematicsRobotics developmentProgramming microcontrollers
Tutorial

Постановка задачи: как со школьными знаниями дойти до выводов университетского уровня


Эта статья предполагает, что вы прочли мои статьи (ну или и без того знаете) про методы наименьших квадратов и про линейно-квадратичный регулятор.

Как я уже говорил в предыдущих статьях, мои знакомые студенты хотят построить обратный маятник, но умаялись подбирать коэффициенты ПИД-регулятора, поэтому я неспешно смотрю, что такое линейно-квадратичный регулятор, ну а заодно и вам пересказываю то, что прочитал. Задача для этой статьи — показать, как воплотить в железе одномерный пример из статьи про линейно-квадратичный регулятор. Грубо говоря, я хочу написать написать управление для сервомотора: у меня есть текущее положение оси привода и текущая скорость её вращения, я хочу её остановить в заданном положении. Я попытался было прочитать схожую статью на эту тему, но, признаться, ничего в ней не понял, поэтому сел разбираться самостоятельно, предпочтительно на пальцах и без страшных слов типа дифференциальных уравнений Лагранжа-Эйлера.

Продолжая рабочий эксгибиционизм, знакомлю вас с Bubble Bobble, который живёт у нас с коллегой в кабинете. Он рецензирует статьи для конференции SIGGRAPH.


Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Views41.3K
Comments 78

Разжёвываем линейно-квадратичный регулятор для управления перевёрнутым маятником

Entertaining tasksAlgorithmsMathematicsRobotics developmentProgramming microcontrollers
Tutorial

Преамбула


Продолжаю подробное описание использования линейно-квадратичного регулятора на примере управления перевёрнутым маятником. К слову сказать, термин «ЛКР» очень неточно отражает суть происходящего, как мне уже подсказали в комментариях, в русской школе теории управления этот подход называется «аналитическим конструированием оптимальных регуляторов», что существенно точнее.

Как обычно, я стараюсь разжевать математику по максимуму, чтобы материал был доступен заинтересованному школьнику. Я глубоко убеждён, что использование математики по-хорошему должно бы быть платным: любая формула должна быть использована только тогда, когда она призвана облегчить понимание, а не для того, чтобы выпендриваться.

Итак, это уже четвёртая статья, для лучшего понимания происходящего неплохо бы прочитать предыдущие три:


Вот фотография системы (кликабельно):


Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Views25.6K
Comments 59

Делаем контур управления электродвигателем с заданием тока

C++MathematicsRobotics developmentProgramming microcontrollers
Tutorial

Постановка задачи


Это вторая, итоговая статья. Напоминаю цель: есть двигатель постоянного тока. Задача — разработать, собрать и протестировать устройство, позволяющиее реализовать контур управления с заданием тока применительно к этому двигателю. Желаемое время переходного процесса на застопоренном двигателе (без противо-ЭДС) — не более 10мс.

Текст разбит на две статьи:


Напоминаю, как выглядит макет управляющего железа:


Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Views16.6K
Comments 24

Ардуино головного мозга: импульсный датчик положения

ProgrammingC++AlgorithmsRobotics developmentProgramming microcontrollers
Tutorial

Задача на сегодня: как определить угол поворота инкрементального энкодера?


Сегодня в серии публикаций про ардуино головного мозга коротенькая статья с небольшим экспериментом и парой рецептов. В комментариях к одной из моих прошлых статей меня обвинили в том, что ардуиной подсчитывать импульсы энкодера — фу так делать:
Оптически энкодер 1000/оборот и ATMega не имеющая аппаратной схемы работы с энкодером (как у серий STM32, например) — это тупик.
Дальше в комментариях было много теоретизирования, которое лучше пропустить. Давайте лучше попробуем протестировать в железе, насколько это тупик. Для начала, что такое инкрементальный энкодер? Тот, кто помнит эпоху до-оптических мышек, ответ знает точно. Внутри энкодера есть диск с прорезями, вот для наглядности я сделал фотографию диска с пятьюстами прорезями:


Читать дальше →
Total votes 52: ↑52 and ↓0 +52
Views41.1K
Comments 87

Сказ про резисторы и неонки

Abnormal programmingEntertaining tasksC++MathematicsProgramming microcontrollers
Tutorial

Расчёт цепей постоянного тока на пальцах, или давайте считать ЦАП для троичной логики


Но для начала неонки, какой же русский их не любит?


Итак, снова я со своими троичными железками, но в этой статье они выступают фоном, сегодня статья про резисторы. Запаял я было несколько платок, в которые можно воткнуть газоразрядные лампы типа ИН-12 или ИН-15, но часы делать не захотел :)


Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Views14.3K
Comments 58

Датчики Холла для бесколлекторного двигателя: возвращение квадратурных энкодеров

ProgrammingC++Robotics developmentProgramming microcontrollers
Tutorial
Это уже третья статья, рассказывающая о квадратурных декодерах, на сей раз с применением к управлению бесколлекторными двигателями.


Задача: есть обычный китайский бесколлекторник, нужно его подключить к контроллеру Copley Controls 503. В отличие от копеечных коптерных контроллеров, 503й хочет сигнал с датчиков холла, которых на движке нет. Давайте разбираться, для чего нужны датчики и как их ставить.

Ликбез: принцип работы бесколлекторного двигателя


В качестве иллюстрации я возьму очень распространённый двигатель с двенадцатью катушками в статоре и четырнадцатью магнитами в роторе. Вариантов намотки и количества катушек/магнитов довольно много, но суть всегда остаётся одной и той же. Вот фотография моего экземпляра с двух сторон, отлично видны и катушки, и магниты в роторе:


Читать дальше →
Total votes 42: ↑42 and ↓0 +42
Views45.7K
Comments 35

Как быстро и без лишних микросхем обойти неизменяемость адреса у датчика HTU21

Developing for ArduinoSmart HouseDIY
Sandbox

Приветствую всех жителей Хабра!


Хочу рассказать о новом и неожиданном способе подключения нескольких датчиков HTU21 по шине I2C без использования дополнительных микросхем.


Данный датчик все еще пользуется популярностью среди разного рода DIY-мастеров, причем заслуженно: он более точен, чем предшественник и мал размерами (что удобно для встраивания в устройства).


Совсем недавно меня, как и многих пользователей, озадачило отсутствие возможности изменить адрес у данного датчика. Гугл, конечно же, выдал кучу статей о всяких мультиплексорах для шины I2C от «купить в известном всем китайском интернет-магазине» до «сделать схему своими руками». Нигде не было вариантов без паяльника и дополнительных расходов. Это не могло не расстроить так как нужно было решить проблему здесь и сейчас (заказчики такие заказчики). Хочу рассказать о более легком и непринужденном, очень простом выходе из данной ситуации. Заинтриговала? Тогда рассказываю.


Исходные данные: Arduino mega и 4 датчика HTU21.


Задача: необходимо подключить все датчики htu по шине I2C и считывать значения. Причем данные сенсоры — не единственные ведомые устройства на данной шине (в планах еще ЖК экран и другие датчики).


Что мы знаем? У датчика HTU21 фиксированный адрес на шине — 0x40 1. Как, имея микроконтроллер и 4 датчика с одинаковыми адресами на шине, обращаться к конкретному устройству без лишних микросхем?

Читать дальше →
Total votes 41: ↑26 and ↓15 +11
Views10.4K
Comments 42

Роботаракан Петя за десять баксов

ProgrammingCProgramming microcontrollersDIYElectronics for beginners
Tutorial

Знакомьтесь с Петей, шестиногом о трёх сервоприводах


Продолжаю публикацию статей из серии "ардуино головного мозга". Петя — это очень дешёвый (примерно десять баксов) гексапод. Он может быть прекрасным проектом на один ненастный выходной, который развлечёт как и взрослых, так и детей. Раз уж мы про развлечения, вот вам видеоролик с Петей, танцующим под фанк-музыку:


Читать дальше →
Total votes 104: ↑104 and ↓0 +104
Views27.3K
Comments 48