Датчики Холла и магнитного поля
Датчик Холла превращает магнитное поле в сигнал: цифровой отвечает «магнит есть или нет», линейный выдаёт напряжение, пропорциональное полю, 3D-датчик — три числа по I²C. Разбираем по даташитам производителей, чем различаются переключатели, защёлки, линейные датчики и магнитометры, как их подключить к микроконтроллеру, пересчитать напряжение в миллитеслы и не ошибиться с полюсом магнита.
Обновлено Редакция GAW
Содержание
- Единицы, направление и полярность
- Виды датчиков Холла
- Цифровые датчики: пороги и гистерезис
- Подключение цифрового датчика Холла
- Счёт оборотов и опрос микроконтроллером
- Линейные датчики Холла
- Поле магнита и расстояние до датчика
- 3D-датчики и магнитометры
- Геркон или датчик Холла
- Пример для Arduino
- Типичные ошибки
Если через полупроводниковую пластину течёт ток, а поперёк неё проходит магнитное поле, сила Лоренца отклоняет носители заряда к одному краю, и между краями пластины появляется напряжение Холла. По Allegro (AN296065) оно равно
где I — ток через пластину, — составляющая индукции, перпендикулярная пластине, n — концентрация носителей заряда, q — их заряд, t — толщина пластины. Напряжение пропорционально полю, а его знак зависит от того, какой полюс магнита обращён к пластине. Сигнал пластины мал по сравнению со смещением, которое может появиться на выходе микросхемы, поэтому рядом с пластиной стоят усилитель, схема компенсации смещения — чопперная стабилизация, основанная на модуляции и демодуляции сигнала, — и выходной каскад: компаратор у цифровых датчиков, усилитель у линейных (даташит A1324, раздел Chopper Stabilization Technique).
Коротко
- 1 мТл = 10 Гс. Пороги и чувствительность TI указывает в миллитеслах, Allegro и Honeywell — в гауссах: 5 мВ/Гс = 50 мВ/мТл.
- Планарные датчики вроде DRV50xx и A1324 видят только составляющую поля, перпендикулярную лицевой стороне корпуса. У TI и Allegro южный полюс у маркированной стороны — положительное поле.
- Цифровой датчик срабатывает, когда поле превышает BOP, и отпускает, когда оно падает ниже BRP; проектируют по максимальному BOP и минимальному BRP из даташита.
- Выход многих цифровых датчиков — DRV5013, DRV5023, DRV5032FC, AJ и ZE — открытый сток: без подтягивающего резистора сигнала нет.
- Линейные DRV5055 и A1324 без поля выдают половину питания, а их ноль и чувствительность пропорциональны питанию: АЦП с опорой от того же питания эту погрешность сокращает.
- Поле магнита с расстоянием падает круто: на оси цилиндра диаметром 10 мм и толщиной 5 мм при удалении с 10 до 20 мм — в 5,2 раза (формула TI).
Единицы, направление и полярность
Индукцию поля измеряют в теслах, датчикам Холла хватает миллитесл: 1 мТл = 10 Гс (сноска к таблицам DRV5013, DRV5023 и DRV5053; у Allegro — 1 Гс = 0,1 мТл). Подробнее о единицах — в статье «Магнитная индукция». Для масштаба: точность компаса BMM150 Bosch нормирует при горизонтальной составляющей поля Земли 30 мкТл, а пороги датчиков Холла — от единиц до десятков миллитесл, в десятки — тысячи раз больше.
Планарный датчик Холла в корпусе SOT-23 или TO-92 — DRV50xx, A1324 — чувствует составляющую поля, перпендикулярную верхней грани корпуса; у TO-92 это плоская маркированная сторона (DRV5032, п. 7.3.1; DRV5055, п. 6.3.1). Исключения — 3D-датчики вроде TMAG5273 и датчики с чувствительностью в плоскости корпуса, как TMAG5233 (SLYA090B, п. 1.2). Магнит подводят к этой грани полюсом. Если повернуть его так, что поле идёт вдоль корпуса, датчик его почти не заметит — TI показывает правильные и неправильные варианты на рисунке Correct and Incorrect Magnet Approaches (DRV5032, п. 8.3).
Знак поля задаёт производитель. У TI положительное поле — когда к маркированной стороне обращён южный полюс, отрицательное — северный (DRV5013, п. 6.3.1; DRV5055, п. 6.3.1). У Allegro южный полюс у маркированной поверхности A1324 поднимает выход от середины питания к плюсу, северный — опускает. В даташите Honeywell на SS49E не сказано, в какую сторону меняется выход от каждого полюса, — только то, что датчик реагирует на поле обоих знаков, так что направление проверяют магнитом. Сильного поля датчики Холла не боятся: у DRV5013, DRV5032 и DRV5055 предельная индукция в таблице абсолютных максимумов не ограничена.
Виды датчиков Холла
| Тип | Как ведёт себя выход | Примеры | Применения по даташитам |
|---|---|---|---|
| Униполярный переключатель | срабатывает от поля одного знака, обычно южного полюса, выше BOP; отпускает ниже BRP | DRV5023, DRV5032DU | дверь открыта или закрыта, стыковка, положение клапана, счёт импульсов |
| Омниполярный переключатель | то же для любого полюса | DRV5032FA, FB, FC, AJ, ZE | крышки и чехлы, детектор вскрытия счётчика, электронные замки |
| Защёлка (биполярная) | включается южным полюсом, выключается северным, без поля хранит состояние (у DRV5013AD, AG, BC; у FA пороги около нуля) | DRV5013 | тахометры, расходомеры, бесколлекторные двигатели |
| Линейный | напряжение, пропорциональное полю; без поля — середина питания, у DRV5053 — около 1 В | DRV5055, A1324, SS49E, DRV5053 | положение, угол, ток, педали, курки, клавиатуры |
| 3D и магнитометр | три составляющие поля числами по I²C или SPI | TMAG5273, BMM150 | джойстики, угол поворота, компас |
Разница между переключателем и защёлкой важна при счёте оборотов. Униполярный переключатель отпускает, когда магнит уходит, — одного магнита на валу достаточно. Защёлка, по Allegro, при снятии поля не выключается и держит состояние, пока к ней не придёт северный полюс (AN296065). У DRV5013AD, AG и BC так и есть: BOP у них только положительный, BRP — только отрицательный. У DRV5013FA пороги близки к нулю (BOP от −0,6 до 3,4 мТл, BRP от −3,4 до 0,6 мТл), и состояние без поля у отдельного экземпляра не гарантировано (п. 5.7). Защёлку ставят напротив кольцевого магнита с чередующимися полюсами или пары магнитов, обращённых к датчику разными полюсами: один южный полюс на валу включит защёлку один раз и навсегда.
Цифровые датчики: пороги и гистерезис
По даташитам TI:
| Параметр | DRV5032 | DRV5023 | DRV5013 |
|---|---|---|---|
| Тип | омниполярный (FA, FB, FC, AJ, ZE) или униполярный (DU, DG, FD) переключатель | униполярный переключатель | биполярная защёлка |
| Питание | 1,65–5,5 В | 2,5–38 В | 2,5–38 В |
| Выход | двухтактный (DU, DG, FA, FB, FD) или открытый сток (FC, AJ, ZE), до 5 мА | открытый сток, до 30 мА | открытый сток, до 30 мА |
| BOP типично (пределы) | FA, FB, FC: ±3 мТл (±1,5…±4,8); AJ: ±7 мТл (±4…±9,5); ZE: ±47 мТл (±33…±63) | FA: 3,5 мТл (1,8–6,8); AJ: 6,9 мТл (3–12); BI: 14,5 мТл (6–24) | FA: 1,3 мТл (−0,6…3,4); AD: 2,7 мТл (1–5); AG: 6 мТл (3–9); BC: 12 мТл (6–18) |
| BRP типично (пределы) | FA, FB, FC: ±1,5 мТл (±0,5…±3) | FA: 2 мТл (0,5–4,2) | AD: −2,7 мТл (−5…−1) |
| Гистерезис типично | FA, FB, FC: 1,5 мТл | FA: 1,5 мТл; AJ: 3,7 мТл; BI: 8,5 мТл | AD: 5,4 мТл; BC: 24 мТл |
| Быстродействие | выборка 5, 20 или 80 раз в секунду | полоса 30 кГц (не меньше 20 кГц), задержка 13 мкс | полоса 30 кГц (не меньше 20 кГц), задержка 13 мкс |
| Ток потребления | в среднем 0,54 мкА (FB, 5 Гц), 1,3 мкА (20 Гц), 5,2 мкА (DG, 80 Гц) при 1,8 В | 2,7 мА | 2,7 мА; 1,5 мА у ND и FD |
| Конденсатор по питанию | не меньше 0,1 мкФ | не меньше 0,01 мкФ | не меньше 0,01 мкФ |
Пороги в даташите заданы разбросом, и проектируют по краям: чтобы датчик гарантированно сработал, магнит в ближнем положении должен давать поле больше максимального BOP, а чтобы отпустил — в дальнем меньше минимального BRP (DRV5032, п. 8.2.1.2). Для DRV5032FA это больше 4,8 мТл и меньше 0,5 мТл. В примере TI кубик NdFeB со стороной 1 см на расстоянии 2,5 см даёт 7,8 мТл — с запасом против 4,8 мТл (табл. 8-1); запас нужен на нагрев, при котором любой магнит слабеет, и на механические допуски. Гистерезис Bhys = BOP − BRP не даёт выходу дребезжать, когда поле колеблется около порога.
Защёлка после включения. Если DRV5013 включить, когда поле находится между BRP и BOP, состояние выхода не определено: он может оказаться и отпущенным, и притянутым к нулю (п. 6.3.2). Достоверное состояние появится после первого прохода полюса. У версий ND и FD выход инвертирован: южный полюс его отпускает, северный притягивает к нулю.
Выборка у DRV5032. Средний ток от долей до единиц микроампер DRV5032 получает за счёт сна: поле измеряется раз в период выборки — 27–75 мс у версий на 20 Гц и 117–286 мс у FB на 5 Гц, а между выборками выход не меняется (п. 6.5, 7.3.2.4). Магнит, промелькнувший быстрее периода, такой датчик может не заметить. Для счёта оборотов берут DRV5013 или DRV5023 с полосой в десятки килогерц, а DRV5032 — для дверей, крышек и положений, которые меняются медленно.
Подключение цифрового датчика Холла
У DRV5013, DRV5023 и DRV5032 в корпусе SOT-23 выводы одинаковы: 1 — питание, 2 — выход, 3 — общий; в TO-92: 1 — питание, 2 — общий, 3 — выход. У униполярных DRV5032DU и FD выход называется OUT2 и реагирует на южный полюс, а в корпусе X2SON у DU, DG и FD есть и второй выход, OUT1, — для северного полюса (DRV5032, табл. 5-1).
Подтяжка. Открытый сток умеет только притягивать выход к общему проводу, высокий уровень создаёт внешний резистор (подробнее — в статье «Открытый сток»). TI ограничивает его сопротивление с двух сторон (DRV5013, уравнение 1):
где Uref — напряжение, к которому подтянут выход. Для 3,2–3,4 В это от 113 Ом до 32 кОм; кроме того, R1 должен быть больше 500 Ом, иначе выход не опустится близко к нулю. TI в примере берёт 10 кОм. Меньшее сопротивление ускоряет фронты, большее экономит ток: пока выход притянут к нулю, через резистор течёт Uref/R1 — 0,33 мА при 3,3 В и 10 кОм, в 200 с лишним раз больше среднего тока DRV5032 на 20 Гц (1,6 мкА при 3 В). Поэтому для батарейных устройств подходят двухтактные версии DRV5032: у них утечки через подтяжку нет (п. 8.1.1).
Подтяжка к другому напряжению. Выход DRV5013 и DRV5023 можно подтянуть не к своему питанию, а к питанию микроконтроллера: датчик питают от 12 В, резистор подключают к 3,3 В, и согласователь уровней не нужен. Напряжение на выходе допускается до 38 В.
Встроенная подтяжка. TI разрешает вместо внешнего резистора включить подтяжку вывода микроконтроллера (DRV5013, п. 7.4.1). У ATmega328P она 20–50 кОм, а верхняя граница по формуле TI при 5 В ±5 % — 4,75 В / 100 мкА = 47,5 кОм, и встроенный резистор может выйти за допуск. Надёжнее внешний 10 кОм — TI советует ставить его рядом со входом микроконтроллера.
Конденсаторы. Керамический конденсатор по питанию ставят у самого датчика: не меньше 0,01 мкФ на напряжение питания у DRV5013 и DRV5023, не меньше 0,1 мкФ у DRV5032. Пульсации питания DRV5013 TI рекомендует держать меньше 50 мВ размаха. Конденсатор C2 с выхода на общий провод обычно не нужен; с R1 = 10 кОм и C2 = 680 пФ получается фильтр с частотой среза 23,4 кГц (п. 7.2.1).
Два провода вместо трёх. Если датчик далеко, DRV5013 подключают двумя проводами: выход соединяют с питанием через резистор, а состояние определяют по потребляемому току. В примере TI при 12 В и 1 кОм ток — около 3 мА, когда выход отпущен (поле ниже BRP), и около 15 мА, когда он притянут к нулю (поле выше BOP); без поля защёлка хранит последнее состояние, а с ним и ток. Конденсатор по питанию в такой схеме — не меньше 0,1 мкФ (п. 7.2.2).
Несколько датчиков на один вход. Выходы с открытым стоком соединяют вместе: линия опустится, если сработал любой из датчиков (DRV5032, п. 8.1.1).
Счёт оборотов и опрос микроконтроллером
Цифровой датчик подключают ко входу с прерыванием: у неинвертированных версий выход падает в ноль, когда поле превышает BOP, — прерывание настраивают на спад. Частота вращения:
где N — число импульсов за время t в секундах, k — импульсов на оборот: число магнитов для униполярного переключателя или число пар полюсов кольцевого магнита для защёлки. При счёте за 1 с и одном импульсе на оборот шаг измерения — 60 об/мин, поэтому на малых скоростях измеряют период между импульсами, например захватом таймера — так это делается в статье «Таймеры STM32». Сам датчик быстрый: задержка DRV5013 и DRV5023 — 13 мкс типично и 25 мкс максимум.
Выход линейного датчика читают АЦП, как любой аналоговый сигнал; разрядность, опорное напряжение и время выборки разобраны в статье «АЦП».
Линейные датчики Холла
| Параметр | DRV5055 | A1324 / A1325 / A1326 | SS49E | DRV5053 |
|---|---|---|---|---|
| Питание | 3–3,63 В и 4,5–5,5 В | 4,5–5,5 В | 2,7–6,5 В | 2,5–38 В |
| Выход без поля | половина питания: 2,43–2,57 В при 5 В | 2,425–2,575 В при 5 В | 2,25–2,75 В при 5 В | 0,9–1,15 В, типично 1,02 В |
| Чувствительность | при 5 В: 100, 50, 25, 12,5 мВ/мТл (A1–A4), допуск около ±5 % (у A4 — 11,9–13,2 мВ/мТл) | 50, 31,25, 25 мВ/мТл (5, 3,125, 2,5 мВ/Гс), ±5 % | 14 мВ/мТл (1,4 мВ/Гс), от 10 до 17,5 | −11, −23, −45, −90 или +23, +45 мВ/мТл при 3,3 В; у RA от −20 до −70 |
| Линейный диапазон | ±21, ±42, ±85, ±169 мТл | не нормирован; размах выхода при нагрузке 4,7 кОм — не меньше 0,3…4,7 В, у A1324 это около ±44 мТл (расчёт по номиналам) | ±100 мТл типично, не меньше ±65 мТл | до насыщения: от 9 до 73 мТл по исполнению |
| Шум, размах | 0,12 мТл, приведённый ко входу, при 5 В | 7,0, 4,4, 3,5 мВ на выходе | — | 0,49 мТл, приведённый ко входу |
| Полоса | 20 кГц | 17 кГц | время отклика 3 мкс | 20 кГц |
| Ток потребления | 3 мА при 5 В | 6,9 мА | 6 мА | 2,7 мА |
| Связь с питанием | ноль и чувствительность пропорциональны питанию | то же | чувствительность зависит от питания (рис. 3), ноль задан только при 5 В | ноль — около 1 В, не половина питания |
Выход DRV5055 описывается уравнением TI (п. 6.3.2):
где UQ — выход без поля, S25 — чувствительность при 25 °C, STC — её температурный коэффициент: 0,12 %/°C у версий A1–A4 и 0 у Z1–Z4. Версии A намеренно повышают чувствительность с нагревом — при 125 °C на 12 % — чтобы компенсировать ослабление магнита: остаточная индукция NdFeB падает примерно на 0,12 %/°C, феррита — на 0,20 %/°C (п. 6.3.6, 7.1.2). Если поле создаёт не постоянный магнит, а ток в проводнике или катушке, такая компенсация сама становится погрешностью, и логичнее версия Z.
Линейно выход меняется в пределах от 0,2 В до VCC − 0,2 В; ближе к шинам чувствительность падает (п. 6.3.3). TI советует брать самую чувствительную версию, у которой диапазон BL ещё больше максимального поля в устройстве (п. 7.2.2). У DRV5053 ноль сдвинут к 1 В, а знак чувствительности зависит от исполнения: у OA, PA, RA и VA южный полюс опускает выход ниже 1 В, у CA и EA — поднимает. Допуск чувствительности у DRV5053 широкий, поэтому его калибруют по известному полю.
Логометрический выход. Ноль и чувствительность DRV5055 и A1324 пропорциональны питанию: при 5,25 В вместо 5 В оба на 5 % больше (DRV5055, п. 6.3.4). Если АЦП берёт опорным то же питание, его отклонения сокращаются. Код 10-битного АЦП N = 1024 · U/Uпит (ATmega328P, п. 24.7), и поле выражается через код без напряжения питания:
где S5В — чувствительность при 5 В. Остаётся ошибка логометричности — у DRV5055 до ±2,5 % по чувствительности, у A1324 до ±1,5 % при 25 °C.
Нагрузка и фильтр. Шум снижают RC-фильтром на выходе, если полная полоса не нужна, но конденсатор прямо на выход DRV5055 без резистора ставить нельзя — выход может стать неустойчивым (п. 7.1.3). У A1324 нагрузка — не меньше 4,7 кОм и не больше 10 нФ; у DRV5053 — больше 10 кОм и меньше 10 нФ, а фильтр собирают из резистора от 200 Ом и конденсатора до 0,1 мкФ (п. 7.3.4). По питанию — не меньше 0,01 мкФ у DRV5055 и 0,1 мкФ в типовой схеме A1324. Для DRV5055 TI предлагает и проверку обрыва проводов: подтяжка 20–100 кОм с выхода на питание, и напряжение ближе 150 мВ к питанию или к нулю считается неисправностью (п. 7.1.4).
Поле проводника с током измеряют тем же способом; готовое решение с проводником внутри корпуса и изоляцией — ACS712, его разбирает статья «Как измерить ток».
Пример: от кода АЦП к миллитеслам
DRV5055A2 питается от 5 В вместе с Arduino Uno, выход подключён к A0, analogRead() вернул 655. Напряжение — 655 · 5 / 1024 = 3,198 В. Поле:
Знак плюс: к лицевой стороне обращён южный полюс. Теперь допуски из таблицы. Выход без поля 2,43–2,57 В — это ±70 мВ, или ±1,4 мТл при 50 мВ/мТл; чувствительность 47,5–52,5 мВ/мТл даёт результат от 13,3 до 14,7 мТл. Ошибку нуля убирают калибровкой: при запуске, без магнита рядом, запоминают код и вычитают его вместо 512 — так сделано в примере ниже. Шаг АЦП 5 В / 1024 = 4,88 мВ соответствует 0,098 мТл, а шум DRV5055A2 на выходе — 6 мВ размаха, немного больше шага, поэтому отсчёты усредняют.
Проверка по примеру TI: DRV5055A3 при 3,3 В, 50 °C и 67 мТл выдаёт 1650 + 67 · 15 · (1 + 0,0012 · 25) = 2685 мВ. Обратный пересчёт: (2685 − 1650) / (15 · 1,03) = 67,0 мТл.
Поле магнита и расстояние до датчика
Порог датчика задан в миллитеслах, а конструктору нужно расстояние. Поле от расстояния зависит нелинейно и по-разному для разных форм магнита; TI приводит формулы только для поля на оси прямоугольного и цилиндрического магнита (DRV5032, уравнения 1 и 2). Для цилиндра диаметром C и толщиной T, намагниченного вдоль оси, на расстоянии D от торца:
где Br — остаточная индукция материала из паспорта магнита. Для цилиндра диаметром 10 мм и толщиной 5 мм:
| D, мм | 2 | 5 | 10 | 20 |
|---|---|---|---|---|
| B/Br | 0,221 | 0,094 | 0,027 | 0,0052 |
С 5 до 10 мм поле падает в 3,5 раза, с 10 до 20 мм — в 5,2 раза; каждый лишний миллиметр зазора ослабляет поле в 1,33 раза на расстоянии 2 мм и в 1,14 раза на 20 мм. Допуск порогов шире: у DRV5032FA BOP — от 1,5 до 4,8 мТл, в 3,2 раза, у DRV5023FA — от 1,8 до 6,8 мТл, у DRV5013AD — от 1 до 5 мТл. Поэтому расстояние срабатывания в партии датчиков заметно различается, и считают его по максимальному BOP с запасом. Расстояние D отсчитывают до чувствительного элемента, а он лежит внутри корпуса — его положение TI даёт на рисунке Hall Element Location.
Формулы TI верны только на оси простых магнитов — блока и цилиндра. В остальных случаях TI советует определять поле моделированием, линейным датчиком Холла или гауссметром (DRV5032, п. 8.2.2.2). Пластик, алюминий и печатная плата поле почти не искажают — магнит можно поставить снаружи пластикового или алюминиевого корпуса и даже с обратной стороны платы; медные полигоны под датчиком тоже не мешают. А вот детали из железа и никеля перенаправляют поток непредсказуемо (DRV5032, п. 8.5.1; DRV5013, п. 7.4.1).
3D-датчики и магнитометры
| Параметр | TMAG5273 (TI) | BMM150 (Bosch) |
|---|---|---|
| Назначение | положение магнита, угол поворота | компас, поле Земли |
| Чувствительные элементы | три датчика Холла: X, Y, Z | X и Y — FlipCore, Z — пластина Холла |
| Диапазон | ±40 или ±80 мТл (x1), ±133 или ±266 мТл (x2) | ±1300 мкТл по X и Y, ±2500 мкТл по Z |
| Чувствительность | 820 единиц кода на 1 мТл в диапазоне ±40 мТл | разрешение 0,3 мкТл |
| Шум по X и Y, среднеквадратично | 125 мкТл без усреднения, 22 мкТл при усреднении 32 отсчётов | 1,0 мкТл (low power) … 0,3 мкТл (high accuracy) |
| Смещение нуля | ±300 мкТл типично, до ±1000 мкТл; дрейф ±3 мкТл/°C типично, до ±10 мкТл/°C | ±40 мкТл; около ±2 мкТл после калибровки |
| Интерфейс, адрес | I²C до 1 МГц с CRC; 0x35, 0x22, 0x78 или 0x44 по исполнению | I²C или SPI; 0x10–0x13 по выводам CSB и SDO |
| Питание | 1,7–3,6 В | VDD 1,62–3,6 В, VDDIO 1,2–3,6 В |
| Ток | 2,3 мА в работе, 5 нА во сне | 170 мкА при 10 измерениях в секунду (low power) |
TMAG5273 сам считает угол по двум выбранным осям встроенным блоком CORDIC и умеет будить микроконтроллер прерыванием, когда поле выходит за порог: его задачи по даташиту — джойстики, электронные замки, датчики дверей и окон. Компасом он не станет. Bosch нормирует курс BMM150 при горизонтальной составляющей поля Земли 30 мкТл, а шум TMAG5273 по осям X и Y — 125 мкТл без усреднения и 22 мкТл даже при усреднении 32 отсчётов; смещение к тому же уходит на ±3 мкТл на градус типично и до ±10 мкТл на градус. Смещение можно откалибровать, но шум даже с усреднением сравним с самим полем, а дрейф при изменении температуры на 10 °C — ±30 мкТл типично, столько же, сколько измеряемая составляющая. У BMM150 шум — от 1,0 мкТл в режиме low power до 0,3 мкТл в режиме high accuracy, но и его смещение без калибровки — ±40 мкТл, больше горизонтальной составляющей 30 мкТл, при которой Bosch нормирует курс. Bosch доводит его примерно до ±2 мкТл программной калибровкой, при которой устройство поворачивают в разные положения, а точность курса ±2,5° обещает только при полной калибровке и идеальной компенсации наклона. Слияние данных с гироскопом и акселерометром — в статье «Акселерометры и гироскопы».
Геркон или датчик Холла
| Свойство | Геркон | Датчик Холла |
|---|---|---|
| Питание | не нужно | нужно: в среднем от 0,54 мкА у DRV5032FB при 1,8 В |
| Типичный порог срабатывания | обычно меньше 5 мТл | тоже обычно меньше 5 мТл: от 1 мТл у TMAG5134 до 3 мТл у DRV5032FA |
| Износ | контакты изнашиваются: при больших нагрузках 100 000–1 000 000 переключений | механического износа нет |
| Дребезг | есть | нет, выход электронный с гистерезисом |
| Коммутируемый ток | больше 1 А | до 5 мА у DRV5032, до 30 мА у DRV5013 |
| Монтаж | стеклянный баллон, часто ручная установка | обычная автоматическая сборка |
| Направление чувствительности | зависит от конструкции, возможны «слепые» положения магнита | перпендикулярно корпусу (DRV5032) или в его плоскости (TMAG5233) |
По TI (SLYA090B), геркон — единственный из магнитных выключателей, который не потребляет тока, и он может сам коммутировать нагрузку: Allegro указывает для него ток больше 1 А (AN296192, табл. 1). Зато его контакты дребезжат при замыкании и изнашиваются, баллон хрупок и плохо подходит для автоматического монтажа. У геркона, по TI, бывают зоны, где он не замечает магнит, но срабатывает, если повернуть магнит на 90°, и несколько точек срабатывания при движении магнита. Датчик Холла требует питания, но экономичные модели с выборкой по таймеру потребляют доли микроампера и не изнашиваются.
Пример для Arduino
Arduino Uno с питанием 5 В: униполярный DRV5023FA считает обороты по одному магниту на валу, линейный DRV5055A2 измеряет поле.
// Arduino Uno, 5 V supply.
// DRV5023FA: OUT -> D2, 10 kOhm pull-up to 5 V, 0.01 uF from VCC to GND.
// One magnet on the shaft, south pole facing the marked side.
// DRV5055A2: OUT -> A0, 0.01 uF from VCC to GND, 50 mV/mT at 5 V.
const uint8_t SWITCH_PIN = 2; // D2 = INT0
const uint8_t LINEAR_PIN = A0;
const uint8_t PULSES_PER_REV = 1; // magnets on the shaft
const float SENS_MV_PER_MT = 50.0; // DRV5055A2 at VCC = 5 V
const float MV_PER_CODE = 5000.0 / 1024.0; // ratiometric: ADC reference is VCC
volatile uint32_t pulses = 0;
float zeroCode = 512.0; // ADC code at 0 mT, measured in setup()
void onPulse() {
pulses++; // output falls when B exceeds B_OP
}
float readAverage(uint8_t pin, uint8_t count) {
uint32_t sum = 0;
for (uint8_t i = 0; i < count; i++) sum += analogRead(pin);
return (float)sum / count;
}
void setup() {
Serial.begin(115200);
pinMode(SWITCH_PIN, INPUT); // external pull-up on the board
attachInterrupt(digitalPinToInterrupt(SWITCH_PIN), onPulse, FALLING);
zeroCode = readAverage(LINEAR_PIN, 64); // keep magnets away at start-up
}
void loop() {
static uint32_t lastMs = 0;
if (millis() - lastMs < 1000) return;
lastMs += 1000;
noInterrupts();
uint32_t count = pulses;
pulses = 0;
interrupts();
float rpm = count * 60.0 / PULSES_PER_REV;
float code = readAverage(LINEAR_PIN, 16);
float mT = (code - zeroCode) * MV_PER_CODE / SENS_MV_PER_MT; // positive = south pole
Serial.print(rpm, 0);
Serial.print(" rpm, ");
Serial.print(mT, 2);
Serial.println(" mT");
}
analogRead() по умолчанию берёт опорным питание AVCC: в ядре Arduino DEFAULT = 1, это биты REFS = 01 (табл. 24-3 даташита ATmega328P). Поэтому пересчёт логометрический, и колебания питания 5 В на результат почти не влияют. Ноль калибруется при запуске — магнит в это время держат подальше. Вывод D2 подключён к прерыванию INT0; в ядре Arduino для Uno digitalPinToInterrupt() возвращает номер прерывания только для выводов 2 и 3.
Типичные ошибки
- Нет подтяжки. У DRV5013, DRV5023 и DRV5032FC, AJ, ZE выход — открытый сток: без резистора вход микроконтроллера ничем не подтянут и читает случайные уровни.
- Магнит сбоку. Планарные датчики вроде DRV50xx и A1324 видят только составляющую поля, перпендикулярную верхней грани корпуса; повёрнутый магнит он может не заметить вовсе.
- Не тот полюс. Униполярный DRV5023 реагирует только на южный полюс у маркированной стороны. У DRV5053 с отрицательной чувствительностью южный полюс опускает выход ниже 1 В, а не поднимает.
- Расчёт по типовому порогу. Срабатывание гарантирует поле больше максимального BOP, отпускание — меньше минимального BRP; сверху нужен запас на нагрев магнита и допуски механики.
- Защёлка с одним магнитом. DRV5013AD, AG или BC без северного полюса не отпустит, у FA поведение без поля не гарантировано, а после включения в слабом поле состояние любой версии не определено.
- Медленный датчик на быстром валу. DRV5032 смотрит на поле 5–80 раз в секунду и пропускает короткие импульсы; для тахометра нужен DRV5013 или DRV5023.
- Ноль линейного датчика из даташита. У SS49E выход без поля — от 2,25 до 2,75 В: при 14 мВ/мТл это до ±18 мТл ошибки. Ноль калибруют на месте.
- Отдельная опора АЦП. Логометрический выход теряет преимущество, если опорное напряжение АЦП не от питания датчика.
- DRV5055 от 4 В. Его рабочие диапазоны — 3–3,63 и 4,5–5,5 В; около 4 В у датчика порог смены режимов, и чувствительность там не гарантирована (п. 6.3.5).
- Конденсатор прямо на выходе. У DRV5055 — только через резистор; у A1324 и DRV5053 ёмкость нагрузки не больше 10 нФ.
- Железо рядом. Стальной винт, кронштейн или корпус из стали перенаправляют поток, и расчёт расстояния перестаёт работать.
Частые вопросы
Чем датчик Холла отличается от геркона?
Геркон — контакты в стеклянном баллоне: он не потребляет тока и сам коммутирует ток больше 1 А, но дребезжит и изнашивается — по TI, при больших нагрузках за 100 000–1 000 000 переключений. Датчик Холла — микросхема без движущихся частей: ему нужно питание, зато, например, DRV5032FB потребляет в среднем 0,54 мкА при 1,8 В, не дребезжит и паяется как обычный SMD-компонент.
Как перевести гауссы в миллитеслы?
1 мТл = 10 Гс, 1 Гс = 0,1 мТл. Чувствительность в мВ/Гс умножают на 10, чтобы получить мВ/мТл: у A1324 5 мВ/Гс — это 50 мВ/мТл, у SS49E 1,4 мВ/Гс — 14 мВ/мТл. Порог DRV5013AD ±2,7 мТл — это ±27 Гс.
Как подключить SS49E или DRV5055 к Arduino?
Питание 5 В, общий провод, выход — на аналоговый вход, у самого датчика керамический конденсатор по питанию (у DRV5055 не меньше 0,01 мкФ). Без поля на выходе около 2,5 В — примерно 512 по шкале analogRead(). Поле равно (U − U₀) / S, где S = 14 мВ/мТл у SS49E и 50 мВ/мТл у DRV5055A2 при 5 В. Ноль U₀ лучше измерить при запуске: у SS49E он по даташиту от 2,25 до 2,75 В.
Почему датчик Холла не срабатывает от магнита?
Обычно по одной из четырёх причин: на выходе с открытым стоком нет подтягивающего резистора (TI в примере для 3,3 В ставит 10 кОм); магнит подведён сбоку, а датчики вроде DRV50xx и A1324 видят только поле, перпендикулярное лицевой стороне корпуса; к униполярному датчику вроде DRV5023 поднесён северный полюс; поле меньше максимального порога — у DRV5023FA это 6,8 мТл при типовом 3,5 мТл.
Какой датчик Холла выбрать для измерения оборотов?
Быстрый, без выборки по таймеру: DRV5023 для одного магнита на валу или защёлку DRV5013 для кольцевого магнита с чередующимися полюсами. У обоих полоса не меньше 20 кГц и задержка 13 мкс типично. Экономичный DRV5032 смотрит на поле только 5, 20 или 80 раз в секунду и может пропускать импульсы. Обороты в минуту — 60 · N / (k · t), где k — импульсов на оборот.
Можно ли сделать компас на датчике Холла?
На 3D-датчике Холла для магнитов — нет. Горизонтальная составляющая поля Земли, при которой Bosch нормирует точность компаса BMM150, — 30 мкТл, а шум TMAG5273 по осям X и Y — 125 мкТл среднеквадратично без усреднения и 22 мкТл даже при усреднении 32 отсчётов; дрейф его смещения — ±3 мкТл/°C типично. Нужен магнитометр: шум BMM150 — от 0,3 до 1,0 мкТл в зависимости от режима, после калибровки его смещение около ±2 мкТл, а точность курса — ±2,5°.
Источники
- Allegro MicroSystems. AN296065: Allegro Hall-Effect Sensor ICs (Rev. 1, July 26, 2022) — раздел Hall-Effect Principles — сила Лоренца и формула напряжения Холла V_H = I·B⊥/(ρn·q·t); определения переключателя (B_OP, B_RP, гистерезис против дребезга от шума), защёлки (включается южным, выключается северным полюсом, хранит состояние без поля; коммутация двигателей и измерение скорости) и линейного датчика (без поля VCC/2, южный полюс сдвигает выход к VCC)
- Texas Instruments. DRV5032 Ultra-Low-Power Digital-Switch Hall Effect Sensor (SLVSDC7H, revised December 2024) — табл. 4-1 — версии, пороги, тип выхода, частота выборки; табл. 5-1 — выводы OUT, OUT1 (север) и OUT2 (юг) по версиям и корпусам; 6.1 и 6.3 — B_MAX не ограничена, ток выхода до ±5 мА; 6.5 — выборка 5/20/80 Гц и её период, средний ток 0,54/1,3/5,2 мкА при 1,8 В, 1,6 мкА у версий на 20 Гц и 0,69 мкА у FB при 3 В, t_ON 55 мкс; 6.6 — B_OP, B_RP, B_hys версий FA/FB/FC, AJ, ZE, DU, FD; 7.3.1 — чувствительность к полю, перпендикулярному верху корпуса, южный полюс — положительное поле; 7.3.2.2–7.3.2.4 — омниполярный и униполярный отклик, двухтактный выход и открытый сток, выход между выборками не меняется; 8.1.1 — утечка через подтяжку, монтажное И; 8.2.1 — правило max B_OP / min B_RP, уравнения 1 и 2 (поле на оси блока и цилиндра), табл. 8-1 (кубик NdFeB 1 см на 2,5 см — 7,8 мТл), снижение Br с нагревом; 8.2.2.2 — моделирование, линейный датчик или гауссметр; 8.3 — правильное и неправильное расположение магнита; 8.4 — конденсатор не меньше 0,1 мкФ; 8.5.1 — пластик, алюминий и печатная плата не мешают полю
- Texas Instruments. DRV5013 Digital-Latch Hall Effect Sensor (SLIS150N, revised July 2025) — 4 — выводы SOT-23 и TO-92; 5.1 — B_MAX не ограничена; 5.3 и 5.5 — питание 2,5–38 В, ток 2,7 мА (1,5 мА у ND и FD), сток до 30 мА; 5.6 — задержка 13 мкс типично, 25 мкс максимум; 5.7 — полоса 20 кГц минимум и 30 кГц типично, пороги FA (B_OP −0,6…3,4 мТл, B_RP −3,4…0,6 мТл), AD, AG, BC, сноска 1 мТл = 10 Гс; 6.1 и 6.3.1 — южный полюс у маркированной стороны — положительное поле, подтяжка к другому напряжению; 6.3.2 — неопределённое состояние при включении между порогами, инверсный выход ND и FD; 6.3.4 — уравнение 1 для R1, R1 больше 500 Ом; 7.2.1 — 113 Ом–32 кОм, 10 кОм, 680 пФ, срез 23,4 кГц; 7.2.2 — двухпроводное включение: 12 В, 1 кОм, около 3 мА при B ниже B_RP и около 15 мА при B выше B_OP (табл. 7-3), C1 не меньше 0,1 мкФ (7.2.2.2); 7.3 — конденсатор не меньше 0,01 мкФ, пульсации меньше 50 мВ; 7.4.1 — встроенная подтяжка МК, медь и железо рядом с датчиком; рис. 7-1 и табл. 7-2 — типовая схема: C1, R1, C2
- Texas Instruments. DRV5023 Digital-Switch Hall Effect Sensor (SLIS151G, revised September 2016) — 5 — выводы; 6.5 — питание 2,5–38 В, ток 2,7 мА; 6.6 — задержка 13 мкс; 6.7 — полоса 30 кГц, пороги FA 3,5/2 мТл (1,8–6,8 и 0,5–4,2), AJ 6,9/3,2 мТл, BI 14,5/6 мТл, гистерезис; 7.1 — срабатывание от южного полюса у маркированной стороны, открытый сток с подтяжкой
- Texas Instruments. DRV5055 Ratiometric Linear Hall-Effect Sensor (SBAS640C, revised June 2026) — 4 — выводы, конденсатор не меньше 0,01 мкФ; 5.1 — B_MAX не ограничена; 5.3 — питание 3–3,63 и 4,5–5,5 В; 5.5 — ток 3 мА при 5 В, полоса 20 кГц, шум 0,12 мТл размах при 5 В, 6 мВ на выходе у A2; 5.6 — V_Q 2,43–2,57 В при 5 В, чувствительность A1–A4 при 5 и 3,3 В с допуском (у A4 при 5 В 11,9–13,2 мВ/мТл), диапазоны B_L, линейный выход 0,2 В…VCC − 0,2 В, STC 0,12 %/°C, ошибка логометричности ±2,5 %; 6.3.1 — знак поля; 6.3.2 — уравнение 1 и пример: A3, 3,3 В, 50 °C, 67 мТл — 2685 мВ; 6.3.3 — нелинейность у шин; 6.3.4 — ноль и чувствительность пропорциональны питанию; 6.3.5 — переходная область около 4 В; 6.3.6 — чувствительность версий A при 125 °C на 12 % выше; 7.1.2 — Br NdFeB −0,12 %/°C, феррита −0,20 %/°C; 7.1.3 — RC-фильтр, конденсатор без резистора на выходе недопустим; 7.1.4 — обнаружение обрыва; 7.2.2 — выбор версии по B_L; с. 1 — Typical Schematic: конденсатор по питанию, выход на АЦП контроллера с тем же VCC
- Allegro MicroSystems. A1324, A1325, A1326 Low-Noise Linear Hall-Effect Sensor ICs with Analog Output (A1324-DS, Rev. 9, June 16, 2022) — Selection Guide — 5,000, 3,125 и 2,500 мВ/Гс; Operating Characteristics — питание 4,5–5,5 В, ток 6,9 мА, полоса 17 кГц, V_OUT(Q) 2,425–2,575 В, шум 7,0/4,4/3,5 мВ размах, нагрузка не меньше 4,7 кОм и не больше 10 нФ, насыщение выхода не меньше 4,7 В и не больше 0,30 В при нагрузке 4,7 кОм (линейный диапазон не нормирован), допуск чувствительности, ошибки логометричности, сноска 1 Гс = 0,1 мТл; Characteristic Definitions — южный полюс у маркированной поверхности повышает выход; Chopper Stabilization Technique; Typical Application Circuit — 0,1 мкФ по питанию
- Honeywell. SS39ET/SS49E/SS59ET Series Linear Hall-effect Sensor ICs, datasheet (005850-4-EN, February 2015) — описание — выход задаётся напряжением питания и пропорционален полю, реакция на поле обоих знаков; табл. 1 — питание 2,7–6,5 В, ток 6 мА (до 10 мА), чувствительность 1,4 мВ/Гс (1,0–1,75), выход без поля 2,25–2,75 В при 5 В и 25 °C, диапазон ±1000 Гс типично и не меньше ±650 Гс, время отклика 3 мкс; рис. 3 — чувствительность на вольт питания в зависимости от питания (зависимость нуля от питания не приведена)
- Texas Instruments. DRV5053 Analog-Bipolar Hall Effect Sensor (SLIS153D, revised February 2023) — 6.5 — питание 2,5–38 В, ток 2,7 мА; 6.7 — V_Q 0,9–1,15 В, полоса 20 кГц, шум 0,49 мТл размах, насыщение 0,2 и 1,8 В, чувствительность и B_SAT исполнений OA, PA, RA, VA, CA, EA; 7.1 — без поля 1 В, знак отклика при отрицательной и положительной чувствительности; 7.3.4 — нагрузка больше 10 кОм и меньше 10 нФ, фильтр от 200 Ом и до 0,1 мкФ
- Texas Instruments. TMAG5273 Low-Power Linear 3D Hall-Effect Sensor With I2C Interface (SLYS045C, revised April 2026) — Features и Description — три датчика Холла, 12-битный АЦП, питание 1,7–3,6 В, 2,3 мА в работе, 5 нА во сне, диапазоны ±40/±80 и ±133/±266 мТл, I²C до 1 МГц с CRC, CORDIC, прерывание по порогу; 5.7 — чувствительность 820 LSB/мТл в диапазоне ±40 мТл, смещение ±300 мкТл типично и ±1000 мкТл максимум, дрейф смещения ±3 мкТл/°C типично и ±10 мкТл/°C максимум, шум по X и Y 125 мкТл (среднеквадратично) без усреднения и 22 мкТл при CONV_AVG = 101b; описание регистров — 101b (5h) означает усреднение 32 отсчётов; табл. 6-2 — адреса I²C 35h, 22h, 78h, 44h
- Bosch Sensortec. BMM150 Geomagnetic Sensor: Data sheet (BST-BMM150-DS001-05, revision 1.4, April 2020) — General Description — технология FlipCore; 1.1 — VDD 1,62–3,6 В, VDDIO 1,2–3,6 В, диапазон ±1300 мкТл по X, Y и ±2500 мкТл по Z, точность курса ±2,5° при горизонтальной составляющей 30 мкТл, полной калибровке и идеальной компенсации наклона, 170 мкА при 10 Гц; 1.2 — разрешение 0,3 мкТл, шум 1,0 мкТл по X и Y в режиме low power и 0,3 мкТл в режиме high accuracy (среднеквадратично), смещение нуля ±40 мкТл и ±2 мкТл после калибровки поворотами; 3 — блок-схема: X и Y — FlipCore, Z — пластина Холла; 6.2, табл. 30 — адреса I²C 0x10–0x13
- Texas Instruments. SLYA090B: Replacing Reed and Magnetoresistive Switches With Cost-Effective, Low-Power Hall-Effect Switches (revised August 2025) — 1.1 — из магнитных выключателей только геркон не потребляет тока; 1.2 — TMAG5134 с концентратором поля: пороги до ±1 мТл; 2.2.3 — у геркона бывают зоны без срабатывания и несколько точек срабатывания; 2.3 — у каждой технологии пороги B_OP обычно меньше 5 мТл, дребезг геркона, 100 000–1 000 000 переключений при больших нагрузках, сложность автоматического монтажа; табл. 3-1 — ручная установка геркона, отсутствие повреждений сильным полем
- Allegro MicroSystems. AN296192: Conversion from Mechanical to Hall-Effect and TMR Switches (Rev. 1, May 22, 2025) — табл. 1 — сравнение технологий: коммутируемый ток геркона больше 1 А; раздел Reed Switch — износ контактов зависит от нагрузки
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B, 2020) — п. 24.7 — код АЦП N = U·1024 / U_оп; табл. 24-3 — REFS = 01: опорное AVCC; п. 30.2 — подтягивающий резистор вывода 20–50 кОм; выводы — PD2 это INT0
- Arduino. ArduinoCore-avr, коммит 11b9130 (github.com/arduino/ArduinoCore-avr) — variants/standard/pins_arduino.h — digitalPinToInterrupt(): прерывания только у выводов 2 и 3; cores/arduino/Arduino.h — DEFAULT = 1 для ATmega328P; wiring_analog.c — analog_reference записывается в биты REFS регистра ADMUX
Нашли ошибку?
Смотрите также
- ДатчикиТок и температура: шунты, датчики Холла, термисторы, термопары — подключение и расчёт
- Измерение токаШунт и усилитель, датчик Холла ACS712, трансформатор тока: точность, шум, развязка
- АЦПКвантование, формула кода, SAR, время выборки, погрешности, передискретизация
- Акселерометры и гироскопыBMI160, BMI270, BMI323, BNO055: параметры, дрейф гироскопа, слияние, подключение
- Эффект ХоллаНапряжение поперёк проводника с током в магнитном поле
- Таймеры STM32Тактирование, PSC/ARR, ШИМ, мёртвое время, захват, энкодер, OPM, синхронизация