Перейти к содержанию

Датчики Холла и магнитного поля

Датчик Холла превращает магнитное поле в сигнал: цифровой отвечает «магнит есть или нет», линейный выдаёт напряжение, пропорциональное полю, 3D-датчик — три числа по I²C. Разбираем по даташитам производителей, чем различаются переключатели, защёлки, линейные датчики и магнитометры, как их подключить к микроконтроллеру, пересчитать напряжение в миллитеслы и не ошибиться с полюсом магнита.

Обновлено Редакция GAW

Если через полупроводниковую пластину течёт ток, а поперёк неё проходит магнитное поле, сила Лоренца отклоняет носители заряда к одному краю, и между краями пластины появляется напряжение Холла. По Allegro (AN296065) оно равно

VH=I⋅B⊥n⋅q⋅t,V_H = \frac{I \cdot B_\perp}{n \cdot q \cdot t},

где I — ток через пластину, B⊥B_\perp — составляющая индукции, перпендикулярная пластине, 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; отпускает ниже BRPDRV5023, DRV5032DUдверь открыта или закрыта, стыковка, положение клапана, счёт импульсов
Омниполярный переключательто же для любого полюсаDRV5032FA, FB, FC, AJ, ZEкрышки и чехлы, детектор вскрытия счётчика, электронные замки
Защёлка (биполярная)включается южным полюсом, выключается северным, без поля хранит состояние (у DRV5013AD, AG, BC; у FA пороги около нуля)DRV5013тахометры, расходомеры, бесколлекторные двигатели
Линейныйнапряжение, пропорциональное полю; без поля — середина питания, у DRV5053 — около 1 ВDRV5055, A1324, SS49E, DRV5053положение, угол, ток, педали, курки, клавиатуры
3D и магнитометртри составляющие поля числами по I²C или SPITMAG5273, BMM150джойстики, угол поворота, компас

Разница между переключателем и защёлкой важна при счёте оборотов. Униполярный переключатель отпускает, когда магнит уходит, — одного магнита на валу достаточно. Защёлка, по Allegro, при снятии поля не выключается и держит состояние, пока к ней не придёт северный полюс (AN296065). У DRV5013AD, AG и BC так и есть: BOP у них только положительный, BRP — только отрицательный. У DRV5013FA пороги близки к нулю (BOP от −0,6 до 3,4 мТл, BRP от −3,4 до 0,6 мТл), и состояние без поля у отдельного экземпляра не гарантировано (п. 5.7). Защёлку ставят напротив кольцевого магнита с чередующимися полюсами или пары магнитов, обращённых к датчику разными полюсами: один южный полюс на валу включит защёлку один раз и навсегда.

Цифровые датчики: пороги и гистерезис

По даташитам TI:

ПараметрDRV5032DRV5023DRV5013
Типомниполярный (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,max30 мА≤R1≤Uref,min100 мкА,\frac{U_\text{ref,max}}{30\ \text{мА}} \le R_1 \le \frac{U_\text{ref,min}}{100\ \text{мкА}},

где 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 в корпусе SOT-23: вывод 1 (VCC) — питание, вывод 3 — общий провод, между ними конденсатор C1 не меньше 0,01 мкФ. Выход OUT (вывод 2) подтянут к питанию резистором R1 10 кОм и идёт на вход микроконтроллера; конденсатор C2 680 пФ с выхода на общий провод необязателен. У DRV5032 конденсатор по питанию — не меньше 0,1 мкФ. Справа — линейный DRV5055: питание VCC с конденсатором не меньше 0,01 мкФ, выход OUT подключён ко входу АЦП микроконтроллера, который питается от того же VCC.а) цифровой, открытый сток — DRV5013DRV5013GND3OUT2VCC1к входу МКR110 кОмVCCC2 680 пФ, необязателенC1 ≥ 0,01 мкФу DRV5032 конденсатор по питанию — не меньше 0,1 мкФб) линейный — DRV5055DRV5055VCC1GND3OUT2МКVCCАЦПGNDVCC: 3,3 или 5 В≥ 0,01 мкФопорное АЦП — то же VCC: выход логометрическийконденсатор прямо на выход без резистора не ставить
Слева — цифровой датчик с открытым стоком по рис. 7-1 даташита DRV5013, справа — линейный DRV5055 по его типовой схеме: АЦП питается от того же VCC

Два провода вместо трёх. Если датчик далеко, DRV5013 подключают двумя проводами: выход соединяют с питанием через резистор, а состояние определяют по потребляемому току. В примере TI при 12 В и 1 кОм ток — около 3 мА, когда выход отпущен (поле ниже BRP), и около 15 мА, когда он притянут к нулю (поле выше BOP); без поля защёлка хранит последнее состояние, а с ним и ток. Конденсатор по питанию в такой схеме — не меньше 0,1 мкФ (п. 7.2.2).

Несколько датчиков на один вход. Выходы с открытым стоком соединяют вместе: линия опустится, если сработал любой из датчиков (DRV5032, п. 8.1.1).

Счёт оборотов и опрос микроконтроллером

Цифровой датчик подключают ко входу с прерыванием: у неинвертированных версий выход падает в ноль, когда поле превышает BOP, — прерывание настраивают на спад. Частота вращения:

nоб=60⋅Nk⋅t об/мин,n_\text{об} = \frac{60 \cdot N}{k \cdot t}\ \text{об/мин},

где N — число импульсов за время t в секундах, k — импульсов на оборот: число магнитов для униполярного переключателя или число пар полюсов кольцевого магнита для защёлки. При счёте за 1 с и одном импульсе на оборот шаг измерения — 60 об/мин, поэтому на малых скоростях измеряют период между импульсами, например захватом таймера — так это делается в статье «Таймеры STM32». Сам датчик быстрый: задержка DRV5013 и DRV5023 — 13 мкс типично и 25 мкс максимум.

Выход линейного датчика читают АЦП, как любой аналоговый сигнал; разрядность, опорное напряжение и время выборки разобраны в статье «АЦП».

Линейные датчики Холла

ПараметрDRV5055A1324 / A1325 / A1326SS49EDRV5053
Питание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):

Uвых=UQ+B⋅S25⋅(1+STC⋅(TA−25 ∘C)),U_\text{вых} = U_Q + B \cdot S_{25} \cdot \bigl(1 + \text{STC} \cdot (T_A - 25\ ^\circ\text{C})\bigr),

где 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), и поле выражается через код без напряжения питания:

B=(N1024−0,5)⋅5 ВS5 В,B = \left(\frac{N}{1024} - 0{,}5\right) \cdot \frac{5\ \text{В}}{S_{5\,\text{В}}},

где 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 В. Поле:

B=3,198 В−2,500 В0,050 В/мТл=13,96 мТл≈14,0 мТл=140 Гс.B = \frac{3{,}198\ \text{В} - 2{,}500\ \text{В}}{0{,}050\ \text{В/мТл}} = 13{,}96\ \text{мТл} \approx 14{,}0\ \text{мТл} = 140\ \text{Гс}.

Знак плюс: к лицевой стороне обращён южный полюс. Теперь допуски из таблицы. Выход без поля 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 от торца:

B=Br2(D+T(0,5 C)2+(D+T)2−D(0,5 C)2+D2),B = \frac{B_r}{2}\left(\frac{D + T}{\sqrt{(0{,}5\,C)^2 + (D + T)^2}} - \frac{D}{\sqrt{(0{,}5\,C)^2 + D^2}}\right),

где Br — остаточная индукция материала из паспорта магнита. Для цилиндра диаметром 10 мм и толщиной 5 мм:

D, мм251020
B/Br0,2210,0940,0270,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, ZX и 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°.

Источники

  1. 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)
  2. 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 — пластик, алюминий и печатная плата не мешают полю
  3. 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
  4. 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 — срабатывание от южного полюса у маркированной стороны, открытый сток с подтяжкой
  5. 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
  6. 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 мкФ по питанию
  7. 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 — чувствительность на вольт питания в зависимости от питания (зависимость нуля от питания не приведена)
  8. 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 мкФ
  9. 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
  10. 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
  11. 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 — ручная установка геркона, отсутствие повреждений сильным полем
  12. Allegro MicroSystems. AN296192: Conversion from Mechanical to Hall-Effect and TMR Switches (Rev. 1, May 22, 2025) — табл. 1 — сравнение технологий: коммутируемый ток геркона больше 1 А; раздел Reed Switch — износ контактов зависит от нагрузки
  13. 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
  14. 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

Нашли ошибку?