Измерение напряженности магнитного поля с помощью Arduino


В этом проекте мы будем использовать датчик Холла и плату Arduino Uno для измерения напряженности магнитного поля. Мы будем использовать датчик Холла с наименованием UGN3503U, который измеряет величину напряженности магнитного поля и обеспечивает на своем выходе аналоговое напряжение пропорциональное напряженности магнитного поля, которое мы затем будем переводить с помощью аналогового-цифрового преобразования в Arduino в цифровой вид. Датчик измеряет напряженность магнитного поля (электромагнитную индукцию) в гауссах (GAUSS). Один гаусс равен одной десятитысячной Тесла (Тл).

Измерение напряженности магнитного поля с помощью Arduino: внешний вид конструкции

Величину напряженности магнитного поля, преобразованную в цифровую форму с помощью Arduino, мы затем будем показывать на ЖК дисплее 16х2.

Плата Arduino имеет 6 каналов АЦП (аналогового-цифрового преобразования). Любой из них можно использовать в качестве аналогового входа. АЦП Arduino Uno имеет разрешающую способность 10 бит, что соответствует значениям целых чисел в диапазоне 0-(2^10) 1023. Это означает что входное напряжение в диапазоне от до 5 Вольт преобразуется в целое число от 0 до 1023. То есть одному цифровому значению (шагу) соответствует шаг аналогового напряжения 5/1024= 4.9mV.

В нашем проекте мы будем подключать аналоговый выход датчика Холла к контакту ‘A0’ платы Arduino Uno.

Распиновка датчика Холла

Более подробно о датчике Холла можно прочитать в этой статье: подключение датчика Холла к микроконтроллеру AVR.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Датчик Холла UGn3503U.
  3. ЖК дисплей JHD_162ALCD (16x2) (купить на AliExpress).
  4. Конденсатор 100 мкФ (2 шт.) (купить на AliExpress).
  5. Источник питания с напряжением 5 В.

Работа схемы и программы

Схема устройства представлена на следующем рисунке.

Схема измерителя напряженности магнитного поля на Arduino и датчике ХоллаЖидкокристаллический (ЖК) дисплей 16x2 использует 16 контактов для своей работы в случае если нужен черный цвет. Если черный цвет не нужен, то достаточно 14 контактов. В этом случае контакты черного цвета можно либо запитать, либо оставить их как есть. То есть из 14 контактов ЖК дисплея мы имеем 8 контактов для данных (7-14 или D0-D7), 2 контакта для подачи питания (1&2 или VSS&VDD или GND&+5v), 3-й контакт для управления контрастностью (VEE) – определяет насколько "толстыми" будут выглядеть символы на экране, и 3 управляющих контакта (RS&RW&E).

На представленной схеме мы использовали только 2 управляющих контактах ЖК дисплея – это позволяет лучше понять логику работы схемы начинающим. Контакт для управления контрастностью и READ/WRITE сравнительно редко используются и в нашем случае их можно замкнуть на землю. Это переводит ЖК дисплей в режим чтения и обеспечивает ему максимальную контрастность. Поэтому нам нужно только управлять состоянием контактов ENABLE и RS чтобы передавать символы и данные на ЖК дисплей.

В схеме необходимо сделать следующие соединения с ЖК дисплеем:
PIN1 или VSS – на землю
PIN2 или VDD или VCC – к источнику питания +5 В
PIN3 или VEE – на землю (обеспечивает наилучшую контрастность – лучше для начинающих)
PIN4 или RS (выбор регистра) – к контакту PIN8 ARDUINO UNO
PIN5 или RW (Read/Write) – на землю (переводит ЖК дисплей в режим чтения, что упрощает взаимодействие с ним для начинающих)
PIN6 или E (Enable - доступность) к контакту PIN9 ARDUINO UNO
PIN11 или D4 – к контакту PIN10 ARDUINO UNO
PIN12 или D5 – к контакту PIN11 ARDUINO UNO
PIN13 или D6 – к контакту PIN12 ARDUINO UNO
PIN14 или D7 – к контакту PIN13 ARDUINO UNO

