FEMM 5

Часть VII · Магнитные измерения → § 53 · Основы и измеряемые величины

Занятие 53.2

Измерение \(B, H\) и потока: датчик Холла и виртуальное измерение в FEMM

Цель и задачи

Цель. Оценить влияние ориентации и апертуры датчика на магнитный сигнал.

Задачи

  • Сопоставляйте показание датчика Холла с выбранной компонентой FEMM в согласованных координатах.
  • Получайте поток и магнитное напряжение по ориентированным контурам.
Что нужно вспомнить перед началом

Если одно из понятий незнакомо, вернитесь к предыдущему занятию и воспроизведите его численный пример. После этого переходите к новой постановке.

Место занятия в инженерной методике

Расчётная лабораторная работа · Переход от поля к наблюдаемому измерительному сигналу

Инженерный вопрос. Насколько показание датчика отличается от поля в одной точке?

Измерительная модель переводит распределение поля в сигнал датчика и позволяет выбрать расположение, ориентацию, калибровку и информативную характеристику устройства.

Лабораторная работа:

Последовательность решения, отчёт и критерии результата

Результат получают из наблюдаемых величин и проверяют в условиях данного практикума.

Последовательность решения

  1. Обосновать постановку и способ измерения. Задайте измеряемую величину, ориентацию, область усреднения и функцию преобразования датчика. Поле и выход датчика имеют разные определения и единицы.

  2. Контурный поток и показание датчика Холла. Проверьте преобразование, пространственное усреднение и калибровку на известном поле.

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

  4. Ответить на вопрос по своим результатам. Пропустите полевые данные через заданную модель датчика; сравните измеряемый сигнал с исходной полевой величиной.

Что включить в отчёт

Результат этого занятия. Таблица каналов с объяснением чувствительности к направлению и апертуре.

Данные именно этого опыта. Сопоставьте компоненты поля, ориентацию и усреднённые каналы четырёх нативных решений.

Оформление наблюдений. Исходное поле, координаты и ориентация датчика, коэффициенты преобразования и выходной сигнал; аналитические, FEMM и физические данные подписывайте отдельно.

Как обосновать результат

Проверка из практикума. Сохраните results.json, модели и решения. Укажите версию/хеш решателя и исходного скрипта; проверьте наличие всех четырёх строк и passed=true.

Независимый контроль. Выполните предусмотренный аналитический контроль, изменение ориентации или калибровочный опыт и сравните измерительную модель с исходным полем.

Критерий выполнения. Показание датчика Холла связано с выбранной компонентой и калибровочной моделью. Ориентация контуров, Depth и единицы указаны; знаки проверены обращением. Проверены обе сетки и обе добавки A; границы применимости эталона объяснены.

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

Основание сравнения. Используйте измерительную модель, калибровку и единицы из занятия. Виртуальная выборка FEMM и синтетическая запись не являются физическим экспериментом.

Вывод для устройства

Объясните, какой параметр устройства можно восстановить выбранным каналом и что необходимо измерить или откалибровать при переходе к натурному опыту.

Границы вывода. Аналитическое преобразование, виртуальный датчик FEMM и натурное измерение имеют разное происхождение. Характеристики прибора и его неопределённость требуют отдельных данных.

Теория и вывод формул

Виртуальное измерение поля требует выбора компоненты, чувствительной области и контура. Точный контрольный пример FEMM позволяет проверить дискретизацию и выбор калибровки векторного потенциала до интерпретации показаний датчика.

Соглашения об обозначениях и единицах
  • \(i(t)\), \(u(t)\) — мгновенные значения; \(\widehat I\), \(\widehat U\) — комплексные амплитуды; \(\underline I_{\text{д}}\), \(\underline U_{\text{д}}\) — комплексные действующие значения. Для синусоиды \(\widehat I=\sqrt{2}\,\underline I_{\text{д}}\); действующее значение тока равно \(|\underline I_{\text{д}}|\). Нормировка обязательно учитывается в формулах мощности.
  • \(\Phi=\int_S\mathbf B\cdot\mathrm d\mathbf S\) — поток через ориентированную поверхность; \(\Psi=\sum_k\oint_{C_k}\mathbf A\cdot\mathrm d\mathbf l\) — потокосцепление последовательных витков с согласованными замкнутыми контурами. Только при одинаковом сцепленном потоке каждого витка \(\Psi=N\Phi\). Обе величины измеряются в веберах: число витков безразмерно. Запись «Вб·виток» подчёркивает суммирование.
  • \(\theta_{\text{м}}\), \(\Omega\) (также \(\omega_{\text{мех}}\)) — механические угол и угловая скорость. Для основной гармоники \(\theta_{\text{э}}=p\theta_{\text{м}}\), \(\omega_{\text{э}}=p\Omega\), где \(p\) — число пар полюсов. Геометрический период зубцов задаётся отдельно. В производных по углу используйте радианы.
  • Статическая индуктивность \(L_{\text{ст}}=\Psi/i\) — наклон секущей из начала координат; это определение используется при \(\Psi(0)=0\) и \(i\ne0\). Динамическая индуктивность \(L_{\text{дин}}=\partial\Psi/\partial i\) — наклон касательной (дифференциальная, инкрементальная); положение и остальные токи фиксированы. Для линейной характеристики без смещения обе равны одной индуктивности \(L\). При постоянных магнитах и взаимном возбуждении сначала учитывают ненулевое смещение потокосцепления.
  • Положительные направления, оси и специальные индексы определяются в конкретной задаче. Единицу берите из условия или заголовка таблицы; перед подстановкой в формулу СИ переводите миллиметры в метры, миллигенри в генри и градусы в радианы.
  • Численные результаты обычно показаны с четырьмя значащими цифрами; для сравнения близких значений в таблицах сходимости сохранено больше цифр. Полные значения остаются в исходных расчётных данных. Малые остатки вычисления координат на осях показаны как ноль; малые физические величины сохраняются в показательной записи.
