Опубликовано

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

Потенциометром называется регулируемый делитель напряжения, который — в отличие от реостата — служит для регулировки напряжения при почти неизменном токе. Снимаемое с подвижного отводного контакта потенциометра напряжение (рис. S9.1) в зависимости от текущего положения подвижного контакта может изменяться от нуля до максимального значения, равного приложенному к потенциометру напряжению.

Внешний вид, назначение контактов

2-09-1-потенциометр

Рис. S9.1. Напряжение на потенциометре

Изучаем Arduino: инструменты и методы технического волшебства. 2-е изд. Подробную информацию о чтении данных с потенциометра можно найти в прилагаемой к набору книге Дж. Блума «Изучаем Arduino: инструменты и методы технического волшебства» (см. п. 3.5 «Считывание выходного сигнала потенциометра»)
https://bhv.ru/product/izuchaem-arduino-instrumenty-i-metody-tehnicheskogo-volshebstva-2-e-izd-per-s-angl/
стр.88

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

Проще всего считывать аналоговый сигнал, выдаваемый простым потенциометром. Скорей всего, вы даже не подозреваете, что буквально окружены потенциометрами, поскольку эти устройства имеются в стереосистемах, радиоприемниках, термостатах, автомобилях и во многих других бытовых устройствах. С электрической точки зрения потенциометр представляет собой делитель напряжения (которые рассматриваются далее в этой главе), а физически они обычно выглядят наподобие небольшого цилиндра с ручкой посредине. Но это относится только к традиционным потенциометрам, поскольку в целом они могут быть любого размера и любой формы. Но все потенциометры имеют три вывода. Один из крайних выводов подключается на землю, а другой на контакт положительного питания 5 В платы Arduino. Потенциометры симметричны, поэтому не имеет значения, какой из его крайних выводов подключать к земле, а какой к питанию 5 В. Средний вывод потенциометра подключается к контакту А0 разъема аналоговых входов платы Arduino. Это иллюстрируется монтажной схемой на рис. 3.3.

C:\Users\acer\Documents\#Electronics\Магазин электроники\фрагменты из книг\Anansi\AppData\Local\Temp\FineReader10\media\image4.jpeg

Рис. 3.3. Монтажная схема подключения потенциометра к плате Arduino (Рисунок создан в программе Fritzing)

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

C:\Users\acer\Documents\#Electronics\Магазин электроники\фрагменты из книг\Anansi\AppData\Local\Temp\FineReader10\media\image5.jpeg

Рис. 3.4. Измерение варьирующегося напряжения на потенциометре

Прежде чем использовать выходной сигнал потенциометра для управления каким-либо другим устройством, мы реализуем более простой проект — передачу цифровых данных для текущих аналоговых значений выходного напряжения потенциометра на компьютер и вывод их на экран. Для этого нам потребуется средство последовательной связи платы Arduino. Соответствующая программа приведена в листинге 3.1. Откройте в среде IDE Arduino файл программы и загрузите его в Arduino. Функция analogRead() считывает входной сигнал, подаваемый с потенциометра на контакт Arduino, а функция Serial.println() выводит соответствующие цифровые значения в окно монитора порта среды IDE Arduino.

Листинг 3.1. Программа pot.ino для считывания выходного аналогового сигнала потенциометра

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Программа для считывания выходного аналогового сигнала
 
// потенциометра
 
const int POT=0; // Сигнал с потенциометра подается на аналоговый
 
// контакт 0
 
int val = 0; // Переменная для хранения аналогового значения,
 
// полученного с контакта POT
 
void setup()
 
{
 
Serial.begin(9600);
 
}
 
void loop()
 
{
 
val = analogRead(POT);
 
Serial.println(val);
 
delay(500);
 
}

Мы исследуем функциональность последовательного интерфейса более подробно в последующих главах. На данном же этапе нам нужно знать только то, что последовательный интерфейс с компьютером необходимо запустить в функции setup(). Функция запуска Serial.begin() принимает один аргумент, значение которого указывает скорость передачи данных в бодах, или в битах в секунду. Более высокая скорость передачи данных позволяет передавать больший объем данных за меньший период времени, но в некоторых системах может также вызывать искажения передаваемых данных Обычно применяют скорость 9600 бод, которую мы и будем назначать для большинства проектов в этой книге.

При каждой итерации цикла loop() переменной val присваивается текущее цифровое значение, выдаваемое АЦП в ответ на амплитуду аналогового сигнала на контакте А0. Команде analogRead() необходимо передавать номер контакта АЦП. В данном случае это контакт А0, так как именно к нему мы подключили вывод потенциометра. Вообще то, если действовать строго по правилам, то следовало бы указать аргумент A0, обозначив тем самым аналоговый контакт, но поскольку функция analogRead() может работать только с аналоговыми контактами, то она “знает”, что 0 обозначает A0. После получения цифрового значения уровня входного сигнала (числа в диапазоне от 0 до 1023) функция Serial.println() передает это значение в программу монитора порта среды Arduino IDE, которая отображает его в своем окне, с последующим выводом символа новой строки для перевода курсора на следующую строку. Затем исполнение кода в цикле приостанавливается на 500 мс (чтобы предотвратить слишком быструю прокрутку чисел в окне монитора порта), после чего процесс повторяется.

Вы можете обратить внимание, что при исполнении этой программы светодиод платы Arduino мигает каждые 500 мс (по крайней мере, он должен так мигать). Такое мигание этого светодиода означает, что плата Arduino передает через USB-интерфейс данные программе последовательного терминала на компьютере. Для приема передаваемых платой Arduino данных можно использовать одну из множества программ последовательного терминала, но проще всего работать с программой монитора порта среды Arduino IDE. Запустите эту программу, щелкнув по значку увеличительного стекла справа на панели инструментов редактора скетчей (рис. 3.5).

C:\Users\acer\Documents\#Electronics\Магазин электроники\фрагменты из книг\Anansi\AppData\Local\Temp\FineReader10\media\image6.jpeg

Рис. 3.5. Кнопка запуска монитора порта (выделена кружком)

В открывшемся окне монитора порта должны отображаться числа, посылаемые ему платой Arduino. Поверните ручку потенциометра в ту или иную сторону. Отображаемые числа должны уменьшаться или увеличиваться, в зависимости от направления поворота. Если повернуть ручку до предела в одном направлении, то в окне монитора порта будет выводиться значение 0, а если в другом направлении — число 1023 (или наоборот). На рис. 3.6 показан пример окна монитора порта с отображаемыми в нем значениями.


Примечание

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


C:\Users\acer\Documents\#Electronics\Магазин электроники\фрагменты из книг\Anansi\AppData\Local\Temp\FineReader10\media\image7.jpeg

Рис. 3.6. Окно монитора порта с отображаемыми в нем входными данными

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