Содержание статьи
Содержание

Главная / Arduino для начинающих / Потенциометр (переменный резистор) и Arduino

Потенциометр (переменный резистор) и Arduino

В этом примере показано как подключать потенциометр к плате Arduino, как можно считывать аналоговые значения с пина 0, преобразовывать данные из analogRead() в вольты и отображать их в серийном мониторе.

Что вам понадобится

Схема подключения потенциометра к Arduino

Подключение потенциометра к Ардуино

Подключите три коннектора от потенциометра к плате Arduino. Черный - к земле. Второй - красный - от потенциометра к 5 вольтам на плате. Третий - средний - идет от аналогового входа 2 к центральному коннектору потенциометра

Поворачивая вал потенциометра, вы меняете значение сопротивления на центральном коннекторе потенциометра, что в свою очередь меняет напряжение на 0 пине платы. Когда сопротивление между центральным и боковым коннектором, который подключен к 5 вольтам, близится к 0 (а сопротивление на втором конце близится к 10 килоомам), напряжение на центральном пине близко к 5 вольтам. В противоположном случае, при повороте в другую сторону, напряжение на центральном пине приближается к 0 или земле. Это напряжение и есть аналоговым, которые вы считываете на пине платы.

На плате Arduino есть встроенный аналогово-цифровой конвертер, который считывает напряжение и преобразовывает его в числовые значения от 0 до 1023. При полном повороте вала в одну сторону на пин подается 0 вольт и числовое значение, которое генерируется равно 0. Когда вал повернут в противоположном направлении, на пин подается 5 вольт, что соответствует значению 1023. Между этими граничными значениями, analogRead() возвращает числовое значение в диапазоне от 0 до 1023, которое будет пропорциональным напряжению, подаваемому на пин.

Электросхема подключенного к Arduino потенциометра

Arduino_Potrntiometer_scheme

Вариант шилда с потенциометром для Arduino

Arduino_Potrntiometer_schield

Описание программы для Arduino

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

Serial.begin(9600);

В цикле main вам необходимо инициализировать переменную для передачи данных с резистора (которые будут генерироваться в диапазоне от 0 до 1023)

int sensorValue = analogRead(A0);

Для изменения значений 0-1023 на те, что будут соответствовать напряжению на пине, вам необходимо создать другую переменную типа float и совершить математическую операцию. Для масштабирования значений, разделите 5 на 1023 и умножьте результат на значение переменной sensorValue:

float voltage= sensorValue * (5.0 / 1023.0);

В конце, для отображения информации на мониторе компьютера, используйте команду Serial.println():

Serial.println(voltage)

Теперь, после запуска серийного монитора в оболочке Arduino IDE, вы увидите поток значений в диапазоне от 0.0 до 5.0. При повороте потенциометра значения будут меняться в соответствии с напряжением на пине А0

/*

ReadAnalogVoltage

Считывает аналоговое напряжение на пине 0, преобразует его в напряжение и отображает результат в серийном мониторе.

Подключите центральный коннектор потенциометра к пину А0, два по краям - к земле и питанию 5 вольт.

*/

// функция setup отрабатывает один раз после перезагрузки платы:

void setup() {

// инициализация серийного обмена данными на скорости 9600 бит в секунду:

Serial.begin(9600);

}

// цикл loop повторяется бесконечно:

void loop() {

// считывает значение на аналоговом пине 0:

int sensorValue = analogRead(A0);

// конвертирует аналоговое считывание (которое идет от 0-1023) в напряжение (0-5 вольт):

float voltage = sensorValue * (5.0 / 1023.0);

// отображает в серийном мониторе считанное значение:

Serial.println(voltage);

}

Считывание аналоговых значений с использованием потенциометра

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

Когда вы крутите вал потенциометра, меняется сопротивление на краях проводника, который подключен к центральному коннектору. Когда сопротивление между центральным коннектором и боковым, который подключен к 5 вольтам близок к 0 (а сопротивление на другом конце близко к 10 кОм), напряжение на центральном пине близится к 5 вольтам. Когда сопротивление меняется, напряжение на центральном пине стремится к земле, то есть к 0 вольт. Это напряжение является аналоговым, которое и считывается в качестве входного сигнала.

На платах Arduino есть встроенный аналогово-цифровой преобразователь, который считывает меняющееся напряжение и преобразует его в числовое значение в диапазоне от 0 до 1023. В момент, когда вал повернут до упора в одном из направлений, на пине будет 0 вольт, значение, которое сгенерируется будет равно 0. Когда вал повернут до упора в другом направлении, на пин подается 5 вольт и числовое значение будет равно 1023. В положениях между крайними, функция analogRead() возвращает цифровое значение в диапазоне между 0 и 1023, которое будет пропорционально напряжению на пине.

Скетч с пояснениями

В приведенной ниже программе, единственное, что вам необходимо объявить в теле функции setup - это обмен данными по серийному протоколу, со скоростью 9600 бит в секунду с помощью строки

Serial.begin(9600);

В цикле main loop, необходимо объявить переменную для хранения значений сопротивления (которое будет находиться в диапазоне от 0 до 1023, то есть, рациональным будет использование типа данных int при объявлении), которые поступают от потенциометр:

int sensorValue = analogRead(A0);

В конце, вы выведете полученные данные (DEC) в окне серийного монитора в виде целого числа. В этом вам поможет команда Serial.println():

Serial.println(sensorValue, DEC)

Теперь, когда вы откроете ваш серийный монитор в среде Arduino IDE (нажав кнопку справа от "Upload" в главном меню), вы сможете отследить поток числовых значений в диапазоне 0-1023, характеризующие положение вала потенциометра. При повороте ручки потенциометра, данные будут изменяться.

/*

AnalogReadSerial

Считывает аналоговый сигнал на пине 0 и отображает результат на серийном мониторе.

Подключите центральный пин потенциометра к пин А0 на плате, боковые - к +5 вольтам и к земле (-).

*/

// цикл setup отрабатывает один раз после перезагрузки платы Arduino

void setup() {

// инициализация обмена данными по серийному протоколу со скоростью 9600 бит в секунду:

Serial.begin(9600);

}

// цикл loop повторяется бесконечно:

void loop() {

// считывает значение с аналогового пина 0:

int sensorValue = analogRead(A0);

// отображает считанное значение:

Serial.println(sensorValue);

delay(1); // задержка между считываниями для стабильности работы

}