Указатель формул этого занятия
  1. (53.4) · Связь сигнала датчика Холла с компонентой \(B\)
  2. (53.5) · \(H\) определяется своим способом наблюдения
  3. (53.6) · Точный эталон для программы измерения
  4. (53.7) · От закона Био—Савара к условию Гельмгольца
  5. (53.8) · От закона Био—Савара к условию Гельмгольца
  6. (53.9) · Пространственное усреднение и электрический выход
  7. (53.10) · Пространственное усреднение и электрический выход
  8. (53.11) · Сопротивление, индуктивность и конечный сердечник
  9. (53.12) · Как составить бюджет калибровки

Связь сигнала датчика Холла с компонентой B

Чувствительная ось датчика задаётся корпусом и документацией; её нужно перенести в систему координат модели. В учебном линейном приближении U=U_{0}+KB\cdot n. При U_{0}=2{,}5\,\mathrm{В} и K=20\,\mathrm{В/Т} поле 10 мТ вдоль оси даёт 2,7 В. Это назначенные параметры идеального датчика, а не характеристики конкретной микросхемы.

Проверяйте нулевое смещение, чувствительность, насыщение диапазона, температурный дрейф и полосу. Устранение смещения по одному нулевому показанию не калибрует наклон. Для измерения переменной B нужны сведения об амплитудной и фазовой передаточной характеристике всей цепи.

В градиентном поле активная площадка усредняет распределение с пространственной чувствительностью. В FEMM сначала сравните сетку точек по области датчика с центральным отсчётом. Реальный вес может отличаться от равномерного; если он неизвестен, это ограничение измерительной модели.

U=U_0+K\,\mathbf B\cdot\mathbf n,\qquad\overline B_n=\frac{1}{S_a}\int_{S_a}\mathbf B\cdot\mathbf n\,dS
(53.4)
Равномерный пространственный вес — отдельная идеализация активной области.

H определяется своим способом наблюдения

В воздухе из измеренной B можно получить H\approx B/\mu _{0}. В замкнутом кольцевом образце без зазора среднюю касательную H оценивают по измеренному току: H\approx N_pi/\ell_m. Вторая формула опирается на закон Ампера и почти однородный магнитный путь; она не означает локального измерения H во всяком образце.

На границе материалов нормальная B непрерывна, а касательная H непрерывна при отсутствии поверхностного свободного тока. Измерение внешней компоненты у поверхности не даёт автоматически обе компоненты внутри. Для разомкнутого образца важны размагничивающее поле и форма образца.

\oint_C\mathbf H\cdot d\mathbf l=N_pi,\qquad H_{\text{кольцо}}\simeq\frac{N_pi}{\ell_m}
(53.5)
Локальная H заменяется средней только при обоснованной геометрии кольца.

Точный эталон для программы измерения

Воздушный прямоугольник 20 × 20 мм имеет глубину 10 мм. Задайте A_z=0 на левой стороне и A_z=-0{,}0002\,\mathrm{Вб/м} на правой; верх и низ имеют естественное \partial A/\partial n=0. Тогда A_z=-0{,}01x при x в метрах, B_y=0{,}01\,\mathrm{Т}, B_x=0 и H_y=7957{,}747\,\mathrm{А/м}. Объёмного тока в области нет: поле поддерживается заданными граничными условиями.

Это точная краевая задача, удобная для контроля единиц и обработки. Она не представляет внешний магнит, замкнутый сердечник или рассеяние в открытом пространстве. Поэтому проверки удалённой границы в этом эталоне нет: менять его размеры означает менять заданную задачу.

Программа создаёт четыре новых расчёта: размеры элемента 0,25 и 0,125 мм, постоянные добавки к A 0 и 0,0005 Вб/м. Проверяется также, что уточнение действительно увеличило число элементов. Производные A и B не меняются при общей постоянной добавке на обеих сторонах. Если меняется лишь одна сторона, это уже изменение поля.

Сопоставьте показания виртуальных каналов с численными результатами четырёх расчётов. Точный полевой эталон проверяет единицы и обработку поля; физическую калибровку датчика выполняют в отдельном эксперименте.

