возвращение квадратурных энкодеров / Хабр
Это уже третья статья, рассказывающая о квадратурных декодерах, на сей раз с применением к управлению бесколлекторными двигателями.
- Статья первая: принцип работы квадратурного декодера + код для ардуино.
- Статья вторая: квадратурный декодер на stm32.
Задача: есть обычный китайский бесколлекторник, нужно его подключить к контроллеру Copley Controls 503. В отличие от копеечных коптерных контроллеров, 503й хочет сигнал с датчиков холла, которых на движке нет. Давайте разбираться, для чего нужны датчики и как их ставить.
В качестве иллюстрации я возьму очень распространённый двигатель с двенадцатью катушками в статоре и четырнадцатью магнитами в роторе. Вариантов намотки и количества катушек/магнитов довольно много, но суть всегда остаётся одной и той же. Вот фотография моего экземпляра с двух сторон, отлично видны и катушки, и магниты в роторе:
Чтобы было ещё понятнее, я нарисовал его схему, полюса магнитов ротора обозначены цветом, красный для северного и синий для южного:
На датчики холла пока не обращайте внимания, их всё равно нет 🙂
Что будет, если подать плюс на вывод V, а минус на вывод W (вывод U не подключаем ни к чему)? Очевидно, будет течь ток в катушках, намотанных зелёным проводом. Катушки намотаны в разном направлении, поэтому верхние две катушки будут притягиваться к магнитам 1 и 2, а нижние две к магнитам 8 и 9. Остальные катушки и магниты в такой конфигурации роли практически не играют, поэтому я выделил именно магниты 1,2,8 и 9. При такой запитке мотора он очевидно крутиться не будет, и будет иметь семь устойчивых положений ротора, равномерно распределённых по всей окружности (левая верхняя зелёная катушка статора может притягивать магниты 1, 3, 5, 7, 9, 11, 13).
Давайте записывать наши действия вот в такую табличку:
Угол поворота ротора | U | V | W |
0° | n.c. | + | — |
А что будет, если теперь подать плюс на U и минус на W? Красные катушки притянут к себе магниты 3,4,10 и 11, таким образом чуть-чуть повернув ротор (я по-прежнему выделяю магниты, за которые ротор тянет):
Давайте посчитаем, на сколько повернётся ротор: между щелями магнитов 1-2 и 3-4 у нас 51.
Угол поворота ротора | U | V | W |
8.57° | + | n.c. | — |
Теперь сам бог велел подать + на U и — на V!
Угол поворота ротора | U | W | |
17.14° | + | — | n.c. |
Теперь опять пора выровнять магниты с зелёными катушками, поэтому подаём напряжение на них, но красный и синий магниты поменялись местами, поэтому теперь нужно подать обратное напряжение:
Угол поворота ротора | U | V | W |
25.71° | n.c. | — | + |
C оставшимися двумя конфигурациями всё ровно так же:
Угол поворота ротора | U | V | W |
34.29° | — | n.c. | + |
Угол поворота ротора | U | V | W |
42.85° | — | + | n.c. |
Если мы снова повторим самый первый шаг, то наш ротор провернётся ровно на одну седьмую оборота. Итак, всего у нашего мотора три вывода, мы можем подать напряжение на два из них шестью разными способами 6 = 2*C
Запишем ещё раз всю последовательность для нашего двигателя:
Угол поворота ротора | U | V | W |
0° | n. c. | + | — |
8.57° | + | n.c. | — |
17.14° | + | — | n.c. |
25.71° | n.c. | — | + |
34.29° | — | n.c. | + |
42.86° | — | + | n.c. |
Есть один нюанс: у обычного коллекторного двигателя за переключение обмоток отвечают щётки, а тут нам надо определять положение ротора самим.
Теперь давайте поставим три датчика холла в те чёрные точки, обозначенные на схеме. Давайте договоримся, что датчик выдаёт логическую единицу, когда он находится напротив красного магнита. Всего существует шесть (сюрприз!) возможных состояний трёх датчиков: 23 — 2. Всего возможных состояний 8, но в силу расстояния между датчиками они не могут все втроём быть в логическом нуле или в логической единице:
Обратите внимание, что они генерируют три сигнала, сдвинутые друг относительно друга на 1/3 периода. Кстати, электрики используют слово градусы, говоря про 120°, чем окончательно запутывают нубов типа меня. Если мы хотим сделать свой контроллер двигателя, то достаточно читать сигнал с датчиков, и соответственно переключать напряжение на обмотках.
Для размещения датчиков я использовал вот такую платку, дизайн которой взял тут. По ссылке лежит проект eagle, так что я просто заказал у китайцев сразу много подобных платок:
Эти платки несут на себе только три датчика холла, больше ничего. Ну, по вкусу можно поставить конденсаторы, я не стал заморачиваться. Очень удобно сделаны длинные прорези для регулировки положения датчиков относительно статора.
Ещё бы! Единственная разница, что инкрементальные энкодеры дают два сигнала, сдвинутые друг относительно друга на 90°, а у нас три сигнала, сдвинутые на 120°. Что будет, если завести любые два из них на обычный квадратурный декодер, например, той же самой синей таблетки? Мы получим возможность определять положение вала с точностью до четырёх отсчётов на одну седьмую оборота, или 28 отсчётов на оборот.
Я долго думал, как же мне использовать все три сигнала, ведь у нас происходит шесть событий на одну седьмую оборота, мы должны иметь возможность получить 42 отсчёта на оборот. В итоге решил пойти грубой силой, так как синяя таблетка имеет кучу аппаратных квадратурных декодеров, поэтому я решил в ней завести три счётчика:
Видно, что при каждом событии у нас увеличиваются два из них, поэтому сложив три счётчика, и поделив на два, мы получим равномерно тикающий определитель положения вала, с точностью до 6*7 = 42 отсчёта на оборот!
Вот так выглядит макет подключения датчиков Холла к синей таблетке:
В некоторых приложениях (например, для коптеров) все эти заморочки не нужны. Контроллеры пытаются угадать происходящее с ротором по току в катушках. С одной стороны, это меньше заморочек, но с другой стороны, иногда приводит к проблемам с моментом старта двигателя, поэтому слабоприменимо, например, в робототехнике, где нужны околонулевые скорости. Давайте попробуем запитать наш движок от обычного китайского коптерного ESC (electronic speed controller).
Мой контроллер хочет на вход PPM сигнал: это импульс с частотой 50Гц, длина импульса задаёт обороты: 1мс — останов, 2мс — максимально возможные обороты (считается как KV двигателя * напряжение).
Вот здесь я выложил исходный код и кубовские файлы для синей таблетки. Таймер 1 генерирует PWM для ESC, таймеры 2,3,4 считают соответствующие квадратурные сигналы. Поскольку в прошлой статье я крайне подробно расписал, где и что кликать, то здесь только даю ссылку на исходный код.
На вход моему ESC я даю пилообразное задание скорости, посмотрим, как он его отработает. Вывод синей таблетки лежит тут, а код, который рисует график, тут.
Поскольку у меня двигатель имеет номинал 400KV, а питание я подал 10В, то максимальные обороты должны быть в районе 4000 об/мин = 419 рад/с. Ну а вот и график подоспел:
Видно, что реальные обороты соответствуют заданию весьма приблизительно, что терпимо для коптеров, но совершенно неприменимо во многих других ситуациях, почему, собственно, я и хочу использовать более совершенные контроллеры, которым нужны сигналы с датчиков холла. Ну и бонусом я получаю угол поворота ротора, что бывает крайне полезно.
Я провёл детство в обнимку с этой книжкой, но раскурить принципы работы бесколлекторников довелось только сейчас.
Оказывается, что шаговые моторы и вот такое коптерные моторчики — это (концептуально) одно и то же. Разница лишь в количестве фаз: шаговики (обычно, бывают исключения) управляются двумя фазами, сдвинутыми на 90°, а бесколлекторники (опять же, обычно) тремя фазами, сдвинутыми на 120°.
Разумеется, есть и другие, чисто практические отличия: шаговики рассчитаны на увеличение удерживающего момента и повторяемость шагов, в то время как коптерные движки на скорость и плавность вращения, что сказывается на количестве обмоток, подшипниках и т.п. Но в итоге обычный бесколлекторник можно использовать в шаговом режиме, а шаговик в постоянном вращении, управление у них будет одинаковым.
Update: красивая анимация от Arastas:
Датчики Холла
Вид каталога:
Сортировать по: Дате поступления (по возрастанию)Дате поступления (по убыванию)Названию (по убыванию)Названию (по возрастанию)Цене (по возрастанию)Цене (по убыванию)
Датчик расхода воды еа Холла + температура, питание 5-24в, диапазн 1-30L/мин
900 р.
Купить за 1 клик
- Арт. —
- 00000136099
Оставить отзыв
Датчик HALL IC VHE-101B
33 р.
Купить за 1 клик
- Арт. —
- 00000010516
Оставить отзыв
TLE4935 датчик Холла
90 р.
Купить за 1 клик
- Арт. —
- 00000116617
Оставить отзыв
TLE4905L (05 L), Датчики Холла, 3.8V — 24V 8 mA [PSSO-3-2]
90 р.
Купить за 1 клик
- Арт. —
- 00000127365
Оставить отзыв
SS49E датчик Холла биполярный TO-92
40 р.
Купить за 1 клик
- Арт. —
- 00000125840
Оставить отзыв
SS495A датчик Холла (маркир 95A)
120 р.
Купить за 1 клик
- Арт. —
- 00000134841
Оставить отзыв
SS44E датчик Холла биполярный TO-92
40 р.
Купить за 1 клик
- Арт. —
- 00000133069
Оставить отзыв
SS41F датчик Холла (маркир 41F)
45 р.
Купить за 1 клик
- Арт. —
- 00000134843
Оставить отзыв
AH6851 датчик Холла TO-92T
40 р.
Купить за 1 клик
- Арт. —
- 00000125839
Оставить отзыв
Ah4503 датчик Холла TO-92UA
50 р.
Купить за 1 клик
- Арт. —
- 00000125838
Оставить отзыв
Ah301 датчик Холла TO-92UA
40 р.
Купить за 1 клик
- Арт. —
- 00000125837
Оставить отзыв
A3144 датчик Холла
40 р.
Купить за 1 клик
- Арт. —
- 00000134842
Оставить отзыв
805dxak датчик холла
40 р.
Купить за 1 клик
- Арт. —
- 00000134336
Оставить отзыв
3144E 4pin Модуль датчика скорости (Холла) LM393 (3433-3)
60 р.
Купить за 1 клик
- Арт. —
- 00000136201
Оставить отзыв
Датчики Холла — Littelfuse
- Главная
- > Продукты
- > Магнитные датчики и герконы
- > Датчики Холла
- Печать
|
|
|
|
|
|
|
- Технические ресурсы
- Просмотреть все
- Каталоги продукции
Руководство по выбору датчиков В этом руководстве представлены вводные сведения о магнитных датчиках и варианты дополнительных пакетов индивидуальной конструкции. |
Датчик Холла — Ah2815 (без фиксации) — SEN-14709
Этот продукт имеет ограничения на доставку, поэтому он может иметь ограниченные варианты доставки или не может быть отправлен в следующие страны:
- Дом
- Категории товаров
- Магнето
- Датчик Холла — Ah2815 (без фиксации)
Избранное Любимый 11
Список желаний
В наличии SEN-14709
В наличии 250+ шт. в наличии.
1,05 1,00 0,95 | 1+ шт. 25+ шт. 100+ шт. |
- Описание
- Функции
- Документы
Ah2815 — это встроенный датчик Холла без фиксации. Это хорошо, но что это делает? Удержание магнита рядом с датчиком приведет к переключению выходного контакта. Это обеспечивает надежный датчик присутствия. Герконовый датчик также хорошо работает, но его возможности ограничены стеклянным корпусом и размером. Датчик Холла намного меньше, но может выдерживать меньший ток, чем геркон.
Ah2815 представляет собой низкочувствительную микросхему всеполярного переключателя на эффекте Холла с микромощностью, предназначенную для портативного и работающего от батарей потребительского оборудования для бытовых приборов и промышленных приложений, таких как интеллектуальные счетчики для обнаружения магнитных помех. Основанный на двух чувствительных пластинах на эффекте Холла и архитектуре, стабилизированной прерывателем, Ah2815 обеспечивает надежное решение во всем рабочем диапазоне. Для поддержки портативного оборудования и оборудования с батарейным питанием конструкция оптимизирована для работы в диапазоне напряжений питания от 2,5 В до 5,5 В и потребляет всего 24 мкВт при напряжении питания 3 В.
Одиночный выход с открытым стоком может включаться как с северным, так и с южным полюсом достаточной мощности. Когда плотность магнитного потока (B) перпендикулярно корпусу больше, чем рабочая точка (Bop), выход включается (низкий уровень). Выход отключается, когда B становится ниже точки отпускания (Brp). Выход останется выключенным при отсутствии магнитного поля.
- Всеполярный (Северный или Южный полюс) Работа
- Низкая чувствительность
- Выход с одним открытым стоком
- Микроэнергетическая операция
- Рабочий диапазон от 2,5 В до 5,5 В
- Рабочая температура от -40°C до +125°C
- Стабилизированная конструкция прерывателя обеспечивает превосходную температурную стабильность Минимальный дрейф точки переключения Повышенная устойчивость к нагрузкам
— Ah2815 (без фиксации) Справка и ресурсы по продукту
- Необходимые навыки
Основной навык:
ПрограммированиеЕсли плате нужен код или она каким-то образом взаимодействует, вам нужно знать, как ее программировать или взаимодействовать с ней. Навык программирования связан с общением и кодом.
2 Программирование
Уровень навыка: Новичок — Вам потребуется лучшее понимание того, что такое код и как он работает. Вы будете использовать программное обеспечение начального уровня и инструменты разработки, такие как Arduino. Вы будете иметь дело непосредственно с кодом, но доступны многочисленные примеры и библиотеки. Датчики или экраны будут связываться с последовательным или TTL.
Просмотреть все уровни навыков
Основной навык:
Электрические прототипыЕсли для этого требуется питание, вам нужно знать, сколько, что делают все контакты и как их подключить. Возможно, вам придется обращаться к таблицам данных, схемам и знать все тонкости электроники.
1 Электрическое прототипирование
Уровень навыка: Нуб — Вам не нужно ссылаться на техническое описание, но вам нужно знать основные требования к питанию.