В этом проекте мы используем концепцию АЦП (аналого-цифровое преобразование) в ARDUINO UNO. Мы собираемся использовать датчик Холла и Arduino uno для измерения напряженности поля магнита. Здесь мы использовали датчик UGN3503U. Это датчик Холла, который определяет силу магнитного поля и выдает изменяющееся выходное напряжение, пропорциональное напряженности поля. Этот датчик измеряет напряженность поля в единицах « GAUSS ».
Таким образом, с этим датчиком у нас будет напряженность поля как переменное напряжение. Используя функцию АЦП, мы преобразуем это напряжение в число. Это число представляет собой напряженность поля и отображается на ЖК-дисплее.
Arduino имеет шесть каналов АЦП. В них любой из них или все они могут использоваться как входы для аналогового напряжения. UNO ADC имеет разрешение 10 бит (поэтому целые числа от (0- (2 ^ 10) 1023)). Это означает, что он будет отображать входные напряжения от 0 до 5 вольт в целочисленные значения от 0 до 1023. Таким образом, для каждого (5/1024 = 4,9 мВ) на единицу.
Во всем этом мы собираемся подключить потенциометр или потенциометр к каналу A0, и мы собираемся показать результат АЦП на простом дисплее. Простые дисплеи имеют размеры 16x1 и 16x2. Дисплей 16x1 будет содержать 16 символов в одну строку. Формат 16x2 будет содержать 32 символа, всего 16 в 1- й строке и еще 16 во 2- й строке. Здесь нужно понимать, что в каждом символе 5x10 = 50 пикселей, поэтому для отображения одного символа все 50 пикселей должны работать вместе, но нам не нужно беспокоиться об этом, потому что в блоке отображения есть другой контроллер (HD44780), который выполняет работа по управлению пикселями (это видно на ЖК-дисплее, это черный глаз сзади).
Необходимые компоненты
Оборудование: ARDUINO UNO, блок питания (5 В), JHD_162ALCD (16x2LCD), конденсатор 100 мкФ (2 штуки), UGn3503U.
Программное обеспечение: Arduino IDE (Arduino nightly)
Принципиальная схема и объяснение
На приведенном выше рисунке показана принципиальная схема для измерения магнитного поля с помощью arduino uno.
В ЖК-дисплее 16x2 всего 16 контактов, если есть подсветка, если нет подсветки, будет 14 контактов. Можно включить или оставить контакты подсветки. Теперь на 14 контактах 8 контактов данных (7-14 или D0-D7), 2 контакта источника питания (1 и 2 или VSS и VDD или GND и + 5 В), 3- й контакт для контроля контрастности (VEE-контролирует толщину символов. показаны) и 3 контрольных штифта (RS, RW и E).
В приведенной выше схеме вы можете заметить, что я взял только два управляющих контакта, бит контрастности и READ / WRITE не часто используются, поэтому их можно замкнуть на землю. Это переводит ЖК-дисплей в режим максимальной контрастности и чтения. Нам просто нужно управлять контактами ENABLE и RS, чтобы отправлять символы и данные соответственно.
Подключения, которые выполняются для ЖК-дисплея, приведены ниже:
PIN1 или VSS на землю
PIN2 или VDD или VCC на питание +5 В
PIN3 или VEE на землю (дает максимальный контраст для новичков)
PIN4 или RS (выбор регистра) на PIN8 ARDUINO UNO
PIN5 или RW (чтение / запись) на землю (перевод ЖК-дисплея в режим чтения упрощает взаимодействие для пользователя)
PIN6 или E (включить) на 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, в отличие от других, ARDUINO не нужно программировать отдельно для его использования в 4-битном режиме, потому что по умолчанию ARDUINO настроен для связи в 4-битном режиме. В схеме вы можете видеть, что мы использовали 4-битную связь (D4-D7). Таким образом, исходя из простого наблюдения из приведенной выше таблицы, мы подключаем 6 контактов ЖК-дисплея к контроллеру, в котором 4 контакта являются контактами данных и 2 контакта для управления.
За работой
Для подключения ЖК-дисплея к ARDUINO UNO нам нужно знать несколько вещей.
|
В первую очередь каналы UNO АЦП имеет опорное значение по умолчанию 5V. Это означает, что мы можем дать максимальное входное напряжение 5 В для преобразования АЦП на любом входном канале. Поскольку некоторые датчики обеспечивают напряжение от 0-2.5V, со ссылкой 5V мы получаем меньшую точность, поэтому у нас есть инструкция, которая позволяет нам изменить это значение ссылки. Итак, для изменения ссылочного значения у нас есть («analogReference ();»)
По умолчанию мы получаем максимальное разрешение АЦП платы, равное 10 битам, это разрешение можно изменить с помощью инструкции («analogReadResolution (бит);»). В некоторых случаях это изменение разрешения может пригодиться.
Теперь, если вышеуказанные условия установлены по умолчанию, мы можем считывать значение с АЦП канала «0», напрямую вызывая функцию «analogRead (pin);», здесь «pin» представляет контакт, к которому мы подключили аналоговый сигнал, в этом случае это будет быть «A0». Значение от ADC можно принять в виде целого числа как «int ADCVALUE = analogRead (A0); », По этой инструкции значение после АЦП сохраняется в виде целого числа« ADCVALUE ».
СЕЙЧАС поговорим немного о ЖК-дисплее 16x2. Сначала нам нужно включить файл заголовка ('#include
Во-вторых, нам нужно сообщить плате, какой тип ЖК-дисплея мы здесь используем. Поскольку у нас очень много разных типов ЖК-дисплеев (например, 20x4, 16x2, 16x1 и т. Д.). Здесь мы собираемся подключить ЖК-дисплей 16x2 к UNO, чтобы получить lcd.begin (16, 2);. Для 16x1 мы получаем 'lcd.begin (16, 1);'.
В этой инструкции мы собираемся сообщить плате, куда мы подключили контакты. Подключенные контакты должны быть представлены в порядке «RS, En, D4, D5, D6, D7». Эти булавки должны быть представлены правильно. Поскольку мы подключили RS к PIN0 и так далее, как показано на принципиальной схеме, мы представляем номер контакта на плате как «LiquidCrystal lcd (0, 1, 8, 9, 10, 11);».
После этого все, что осталось, это отправить данные, данные, которые необходимо отобразить на ЖК-дисплее, должны быть записаны как «cd.print (" hello, world! ");». С помощью этой команды на ЖК-дисплее отображается «привет, мир!». Как видите, нам не нужно беспокоиться ни о чем другом, нам просто нужно инициализировать, и UNO будет готов к отображению данных. Здесь нам не нужно писать программный цикл для отправки БАЙТА данных по БАЙТУ.
Как только магнит приближается к датчику, датчик представляет выходное напряжение, пропорциональное полю, это значение принимает Uno и отображается на ЖК-дисплее. Работа над этим проектом по измерению магнитного поля дополнительно объясняется с помощью приведенного ниже кода C.