A_z(x)=A_0-B_0x,\qquad B_x=\frac{\partial A_z}{\partial y}=0,\qquad B_y=-\frac{\partial A_z}{\partial x}=B_0
(53.6)
Линейный потенциал удовлетворяет уравнению Лапласа в воздухе без тока.

Контуры в постпроцессоре

mo_getpointvalues(10,10) даёт компоненты B по индексам Python 1 и 2, H по индексам 5 и 6. После задания горизонтального контура mo_lineintegral(0) возвращает ориентированный поток и среднюю нормальную B. Обратный обход меняет знаки. Магнитное напряжение вертикального пути 16 мм получается первым элементом mo_lineintegral(1).

Поток через весь отрезок шириной 20 мм уже учитывает глубину 10 мм. Умножение на 100 витков выполнено далее как модель идеальной поисковой катушки с одинаковым сцеплением. В этой краевой задаче физической обмотки и цепи нет, поэтому mo_getcircuitproperties здесь не вызывается.

Идеальный датчик Холла и катушка не возмущают поле. Реальный зонд может требовать зазора, увеличивать магнитное сопротивление и менять положение проводников. При переносе процедуры в устройство нужно оценить поле с датчиком и без него либо обосновать, что возмущение мало.

Разобранный численный пример

Контурный поток и показание датчика Холла

Дано. Точный прямоугольный эталон: B_{0}=0{,}01\,\mathrm{Т}; S=20\cdot 10\,\mathrm{мм^2}; U_{0}=2{,}5\,\mathrm{В}, K=20\,\mathrm{В/Т}. Путь H направлен +y и имеет длину 16 мм.

  1. |\Phi |=0{,}01\cdot 0{,}020\cdot 0{,}010=2\,\mathrm{мкВб}. Средняя нормальная B по модулю 0,01 Т.

  2. U=2{,}5+20\cdot 0{,}01=2{,}7\,\mathrm{В}; H\cdot \ell =7957{,}747\cdot 0{,}016=127{,}323954\,\mathrm{А}.

  3. Ориентация контура определяет знак \Phi. После обращения \Phi обрат=-\Phi; физическая амплитуда потока не меняется.

Ответ: \mathrm{Hall}=2{,}7\,\mathrm{В}; |\Phi |=2\,\mathrm{мкВб}; магнитное напряжение пути=127,3 А.

Проверка: Критерии программы: |\Delta B|<10^{-8}\,\mathrm{Т}, ошибка |\Phi |<10^{-10}\,\mathrm{Вб}, сумма потоков прямого и обратного обходов <10⁻¹² Вб.

Углублённый разбор

Виртуальная калибровка: пара Гельмгольца, конечная катушка и сердечник

Измерительный объект и калибровочный стенд

Поисковая катушка измеряет изменение магнитного потока через свои витки. Её выход — напряжение, пропорциональное скорости изменения потокосцепления. Поэтому постоянное поле неподвижной катушкой без дополнительной модуляции не измеряется. При гармоническом поле и известных частоте, площади и числе витков амплитуда напряжения позволяет восстановить среднюю нормальную индукцию.

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

Виртуальный стенд здесь построен непосредственно командами FEMM 5. Использована полезная идея pywinding о совместном рассмотрении стенда, катушки и сердечника; сама библиотека, её внешние зависимости и программные оболочки не нужны. Построены четыре самостоятельных магнитостатических решения: поле стенда при \mu _{r} сердечника 1 и 100, затем самоиндуктивность датчика при отключённом стенде.

От закона Био—Савара к условию Гельмгольца

Осевая составляющая поля кругового витка находится интегрированием закона Био—Савара: поперечные составляющие взаимно сокращаются, а все осевые вклады одинаковы. Для N витков и двух катушек поля суммируются. В центре первая производная по z равна нулю из-за зеркальной симметрии при любом расстоянии; именно вторая производная обнуляется при d=R.

После этого ведущая осевая неоднородность имеет четвёртый порядок по z/R. Это не означает однородности во всём пространстве или на любой площади датчика. Вне оси появляются радиальные составляющие; ошибка конечного датчика должна оцениваться интегралом, а не только двумя осевыми точками.

В конечно-элементной модели калибровочные обмотки имеют конечное сечение 1×1 мм. Формула тонкого кольца остаётся независимым приближённым ориентиром. Разницу от конечного сечения, дискретизации и внешней границы нужно отличать от погрешности измеряемого датчика.

B_z(z)=\frac{\mu_0NI R^2}{2}\left[(R^2+(z-d/2)^2)^{-3/2}+(R^2+(z+d/2)^2)^{-3/2}\right]
(53.7)
Две одинаковые катушки; R, d, z в метрах.
d=R:\quad B_0=\left(\frac45\right)^{3/2}\frac{\mu_0NI}{R},\qquad B_z(z)/B_0=1-\frac{144}{125}(z/R)^4+O((z/R)^6)
(53.8)
Нулевая вторая производная объясняет выбор расстояния, а не подменяет расчёт рабочего объёма.

Пространственное усреднение и электрический выход

Потокосцепление представляет сумму поверхностных интегралов по всем виткам. Для одинаковой площади A можно ввести эквивалентную среднюю индукцию Bavg=\Psi/(NA). Эффективная площадь реальной многослойной катушки — сумма площадей витков, а не площадь внешнего контура. Погрешность позиционирования и наклона меняет именно этот интеграл.

При фазорах \exp (j\omega t) ЭДС разомкнутой поисковой катушки равна−j\omega \Psi. Если вход измерительного прибора конечен, его сопротивление вместе с R и L обмотки образует делитель. Модуль ωNA даёт чувствительность только при высоком входном сопротивлении и отсутствии значимого влияния собственной ёмкости.

В расчёте сначала используется статический поток при 1 А стенда, затем он масштабируется на гармонический ток при предположении линейности. Это корректно для воздушной катушки на достаточно низкой частоте; для проводящего сердечника с потерями надо решать гармонику и учитывать комплексную \mu, \sigma и частотную зависимость входа.

\Psi=\sum_{k=1}^{N}\int_{S_k}\mathbf B\cdot\mathbf n\,dS,\quad\widehat E=-j\omega\widehat\Psi,\quad S_B=\frac{|E|}{|B_{ref}|}
(53.9)
B_{\mathrm{ref}} — поле калибровочного стенда без внесённого датчиком ферромагнитного возмущения.
\widehat U=\widehat E\frac{Z_{in}}{Z_{in}+R+j\omega L}
(53.10)
При приближении к собственному резонансу требуется ёмкостная модель, здесь не выполненная.

Сопротивление, индуктивность и конечный сердечник

При известной средней длине витка lturn и сечении провода Aw сопротивление R=N lturn/(σAw). Самоиндуктивность получают отдельным возбуждением датчика: L=\Psi /I при отключённой калибровочной паре. Повышение L и чувствительности сердечником может одновременно сузить полезную полосу и увеличить чувствительность к частоте, температуре и гистерезису.

Конечный сердечник размагничивается собственными полюсами. Для эллипсоидального приближения эффективная восприимчивость \chi eff=\chi/(1+Ndχ). Уже эта формула показывает, почему \mu _{r}=100 не даёт автоматически стократный прирост потока. Для цилиндра поле неоднородно, и одна постоянная Nd является приближением.

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

R=\frac{N\,2\pi r_m}{\sigma\pi d_w^2/4},\qquad L=\Psi/I,\qquad\chi_{eff}=\frac{\chi}{1+N_d\chi}
(53.11)
Последняя формула — оценка для конечного тела; новая конечно-элементная модель использует геометрию цилиндра непосредственно.

Как составить бюджет калибровки

Чувствительность зависит от тока стенда, радиуса и расстояния катушек, числа витков датчика, его площади и положения, частоты, входного сопротивления прибора и температуры. Неоднородность следует оценивать в фактическом объёме перемещения датчика. Сеточная чувствительность относится к численной модели, а неопределённость тока и геометрии — к физическому стенду.

Если величины независимы, относительные стандартные неопределённости перемножаемых коэффициентов складывают квадратично. Корреляции общего размера, температуры или калибровочного тока требуют ковариаций. Систематическую поправку на пространственное усреднение сначала применяют к результату; остаточная неопределённость поправки затем входит в бюджет.

В новом расчёте нет экспериментальных показаний, поверенного амперметра или аттестации катушек. Он показывает метод виртуальной калибровки и позволяет отделить геометрический эффект сердечника от неверного умножения на табличную \mu _{r}.

\left(\frac{u(B)}B\right)^2\simeq\left(\frac{u(U)}U\right)^2+\left(\frac{u(f)}f\right)^2+\left(\frac{u(NA)}{NA}\right)^2+u_{rel,spatial}^2
(53.12)
Формула предполагает независимые малые неопределённости и исправленные систематические эффекты.

Калибровочное поле и пространственное среднее

Дано. R=d=50 мм, N=100 в каждой катушке, I=1 А. Датчик N=100, r=4 мм, l=20 мм.

  1. Тонкие кольца дают B_{0}=1{,}7983526 мТл; FEMM без ферромагнитного сердечника —1,798 мТл, отклонение−0,00382%.

  2. При z=±10 мм поле около 1,79504 мТл, то есть ниже центра приблизительно на 0,18%.

  3. Из потокосцепления 9,03751 мкВб получено Bavg=1,798 мТл. Среднее отличается от центрального поля примерно на−0,0183%.

Ответ. При 1 кГц чувствительность разомкнутой воздушной катушки 31,5758 В/Т; при B_{\mathrm{RMS}}=1 мТл ожидается 31,576 мВ RMS.

Проверка. Это масштабирование DC-потока, а не отдельное гармоническое решение.

Что действительно даёт сердечник

Дано. Цилиндр r=3 мм, l=20 мм, \mu _{r}=100; обмотка r=4 мм,100 витков, dwire=0,1 мм.

  1. Без сердечника R=5{,}51724 Ом, L=26{,}6150 мкГн. С сердечником R не меняется, L=169{,}668 мкГн.

  2. Чувствительность относительно исходного B_{0} возрастает до 195,570 В/Т — примерно в 6,194 раза, а не в 100 раз.

  3. Поле в центре самого сердечника≈23,52 мТл, тогда как эквивалентное поле по потокосцеплению датчика≈11,14 мТл.

Ответ. Нельзя заменить пространственный поток одним B в центре сердечника. Изменения R, L и чувствительности следует рассматривать совместно.

Проверка. \mu _{r} здесь постоянная действительная; потери, нелинейность и частотная дисперсия отсутствуют.

Самостоятельное воспроизведение и расширение

  1. Запустите 01-helmholtz.py; раздельно прочитайте результаты при \mu _{r}=1 и 100.
  2. Измените расстояние пары на 0{,}8R и 1{,}2R, сравните вторую производную поля и полезный объём.
  3. Увеличьте длину датчика; сравните B(0), осевые точки и \Psi/(NA).
  4. По вычисленным R, L рассчитайте делитель для Rin=50 Ом и 1 МОм; определите, где поправка нагрузки существенна.

Ожидаемый результат. Четыре нативные модели; поле, потокосцепление, чувствительность, R, L и осевые точки.

Проверка.

  • Независимая формула Гельмгольца.
  • Геометрическая масса/площадь/длина в СИ.
  • B_{\mathrm{ref}} берётся до внесения сердечника.
Стенд Гельмгольца и поисковая катушка

Четыре DC-решения; чувствительность получена линейным гармоническим масштабированием.

Проверка программы. Программа выполнена во встроенном Python FEMM 5.0. Это ограниченная проверка указанной постановки, не эксперимент.

Скачать программу для встроенного Python FEMM 5

Для запуска сохраните необходимые файлы, сохраняя их имена и структуру подпапок:

MicroPython · FEMM 5
"""Калибровочная пара и поисковая катушка: поле, усреднение, сердечник, R и L.
Запуск внутри FEMM 5 из папки комплекта. Нужен common.py; внешних пакетов нет.
R=50 мм, расстояние=R, по 100 витков и 1 А DC; сечение каждой обмотки 1x1 мм.
Датчик: 100 витков среднего радиуса 4 мм, длина 20 мм, провод 0.1 мм.
Магнитная модель линейна; 1-кГц чувствительность выводится из DC поля,
поэтому вихревые потери и частотная проницаемость сердечника не моделируются.
"""

# Каталог сценария определяется явно: запуск не зависит от чужого CWD.
import os
import sys

os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))
exec(open("common.py").read())
folder = result_folder("results-helmholtz")
rows = []
for core_mu in [1, 100]:
    newdocument(0)
    mi_probdef(0, "millimeters", "axi", 1e-9, 1, 30)
    material("Air")
    material("Winding", sigma=58, wire_type=3, strands=1, diameter=0.1)
    material("Core", mu=core_mu)
    mi_addcircprop("Cal", 1, 1)
    mi_addcircprop("Sense", 0, 1)
    for z in [-25, 25]:
        mi_drawrectangle(49.5, z - 0.5, 50.5, z + 0.5)
        label(50, z, "Air", 0.2, "Cal", 100, 1)
    mi_drawrectangle(3.95, -10, 4.05, 10)
    label(4, 0, "Winding", 0.1, "Sense", 100, 2)
    mi_drawrectangle(0, -10, 3, 10)
    label(1.5, 0, "Core", 0.5, group=3)
    label(20, 0, "Air", 2)
    mi_makeABC(7, 200, 0, 0, 0)
    solve(folder, "calibration-mu%d" % core_mu)
    b0 = mo_getpointvalues(0, 0)[2]
    linkage = mo_getcircuitproperties("Sense")[2]
    samples = []
    for z in [-10, -5, 0, 5, 10]:
        samples.append([z, mo_getpointvalues(0, z)[2]])
    bavg = linkage / (100 * math.pi * 0.004**2)
    exact = (4 / 5) ** 1.5 * MU0 * 100 / 0.05
    row = {
        "core_mu": core_mu,
        "B0_T": b0,
        "linkage_Wb": linkage,
        "Bavg_T": bavg,
        "axis_z_mm_B_T": samples,
        "thin_loop_B0_T": exact,
        "sensitivity_V_per_T_at_1kHz": 2 * math.pi * 1000 * linkage / exact,
    }
    close_magnetic()
    # Самоиндуктивность датчика при отключённой калибровочной паре.
    opendocument(os.path.join(folder, "calibration-mu%d.fem" % core_mu))
    mi_modifycircprop("Cal", 1, 0)
    mi_modifycircprop("Sense", 1, 1)
    solve(folder, "self-mu%d" % core_mu)
    current, voltage, flux = mo_getcircuitproperties("Sense")
    row["L_H"] = flux / current
    row["R_ohm"] = voltage / current
    rows.append(row)
    close_magnetic()
    save_json(folder, rows)
assert abs(rows[0]["B0_T"] / rows[0]["thin_loop_B0_T"] - 1) < 0.02
assert rows[1]["L_H"] > rows[0]["L_H"] > 0
print(rows)

Сохранённые численные результаты: таблица JSON. Просмотр серий доступен на отдельной странице исследования.

Границы модели.

Собственные введение, выводы и геометрия. Новые результаты FEMM 5; внешние библиотеки отсутствуют. Виртуальная калибровка не является метрологической аттестацией.

Первоисточники: [69] (README; Coil и Testbench_B_Sweep. Использована предметная идея, библиотека не требуется.).

Практикум в FEMM 5

Воспроизведите четыре нативных решения и виртуальные каналы

Таблица 53.2. Исходные данные практикума
Исходная величинаЗначениеЕдиница
Прямоугольник20 × 20; глубина 10мм
B_{0}0,01Т
Сетки0,25; 0,125мм
  1. Скачайте программу; задайте OUTPUT новым каталогом. Выполните её целиком во встроенной Python-консоли FEMM 5.
  2. Откройте созданную модель и проверьте материал, частоту 0, глубину и две граничные величины A. На верхней и нижней сторонах нет фиксированного A.
  3. Сопоставьте B/H в центре, поток по контуру и магнитное напряжение с аналитическим ответом. Зафиксируйте выбранную нормаль.
  4. Сравните строки двух сеток и двух постоянных добавок A. В линейном эталоне ожидается точность вплоть до решателя; это не оценка точности произвольного устройства.
  5. Измените глубину в новой копии и повторите поток. Затем наклоните ось виртуального датчика Холла в последующей обработке на 5^\circ.
  6. В протоколе укажите, что расчёт ЭДС 50 Гц в JSON — аналитическая обработка DC-профиля при предположении синусоидального масштабирования, а не временное решение FEMM.

Ожидаемый результат. Четыре сохранённых FEM/ANS; одинаковые B и |\Phi | при изменении сетки и общего уровня A; U=2{,}7\,\mathrm{В}.

Как проверить. Сохраните results.json, модели и решения. Укажите версию/хеш решателя и исходного скрипта; проверьте наличие всех четырёх строк и passed=true.

Обработка и анализ результатов

Насколько показание датчика отличается от поля в одной точке?

  1. Сопоставьте компоненты поля, ориентацию и усреднённые каналы четырёх нативных решений.
  2. Пропустите полевые данные через заданную модель датчика; сравните измеряемый сигнал с исходной полевой величиной.

С чем сравнить. Используйте измерительную модель, калибровку и единицы из занятия. Виртуальная выборка FEMM и синтетическая запись не являются физическим экспериментом.

Итог работы. Таблица каналов с объяснением чувствительности к направлению и апертуре.

Программа с русскими пояснениями: Точный контрольный пример FEMM для датчика Холла, \(H\)-пути и поисковой катушки · Порядок запуска

Контрольный пример FEMM: датчик Холла, H-контур и измерительная катушка

Комментарии связывают граничный A_z с положительной компонентой B_y, объясняют номера возвращаемых величин, ориентацию интегралов и единицы Planar. На двух сетках повторяются два значения постоянной прибавки к потенциалу; отдельные проверки сопоставляют поля и потоки внутри каждой пары. Для повторного запуска выберите отсутствующий OUTPUT: предыдущие модели и результаты не перезаписываются. Скачиваемая учебная редакция соответствует коду на странице. Исходные материалы: комплект раздела.

Python · встроенный MicroPython FEMM 5
"""Точный эталон Hall и поисковой катушки в однородном поле FEMM 5.

Среда: встроенная Python-консоль FEMM 5; внешние пакеты не нужны.
Вход: B0 в Т, размеры и шаг сетки в мм, глубина Planar в мм, число витков.
Выход: четыре новые модели .fem и results.json с B [Т], H [А/м], Phi [Вб].
OUTPUT должен отсутствовать: при повторе выберите новое имя каталога.
Поле задаётся граничным потенциалом в воздухе; источник-магнит не моделируется.
Hall и катушка — идеальные невозмущающие наблюдатели без корпуса и калибровки.
"""

import json
import math
import os

OUTPUT = "measurement-field-run"
# mkdir намеренно прерывает повторный запуск, сохраняя предыдущие результаты.
os.mkdir(OUTPUT)

MU0 = 4 * math.pi * 1e-7  # Учебное приближение, Гн/м.
B0 = 0.01
WIDTH_MM = 20.0
HEIGHT_MM = 20.0
DEPTH_MM = 10.0
AREA = WIDTH_MM * DEPTH_MM * 1e-6  # мм² -> м²; поверхность потока x-z.
TURNS = 100
FREQ_HZ = 50.0


def real(value):
    """Извлечь действительную часть результата магнитостатического расчёта."""
    z = complex(value)
    # Комплексная компонента здесь указывает на неподходящий режим расчёта.
    assert abs(z.imag) < 1e-10, "Нужна магнитостатика"
    return z.real


# Две сетки и два добавочных постоянных потенциала проверяют сходимость
# и калибровочную инвариантность: прибавка к A_z не должна менять B.
rows = []
for mesh_mm in (0.25, 0.125):
    for a_offset in (0.0, 0.0005):
        newdocument(0)
        mi_probdef(0, "millimeters", "planar", 1e-10, DEPTH_MM, 25)
        mi_addmaterial("Air-reference", 1, 1, 0, 0, 0)

        # В Planar: B_y = -dA_z/dx. A_z измеряется в Вб/м,
        # поэтому ширину для разности потенциалов переводим из мм в м.
        mi_addboundprop("Left-A", a_offset, 0, 0, 0, 0, 0, 0, 0, 0)
        right_a = a_offset - B0 * WIDTH_MM * 1e-3
        mi_addboundprop("Right-A", right_a, 0, 0, 0, 0, 0, 0, 0, 0)
        corners = ((0, 0), (WIDTH_MM, 0), (WIDTH_MM, HEIGHT_MM), (0, HEIGHT_MM))
        for x, y in corners:
            mi_addnode(x, y)
        for k in range(4):
            x1, y1 = corners[k]
            x2, y2 = corners[(k + 1) % 4]
            mi_addsegment(x1, y1, x2, y2)
        for x, name in ((0, "Left-A"), (WIDTH_MM, "Right-A")):
            mi_selectsegment(x, HEIGHT_MM / 2)
            mi_setsegmentprop(name, 0, 1, 0, 0)
            mi_clearselected()

        # Верх и низ имеют естественное условие dA_z/dn = 0.
        # Отключённый автоматический размер задаёт независимый шаг сетки.
        mi_addblocklabel(WIDTH_MM / 2, HEIGHT_MM / 2)
        mi_selectlabel(WIDTH_MM / 2, HEIGHT_MM / 2)
        mi_setblockprop("Air-reference", 0, mesh_mm, "<None>", 0, 1, 0)
        mi_clearselected()
        stem = "mesh-" + str(mesh_mm) + "-gauge-" + str(a_offset)
        mi_saveas(OUTPUT + "/" + stem + ".fem")
        mi_analyze(1)
        mi_loadsolution()
        mo_smooth("off")

        # Позиции 1, 2, 5, 6 в mo_getpointvalues — Bx, By, Hx, Hy.
        point = mo_getpointvalues(WIDTH_MM / 2, HEIGHT_MM / 2)
        bx, by, hx, hy = [real(point[k]) for k in (1, 2, 5, 6)]

        # Потоковый интеграл уже учитывает глубину Planar: повторный
        # множитель DEPTH_MM недопустим. Знак задаёт направление контура.
        mo_clearcontour()
        mo_addcontour(0, HEIGHT_MM / 2)
        mo_addcontour(WIDTH_MM, HEIGHT_MM / 2)
        integral = mo_lineintegral(0)
        signed_flux = real(integral[0])
        average_bn = real(integral[1])
        mo_clearcontour()
        mo_addcontour(WIDTH_MM, HEIGHT_MM / 2)
        mo_addcontour(0, HEIGHT_MM / 2)
        reversed_flux = real(mo_lineintegral(0)[0])

        # Интеграл H·dl вдоль положительного y на пути длиной 16 мм, А.
        mo_clearcontour()
        mo_addcontour(WIDTH_MM / 2, 2)
        mo_addcontour(WIDTH_MM / 2, 18)
        magnetic_voltage = real(mo_lineintegral(1)[0])
        row = {
            "mesh_mm": mesh_mm,
            "a_offset_Wb_per_m": a_offset,
            "nodes": int(mo_numnodes()),
            "elements": int(mo_numelements()),
            "Bx_T": bx,
            "By_T": by,
            "Hx_A_per_m": hx,
            "Hy_A_per_m": hy,
            "signed_flux_Wb": signed_flux,
            "average_Bn_T": average_bn,
            "reversed_flux_Wb": reversed_flux,
            "magnetic_voltage_A": magnetic_voltage,
            # Идеальный Hall: нулевой уровень 2,5 В и чувствительность 20 В/Т.
            "Hall_output_V": 2.5 + 20 * by,
            "linkage_magnitude_Wb": TURNS * abs(signed_flux),
            # DC-решение задаёт амплитуду предполагаемой синусоиды потока.
            # Это аналитическая оценка ЭДС, а не временное решение FEMM.
            "emf_rms_50Hz_V": (
                2 * math.pi * FREQ_HZ * TURNS * abs(signed_flux) / math.sqrt(2)
            ),
        }

        # Допуски заданы в единицах соответствующих величин и сопоставлены
        # с точным решением: B_y = B0, H_y = B0/mu0, |Phi| = B0*S.
        assert abs(bx) < 1e-8 and abs(by - B0) < 1e-8
        assert abs(hx) < 0.01 and abs(hy - B0 / MU0) < 0.01
        assert abs(abs(signed_flux) - B0 * AREA) < 1e-10
        assert abs(abs(average_bn) - B0) < 1e-8
        assert abs(signed_flux + reversed_flux) < 1e-12
        assert abs(magnetic_voltage - B0 / MU0 * 0.016) < 0.001
        rows.append(row)
        mo_close()
        mi_close()

