Оглавление:
- Шаг 1. Соберите припасы
- Шаг 2: Подключение
- Шаг 3. Проверьте дисплей
- Шаг 4: Код магнитометра
- Шаг 5: Дальнейшая работа
Видео: Магнитометр Arduino: 5 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Что мы строим?
Люди не могут обнаруживать магнитные поля, но мы постоянно используем устройства, которые полагаются на магниты. Например, для двигателей, компасов, датчиков вращения и ветряных турбин для работы требуются магниты. В этом руководстве описывается, как создать магнитометр на базе Arduino, который измеряет магнитное поле с помощью трех датчиков эффекта Холла. Вектор магнитного поля в определенном месте отображается на маленьком экране в изометрической проекции.
Что такое Ардуино?
Arduino - это небольшой удобный микроконтроллер с открытым исходным кодом. Он имеет цифровые входные и выходные контакты. Он также имеет контакты аналогового входа, которые полезны для считывания входных данных с датчиков. Доступны разные модели Arduino. В этом руководстве описывается, как использовать Arduino Uno или Arduino MKR1010. Однако можно использовать и другие модели.
Прежде чем приступить к этому руководству, загрузите среду разработки Arduino, а также любые библиотеки, необходимые для вашей конкретной модели. Среда разработки доступна по адресу https://www.arduino.cc/en/main/software, а инструкции по установке доступны по адресу
Что такое магнитное поле?
Постоянные магниты действуют на другие постоянные магниты. Токоведущие провода действуют на другие токоведущие провода. Постоянные магниты и токоведущие провода тоже действуют друг на друга. Эта сила, приходящаяся на единицу испытательного тока, представляет собой магнитное поле.
Если мы измеряем объем объекта, мы получаем одно скалярное число. Однако магнетизм описывается векторным полем, более сложной величиной. Во-первых, он меняется в зависимости от положения во всем пространстве. Например, магнитное поле в одном сантиметре от постоянного магнита, вероятно, будет больше, чем магнитное поле в десяти сантиметрах от него.
Затем магнитное поле в каждой точке пространства представлено вектором. Величина вектора представляет собой силу магнитного поля. Направление перпендикулярно как направлению силы, так и направлению испытательного тока.
Мы можем изобразить магнитное поле в одном месте в виде стрелки. Мы можем изобразить магнитное поле во всем пространстве множеством стрелок в разных местах, возможно, разного размера и указывающих в разных направлениях. Хорошая визуализация доступна по адресу https://www.falstad.com/vector3dm/. Магнитометр, который мы строим, отображает магнитное поле в месте расположения датчиков в виде стрелки на дисплее.
Что такое датчик на эффекте Холла и как он работает?
Датчик на эффекте Холла - это небольшое недорогое устройство, которое измеряет силу магнитного поля в определенном направлении. Он сделан из куска полупроводника, легированного избыточными зарядами. На выходе некоторых датчиков на эффекте Холла подается аналоговое напряжение. Другие датчики на эффекте Холла имеют встроенный компаратор и выдают цифровой выходной сигнал. Другие датчики на эффекте Холла интегрированы в более крупные приборы, которые измеряют расход, скорость вращения или другие величины.
Физика эффекта Холла резюмируется уравнением силы Лоренца. Это уравнение описывает силу, действующую на движущийся заряд, вызванную внешним электрическим и магнитным полями.
На рисунке ниже показан эффект Холла. Предположим, мы хотим измерить силу магнитного поля в направлении синей стрелки. Как показано в левой части рисунка, мы пропускаем ток через кусок полупроводника перпендикулярно направлению измеряемого поля. Ток - это поток зарядов, поэтому заряд в полупроводнике движется с некоторой скоростью. Этот заряд будет ощущать силу внешнего поля, как показано в средней части рисунка. Заряды будут перемещаться под действием силы и накапливаться на краях полупроводника. Заряды накапливаются до тех пор, пока сила, вызванная накопленными зарядами, не уравновесит силу, обусловленную внешним магнитным полем. Мы можем измерить напряжение на полупроводнике, как показано в правой части рисунка. Измеренное напряжение пропорционально силе магнитного поля и имеет направление, перпендикулярное току и направлению магнитного поля.
Что такое изометрическая проекция?
В каждой точке пространства магнитное поле описывается трехмерным вектором. Однако наш экран дисплея двумерный. Мы можем спроецировать трехмерный вектор на двухмерную плоскость, чтобы рисовать его на экране. Есть несколько способов сделать это, например, изометрическая проекция, ортогональная проекция или наклонная проекция.
В изометрической проекции оси x, y и z расположены на расстоянии 120 градусов друг от друга, и они кажутся одинаково укороченными. Дополнительную информацию об изометрической проекции, а также необходимые формулы можно найти на странице Википедии по этой теме.
Шаг 1. Соберите припасы
Ардуино и кабель
Arduino - это мозг магнитометра. Эти инструкции описывают, как использовать Arduino Uno или Arduino MKR1010. В любом случае для подключения к компьютеру необходим кабель.
Вариант 1: кабель Arduino Uno и USB AB
www.digikey.com/product-detail/en/arduino/A000066/1050-1024-ND/2784006
www.digikey.com/product-detail/en/stewart-connector/SC-2ABE003F/380-1424-ND/8544570
Вариант 2: Arduino MKR1010 и кабель microUSB
www.digikey.com/product-detail/en/arduino/ABX00023/1050-1162-ND/9486713
www.digikey.com/product-detail/en/stewart-connector/SC-2AMK003F/380-1431-ND/8544577
TFT-дисплей
TFT - это тонкопленочный транзистор. Этот 1,44-дюймовый дисплей содержит 128 на 128 пикселей. Он маленький, яркий и красочный. Он прикреплен к коммутационной плате. Однако контакты разъема отделены друг от друга, поэтому вам придется их припаять. нужный.)
www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830
- Аналоговые датчики на эффекте Холла
Требуются три датчика Холла. Ссылка ниже предназначена для номера детали Allegro A1324LUA-T. Для этого датчика контакт 1 - это напряжение питания, контакт 2 - земля, а контакт 3 - выход. Другие датчики Холла тоже должны работать, но убедитесь, что они аналоговые, а не цифровые. Если вы используете другой датчик, проверьте распиновку и при необходимости отрегулируйте проводку. (На самом деле я использовал другой датчик той же компании для целей тестирования. Однако тот, который я использовал, устарел, и этот датчик является его заменой.)
www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144
Малая макетная плата и провод
www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929
Постоянные магниты для тестирования
Магниты на холодильник подойдут.
Шаг 2: Подключение
Припаиваем заголовки к дисплею.
Разместите датчики на одном конце макета, а дисплей и Arduino - на противоположном конце. Ток в проводах в Arduino и на дисплее генерирует магнитные поля, которые мы не хотим, чтобы датчики считывали. Кроме того, мы можем разместить датчики рядом с постоянными магнитами, которые могут отрицательно повлиять на ток в проводах дисплея и датчика. По этим причинам мы хотим, чтобы датчики находились подальше от дисплея и Arduino. Также по этим причинам этот магнитометр следует держать вдали от очень сильных магнитных полей.
Разместите датчики перпендикулярно друг другу, но как можно ближе друг к другу. Осторожно согните датчики, чтобы они располагались перпендикулярно. Каждый вывод каждого датчика должен находиться в отдельном ряду на макетной плате, чтобы его можно было подключать отдельно.
Схема подключения MKR1010 и Uno немного отличается по двум причинам. Во-первых, Arduino и дисплей обмениваются данными по SPI. Разные модели Arduino имеют разные выделенные контакты для определенных линий SPI. Во-вторых, аналоговые входы Uno могут принимать до 5 В, в то время как аналоговые входы MKR1010 могут принимать только до 3,3 В. Рекомендуемое напряжение питания для датчиков на эффекте Холла составляет 5 В. Выходы датчиков подключены к аналоговым входам Arduino, и они могут быть такими же большими, как напряжение питания. Для Uno используйте рекомендованный источник питания 5 В для датчиков. Для MKR1010 используйте 3,3 В, чтобы аналоговый вход Arduino никогда не видел напряжения больше, чем он может выдержать.
Следуйте приведенным ниже схемам и инструкциям для используемой вами Arduino.
Подключение к Arduino Uno
Дисплей имеет 11 контактов. Подключите их к Arduino Uno следующим образом. (NC означает, что не подключен.)
- Вин → 5В
- 3.3 → NC
- Земля → Земля
- SCK → 13
- SO → NC
- СИ → 11
- ТКС → 10
- RST → 9
- D / C → 8
- CCS → NC
- Lite → NC
Подключите Vin датчиков к 5V Arduino. Подключите землю датчика к земле Arduino. Подключите выход датчиков к аналоговым входам A1, A2 и A3 Arduino.
Подключение к Arduino MKR1010
Дисплей имеет 11 контактов. Подключите их к Arduino следующим образом. (NC означает, что не подключен.)
- Вин → 5В
- 3.3 → NC
- Земля → Земля
- SCK → SCK 9
- SO → NC
- SI → MOSI 8
- ТКС → 5
- RST → 4
- D / C → 3
- CCS → NC
- Lite → NC
Подключите Vin датчиков к Vcc на Arduino. На этом выводе 3,3 В, а не 5 В. Подключите землю датчика к земле Arduino. Подключите выход датчиков к аналоговым входам A1, A2 и A3 Arduino.
Шаг 3. Проверьте дисплей
Заставим работать TFT-дисплей. К счастью, у Adafruit есть несколько удобных библиотек и отличный учебник для них. Эти инструкции точно соответствуют руководству
Откройте среду разработки Arduino. Перейдите в Инструменты → Управление библиотеками. Установите библиотеки Adafruit_GFX, Adafruit_ZeroDMA и Adafruit_ST7735. Перезапустите среду разработки Android.
Пример графического теста включен в библиотеки. Открой это. Файл → Примеры → Библиотека Adafruit ST7735 и ST7789 → graphicstest. Чтобы выбрать 1,44-дюймовый дисплей, закомментируйте строку 95 и раскомментируйте строку 98.
Оригинальная версия:
94 // Используйте этот инициализатор при использовании 1,8-дюймового TFT-экрана:
95 tft.initR (INITR_BLACKTAB); // Инициируйте микросхему ST7735S, черная вкладка 96 97 // ИЛИ используйте этот инициализатор (раскомментируйте) при использовании 1,44-дюймового TFT: 98 //tft.initR(INITR_144GREENTAB); // Инициируйте микросхему ST7735R, зеленую вкладку
Правильная версия для дисплея 1,44 дюйма:
94 // Используйте этот инициализатор при использовании 1,8-дюймового TFT-экрана:
95 //tft.initR(INIT_BLACKTAB); // Инициализация микросхемы ST7735S, черная вкладка 96 97 // ИЛИ использовать этот инициализатор (раскомментировать) при использовании 1,44-дюймового TFT: 98 tft.initR (INITR_144GREENTAB); // Инициализировать микросхему SST35R, зеленая вкладка
Дисплей обменивается данными с помощью SPI, а разные модели Arduinos используют разные выделенные контакты для некоторых линий связи. Пример graphicstest настроен для работы с выводами Uno. Если вы используете MKR1010, добавьте следующие строки между строками 80 и 81.
Исправления для MKR1010:
80
#define TFT_CS 5 #define TFT_RST 4 #define TFT_DC 3 #define TFT_MOSI 8 #define TFT_SCLK 9 Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK), TFT_SCLK; 81 поплавок p = 3,1415926;
Сохраните измененный пример графического теста. Подключите Arduino к компьютеру, если вы еще этого не сделали. Перейдите в Инструменты → Плата и инструменты → Порт, чтобы убедиться, что компьютер может найти Arduino. Перейдите в Скетч → Загрузить. Если пример работает, на дисплее будут отображаться линии, прямоугольники, текст и полная демонстрация. В руководстве Adafruit вы найдете более подробную информацию, если необходимо устранение неполадок.
Шаг 4: Код магнитометра
Загрузите прикрепленный код и откройте его в среде разработки Arduino.
Эта программа использует шесть функций:
Setup () инициализирует дисплей
Loop () содержит основной цикл программы. Он затемняет экран, рисует оси, считывает входные данные и рисует стрелку, представляющую вектор магнитного поля. Он имеет частоту обновления в одну секунду, которую можно изменить, изменив строку 127
DrawAxes3d () рисует и маркирует оси x, y и z
DrawArrow3d () принимает значения x, y и z в диапазоне от 0 до 1023. По этим значениям он вычисляет конечные точки стрелки в пространстве. Затем он использует функции isometricxx () и isometricyy () для вычисления конечных точек на экране. Наконец, он рисует стрелку и печатает напряжения в нижней части экрана
Isometricxx () находит координату x изометрической проекции. Он принимает координаты x, y и z точки и возвращает соответствующее положение x пикселя на экране
Isometricyy () находит координату y изометрической проекции. Он принимает координаты x, y и z точки и возвращает соответствующее положение пикселя y на экране
Перед запуском кода нам нужно указать, какие контакты использовать для связи SPI с дисплеем, и нам нужно указать напряжение источника для датчиков. Если вы используете MKR1010, закомментируйте строки 92-96, а также строку 110. Затем раскомментируйте строки 85-89, а также строку 108. Если вы используете Uno, закомментируйте строки 85-89, а также строку 108. Затем раскомментируйте строки 92-96 и 110.
Загрузите код, Скетч → Загрузить.
Вы должны увидеть оси x, y и z красным цветом. Зеленая стрелка с синим кружком на кончике представляет вектор магнитного поля на датчиках. Показания напряжения отображаются в левом нижнем углу. По мере приближения магнита к датчикам показания напряжения должны изменяться, а размер стрелки должен увеличиваться.
Шаг 5: Дальнейшая работа
Следующим шагом будет калибровка устройства. В технических данных датчика содержится информация о том, как преобразовать исходные значения напряжения датчика в напряженность магнитного поля. Калибровку можно проверить путем сравнения с более точным магнитометром.
Постоянные магниты взаимодействуют с токоведущими проводами. Провода рядом с дисплеем и в Arduino создают магнитные поля, которые могут повлиять на показания датчика. Кроме того, если это устройство используется для измерения рядом с сильным постоянным магнитом, магнитное поле тестируемого устройства будет взаимодействовать с ним, вносить шум и, возможно, повредить Arduino и дисплей. Экранирование может сделать этот магнитометр более надежным. Arduino может выдерживать большие магнитные поля, если он экранирован в металлической коробке, и меньше шума будет внесено, если экранированные кабели соединяют датчики вместо оголенных проводов.
Магнитное поле зависит от положения, поэтому оно разное в каждой точке пространства. В этом устройстве используются три датчика: один для измерения компонент x, y и z магнитного поля в точке. Датчики расположены близко друг к другу, но не в одной точке, что ограничивает разрешающую способность магнитометра. Было бы здорово сохранить показания магнитного поля в разных точках, а затем отображать их в виде набора стрелок в соответствующих местах. Однако это проект на другой день.
использованная литература
Информация о графических библиотеках Adafruit Arduino
https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview
Визуализация магнитного поля
https://www.falstad.com/vector3dm/
Информация о датчиках эффекта Холла и Холла
- https://sensing.honeywell.com/index.php?ci_id=47847
- https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx
Информация об изометрической проекции
- https://en.wikipedia.org/wiki/3D_projection
- https://en.wikipedia.org/wiki/Isometric_projection
Рекомендуемые:
Как: установка Raspberry PI 4 Headless (VNC) с Rpi-imager и изображениями: 7 шагов (с изображениями)
Как: установка Raspberry PI 4 Headless (VNC) с Rpi-imager и изображениями: я планирую использовать этот Rapsberry PI в кучу забавных проектов еще в моем блоге. Не стесняйтесь проверить это. Я хотел вернуться к использованию своего Raspberry PI, но у меня не было клавиатуры или мыши в моем новом месте. Прошло много времени с тех пор, как я установил Raspberry
Счетчик шагов - Micro: Bit: 12 шагов (с изображениями)
Счетчик шагов - Микро: Бит: Этот проект будет счетчиком шагов. Мы будем использовать датчик акселерометра, встроенный в Micro: Bit, для измерения наших шагов. Каждый раз, когда Micro: Bit трясется, мы добавляем 2 к счетчику и отображаем его на экране
Портативный магнитометр: 7 шагов (с изображениями)
Портативный магнитометр: магнитометр, иногда также называемый гауссметром, измеряет силу магнитного поля. Это важный инструмент для проверки силы постоянных магнитов и электромагнитов, а также для понимания формы поля нетривиальных конфигураций магнитов
Bolt - Ночные часы с беспроводной зарядкой своими руками (6 шагов): 6 шагов (с изображениями)
Bolt - Ночные часы с беспроводной зарядкой своими руками (6 шагов): Индуктивная зарядка (также известная как беспроводная зарядка или беспроводная зарядка) - это тип беспроводной передачи энергии. Он использует электромагнитную индукцию для обеспечения электропитания портативных устройств. Самым распространенным применением является беспроводная зарядка Qi st
Симулятор игры для смартфона - играйте в игры для Windows, используя IMU для управления жестами, акселерометр, гироскоп, магнитометр: 5 шагов
SmartPhone Game Simulator - играйте в игры для Windows, используя IMU управления жестами, акселерометр, гироскоп, магнитометр: поддержите этот проект: https://www.paypal.me/vslcreations, сделав пожертвование на программы с открытым исходным кодом & поддержка дальнейшего развития