В этом руководстве мы представляем концепцию АЦП (аналого-цифровое преобразование) в ARDUINO UNO. Плата Arduino имеет шесть каналов АЦП, как показано на рисунке ниже. Среди них любой или все они могут использоваться как входы для аналогового напряжения. Arduino Uno АЦП имеет разрешение 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 мкФ, потенциометр 100 кОм, конденсатор 100 нФ.
Программное обеспечение: Arduino IDE (Arduino nightly)
Принципиальная схема и объяснение
В ЖК-дисплее 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.
За работой
Для подключения ЖК-дисплея к 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 будет готов к отображению данных. Здесь нам не нужно писать программный цикл для отправки БАЙТА данных по БАЙТУ.
Использование АЦП Arduino Uno объясняется шаг за шагом в программе на языке C, приведенной ниже.