# Каждая пара строк относится к одной сетке и двум значениям прибавки к A_z.
for k in (0, 2):
    assert abs(rows[k]["By_T"] - rows[k + 1]["By_T"]) < 1e-8
    assert abs(rows[k]["signed_flux_Wb"] - rows[k + 1]["signed_flux_Wb"]) < 1e-10
assert rows[2]["elements"] > rows[0]["elements"], "Нужны разные сетки"

# Сохраняем численные величины вместе с происхождением и границами модели.
result = {
    "origin": "native_FEMM_static_uniform_air_field",
    "scope": "Point B/H, oriented flux, 16 mm H path, mesh and gauge checks; ideal passive sensors; no physical calibration or device validation.",
    "input": {"B_T": B0, "width_mm": WIDTH_MM, "depth_mm": DEPTH_MM, "turns": TURNS},
    "expected": {"flux_magnitude_Wb": B0 * AREA, "Hy_A_per_m": B0 / MU0},
    "rows": rows,
    "passed": len(rows) == 4,
}
with open(OUTPUT + "/results.json", "w") as stream:
    json.dump(result, stream)
print(json.dumps(result))

Расчётные исследования по теме

Изучите физическую постановку, выполните программу во встроенном Python FEMM 5 и проверьте результаты по сохранённым моделям и независимым критериям.

Все темы учебного практикума

Окна FEMM 5

Снимки интерфейса FEMM показывают геометрию, настройки и работу с результатами в FEMM 5. Откройте изображение, чтобы рассмотреть подписи и значения в полном размере.

Сегментированный цилиндр Хальбаха: поле и дискретизация намагничивания. Геометрия учебной модели; подписи скрыты для читаемости.
Сегментированный цилиндр Хальбаха: поле и дискретизация намагничивания. Геометрия учебной модели; подписи скрыты для читаемости. Открыть в полном размере
Сохранённое решение «Сегментированный цилиндр Хальбаха: поле и дискретизация намагничивания». Модуль магнитной индукции |B|, Тл, и линии статического магнитного поля; рабочая область модели.
Сохранённое решение «Сегментированный цилиндр Хальбаха: поле и дискретизация намагничивания». Модуль магнитной индукции |B|, Тл, и линии статического магнитного поля; рабочая область модели. Открыть в полном размере
Реакция якоря машины постоянного тока: раздельное и совместное возбуждение. Геометрия учебной модели; подписи скрыты для читаемости.
Реакция якоря машины постоянного тока: раздельное и совместное возбуждение. Геометрия учебной модели; подписи скрыты для читаемости. Открыть в полном размере
Сохранённое решение «Реакция якоря машины постоянного тока: раздельное и совместное возбуждение». Модуль магнитной индукции |B|, Тл, и линии статического магнитного поля; рабочая область модели.
Сохранённое решение «Реакция якоря машины постоянного тока: раздельное и совместное возбуждение». Модуль магнитной индукции |B|, Тл, и линии статического магнитного поля; рабочая область модели. Открыть в полном размере

Самостоятельная работа

Составьте воспроизводимый протокол виртуального датчика Холла и контурного измерения потока: исходная программа, четыре пары FEM/ANS и таблица точных проверок.

Критерий выполнения: Показание датчика Холла связано с выбранной компонентой и калибровочной моделью. Ориентация контуров, Depth и единицы указаны; знаки проверены обращением. Проверены обе сетки и обе добавки A; границы применимости эталона объяснены.
Первоисточники и дополнительное чтение по занятию
  1. [64] — Чувствительность, смещение нуля, диапазон и температурные эффекты
  2. [33] — §§ 2.2.7–2.2.10, 3.4.1; приложения о гармонических материалах
  3. [52] — Размеры датчика и неоднородность поля
  4. [69] — README; Coil и Testbench_B_Sweep. Использована предметная идея, библиотека не требуется.
Пояснения и типичные ошибки
Можно ли повторно умножить поток mo_lineintegral(0) на Depth?

Нельзя: потоковый интеграл уже включает геометрию Planar. Повторный множитель глубины меняет размерность и значение.

Почему две разные постоянные добавки A дают одинаковый результат измерения датчиком Холла?

B определяется производными A; одинаковая постоянная добавка не меняет поле. Изменение только одной стороны меняет градиент и B.

Самостоятельно: U=2{,}66\,\mathrm{В}, U_{0}=2{,}5\,\mathrm{В}, K=20\,\mathrm{В/Т}. Найдите B_n.

B_n=8\,\mathrm{мТ}; это компонента вдоль оси в калиброванном диапазоне.

На что обратить внимание

  • Поток уже содержит глубину модели; не вводите её повторно.
  • Точное однородное поле не является моделью реального зазора.
  • Нулевой ток в области совместим с полем, созданным граничными условиями.