ARDUINO IDE позволяет пользователю использовать ЖК дисплей в 4 битном режиме. Этот режим позволяет уменьшить число используемых контактов ARDUINO. 4-битный режим взаимодействия с ЖК дисплеем предусмотрен для ARDUINO по умолчанию, поэтому нет необходимости предпринимать какие либо действия чтобы его включить. В представленной схеме можно увидеть, что мы использовали 4-битный режим (D4-D7). То есть у нас с ARDUINO соединено 6 контактов ЖК дисплея: 4 контакта для передачи данных и 2 контакта для управления.

Чтобы задействовать АЦП в Arduino Uno необходимо сделать следующие вещи:

1. analogRead(pin);
2. analogReference();
3. analogReadResolution(bits);

Плата Arduino Uno по умолчанию имеет опорное напряжение АЦП равное 5 В. То есть максимальное входное напряжение для АЦП будет равно 5 В. Но поскольку некоторые датчики обеспечивают на своем выходе напряжение в диапазоне 0-2.5 В, то в этом случае если мы будем использовать опорное напряжение АЦП 5 В, то мы потеряем в точности преобразования. Поэтому в Arduino предусмотрена специальная команда для изменения опорного напряжения АЦП (“analogReference();”.

Максимальная разрешающая способность (разрешение) АЦП платы Arduino составляет 10 бит, изменить его можно с помощью команды “analogReadResolution(bits);”. Эта функция может быть полезна в некоторых случаях, например, когда нужно увеличить скорость аналого-цифрового преобразования.

Теперь, если все установки работы с АЦП выполнены, мы можем непосредственно считать значение с выхода АЦП с помощью функции “analogRead(pin);”, где “pin” обозначает номер контакта, с которого мы будем считывать аналоговый сигнал. В нашем случае это будет контакт “A0”. Значение с выхода АЦП можно сразу присвоить переменной целого типа (integer) с помощью команды “int ADCVALUE = analogRead(A0);”.

Для взаимодействия с ЖК дисплеем прежде всего необходимо подключить библиотеку для работы с ним с помощью инструкции ‘#include <LiquidCrystal.h>’. Эта библиотека сразу по умолчанию включает 4-битный режим взаимодействия с ЖК дисплеем.

После этого необходимо сообщить Arduino тип подключаемого ЖК дисплея. ЖК дисплеи бывают различных типов, например 20x4, 16x2, 16x1 и т.д. В нашем случае мы будем подключать к Arduino ЖК дисплей 16x2, поэтому нам необходимо использовать инструкцию ‘lcd.begin(16, 2);’.

Далее плате Arduino необходимо сообщить, к каким ее контактам мы подключили ЖК дисплей. В соответствии с представленной схемой нам необходимо использовать команду LiquidCrystal lcd(8, 9, 10, 11, 12, 13), которая сообщит Arduino что ЖК дисплей подключен к ее контактам 8, 9, 10, 11, 12 и 13.

После выполнения всех этих действий можно приступать к передаче данных на ЖК дисплей.

Исходный код программы

Представленная программа должна делать следующие действия: как только вблизи датчика Холла появляется какой-нибудь магнит (магнитное поле) напряжение на его выходе изменяется, значение этого напряжения подается на АЦП платы Arduino, которая переводит его в цифровую форму (число от 0 до 1023). После этого значение напряженности магнитного поля высвечивается на ЖК дисплее.

Видео, демонстрирующее работу схемы

(1 голосов, оценка: 5,00 из 5)
Загрузка...
4 307 просмотров

Комментарии

Измерение напряженности магнитного поля с помощью Arduino — 5 комментариев

  1. С обратной стороны есть подстроечный резистор. Попробуйте нулевой плоской отверткой повращать его в обе стороны. Сначала появятся прямоугольники, потом данные от ардуино.

    Если он не светится, то используйте другой код.

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

    Так же у вас может быть не подходящая библиотека.

    Или вы написали 1602 вместо 2004 или наоборот.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *