Arduino резистор переменный – Подключение потенциометра Ардуино на конкретных примерах

Arduino. Работа с АЦП. Подключение переменного резистора

Очень полезный модуль в составе микроконтроллера — аналого-цифровой преобразователь. Он позволяет микроконтроллеру измерять произвольное напряжение.
В прошлой статье мы описывали, как можно считать логическое состояние входа, то есть «0» или «1». Аналого-цифровой преобразователь считывает величину напряжения на выводах A0-A5. Это дает возможность считать данные с датчика освещенности, измерить напряжение питания и т.д.

Подготовка к работе

На нашем TutorShield для освоения работы с АЦП есть три переменных резистора. Для их подключения к выводам A0-A2 установите перемычке так, как показано на рисунке:

Подключение переменных резисторов

К выводу A0 подключен подстроечный резистор, расположенный в левом верхнем углу платы и у него есть удобная ручка. Два других меньше и подключены к выводам A1, A2.

Первый пример

Для начала попробуем просто считать напряжение на выводе микроконтроллера A0 и отправить его в COM-порт.
Делается это при помощи функции analogRead(). Этой функции нужно передать номер вывода, напряжение на котором должно быть измерено и она вернет текущее значение.
Загрузите на плату следующий пример:


int val;

void setup() {
    Serial.begin(9600);
}

void loop() {
    val = analogRead(A0);
    Serial.println(val);
    delay(1000);
}

В микроконтроллере Atmega8A, который используется на нашей плате EduBoard, есть модуль АЦП с разрешением 10 бит и возможностью мультиплексирования шести входов. Эти входы пронумерованы A0-A6 (или 14-19).
Измерение производится относительно напряжения питания. Ни в коем случае нельзя подавать на вход отрицательное напряжение или напряжение, превышающее питание! Мы подключили ко входу переменный резистор и наше входное напряжение точно не выйдет за рамки питания.
Теперь разберемся с тем, что нам будет присылать плата. Раз разрешение 10 бит — в десятичном виде значение будет меняться от 0 до 1023. Измерение производится относительно 5-ти вольт, поэтому изменение показаний на 1 соответствует фактическому напряжению 5/1023=4.9мВ. То есть средствами встроенного АЦП микроконтроллера можно измерить напряжение с точностью до 4.9мВ.
Вернемся к скетчу. В результате выполнения строчки …


val = analogRead(A0);

… в переменную val будет записано оцифрованное напряжение, считанное на выводе A0. Откройте монитор порта (Ctrl+Shift+M) и посмотрите, как меняются показания АЦП при вращении вала переменного резистора. Обратите внимание, что нет нужды настраивать вывод при этом на вход.
Теперь пора немного улучшить работу с модулем аналого-цифрового преобразователя. На практике младшие разряды АЦП могут сильно флуктуировать из-за шумов и их обычно отбрасывают, причем сразу два разряда. При этом остается 8ми-битное число с которым гораздо удобнее работать. Точность при этом получается 5/255=19.6мВ, чего вполне достаточно для большинства ситуаций.
Измените код так, чтобы он присылал 8ми-битное значение. Замените строку с чтением состояния АЦП на это:


val = analogRead(A0)>>2;

Теперь переменной val мы присваиваем значение считанное из АЦП сдвинутое на два бита вправо. Остальные биты просто отбрасываются.

Второй пример

Теперь мы можем плавно изменять яркость светодиода при помощи ШИМ-модуляции, задавая ее переменным резистором. Установите перемычку «color» так, как описано в этой статье. Этим самым вы подключены к 9му, 10му и 11му выводу сегменты трехцветного светодиода.
Для начала попробуем изменять яркость только одного светодиода:


#define BLUE 9

int val;

void setup() {
    pinMode(BLUE, OUTPUT);
}

void loop() {
    analogWrite(BLUE, (analogRead(A0)>>2));
}

Довольно простой код, если вы помните, как работает функция analogWrite(). При вращении вала переменного резистора светодиод будет менять свою яркость от минимума до максимума.
Кстати, если вы уберете сдвиг на два бита, при выполнении функции analogWrite() будет наступать переполнение, так как она может принимать только значения от 0 до 255. Попробуйте убрать этот сдвиг и посмотрите, что получится.
И в заключении добавим управление всеми тремя светодиодами. Остается только найти отвертку, чтобы покрутить двумя остальными подстроечными резисторами.


#define BLUE 9
#define ORANGE 10
#define GREEN 11

int val;

void setup() {
    pinMode(BLUE, OUTPUT);
    pinMode(ORANGE, OUTPUT);
    pinMode(GREEN, OUTPUT);
}

void loop() {
    analogWrite(BLUE, (analogRead(A0)>>2));
    analogWrite(ORANGE, (analogRead(A1)>>2));
    analogWrite(GREEN, (analogRead(A2)>>2));
}

Индивидуальные задания

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

Остальные статьи цикла можно найти здесь.

Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.

www.customelectronics.ru

УРОК 2. ARDUINO И ПОТЕНЦИОМЕТР

 

Урок 2. Arduino и Потенциометр. Принципиальная схема

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

 

Набор для экспериментов ArduinoKit
Код программы для опыта №2: sketch 02

 

Собранный проект на макетная плата. Урок 2. Arduino и Потенциометр

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

Потенциометр
Подключите среднюю ножку на аналоговый порт 0 на плате Arduino. Подключите одну из внешних ножек к +5В. Подключите другую внешнюю ножку к земле.

Светодиод
У большинства Arduino есть встроенный в плату светодиод и резистор, подключенные к порту 13, так что в принципе наш светодиод — дубль имеющегося. Но если вы хотите подключить свой светодиод к контакту 13, или использовать другой контакт, выполните следующие действия: Подключите положительную ножку светодиода (длинная нога) к Arduino цифровой вывод 13 (или любой другой цифровой вывод, но не забудьте внести изменения в код программы). Подключите минусовую ножку светодиода (короткая нога), к резистору 330 Ом (оранжевый-оранжевый-коричневый). Подключите другую ножку резистора на землю.
В зависимости от считанного значения с сенсора, в данном случае сенсором является потенциометр, подключенный к аналоговому входу А0. Программа включает и выключает светодиод, подключенный к цифровому выводу Arduino — Pin13. Время пребывания светодиода во включенном или выключенном состоянии зависит от значения, полученного при считывании с analogRead(), движка потенциометра.

 

Схема соединений. Урок 2. Arduino и Потенциометр

Скачать код программы ко второму уроку Arduino и потенциометр в статье чуть выше.

arduinokit.ru

Программирование Arduino урок 17 — закон Ома

Всем привет. Если, мы оглянемся назад и подытожим проделанную нами работу, то можем с уверенностью сказать следующее: проработан значительный объём теоретической информации, который подкрепляется выполнением практических (пускай и учебных) задач.

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

Сегодняшняя статья будет посвящена закону Ома, который имеет следующий вид:

напряжение (В) = ток (А) * сопротивление (Ом).

Обратим наше внимание на первую схему:

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

Схема состоит из источника питания и резистора. Напряжение источника – 5В, величина сопротивления резистора 220 Ом. На основании имеющихся данных, мы может рассчитать ток, который течёт в цепи.

  • напряжение (В) = ток (А) * сопротивление (Ом).
  • 5 (В) = Х (А) * 220 (Ом).
  • Х (А) = 5 (В) / 220 (Ом)
  • Х (А) = 0,0227 А = 22,7 мА

Переходим к немного более сложной схеме, которую мы уже использовали в одном из предыдущих уроков, а именно схема со светодиодом.

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

Суммарное падение напряжения = напряжение питания.

Особенность диодов кроется в том, что они находятся «как бы в выключенном состоянии», пока напряжение приложенное к выводам меньше определенной величины. Поэтому величина падения напряжения на диоде относительно постоянная.

У красных светодиодов падение напряжение составляет около 2,2В.

  • Напряжение питание = Падение напряжение на резисторе + падение напряжение на светодиоде
  • 5В = Падение напряжение на резисторе + 2,2 В
  • Падение напряжение на резисторе = 2,8 В.

Теперь рассчитываем ток:

  • 2,8 = I * R
  • I = 2,8 / R => 2,8 / 220 = 0.012 A

Такое значение тока безопасно для светодиода. Как по мне, лучше не доводить значение тока до предельной величины, а оставлять небольшой запас.

Видоизменим схему, заменив пару «резистор-светодиод» на два резистора с номиналами сопротивлений 1к и 9к Ом.

Рассмотрим альтернативную схему, в которой установлен 10к резистор.

Величина тока: 5В/10к = 0,0005 А = 0,5 мА

Такой же ток будет протекать и в схеме с 2 резисторами, суммарное сопротивление которых равно 10к. Для расчёта падения напряжения на резисторах воспользуемся законом Ома:

  • для 1к: напряжение = 0,0005А * 1000 Ом = 0,5 В;
  • для 9к: напряжение = 0,0005А * 9000 Ом = 4,5В

Рассмотрим ещё один пример схемы с двумя резисторами по 5к каждый. Падение напряжение в данном случае будет составлять 2,5В на каждом резисторе.

Как вы помните, падение напряжения на резисторе с номиналом сопротивления 9к составило 4,5В, а на резисторе 1к = 0,5В…

Такие пары резисторов называются делителями напряжения. Но из-за постоянной величины сопротивления такие делители не универсальны. Более продвинутый вариант – потенциометры, вращая ручки которых пользователь изменяем баланс сопротивлений.

Потенциометр имеет три вывода. Сопротивление между крайними вывода – постоянная величина. Сопротивление же между крайним и центральным выводом задаётся вращением регулятора.

Например: сопротивления потенциометра 10к. Вывернув регулятор в крайнее положение, мы получим сопротивление равное 10к (между центральный и крайним выводом). Повернув регулятор на половину, получим сопротивление в 5к.

Сопротивление общее = сопротивление первого плеча + сопротивление второго плеча.

Что же касается формулы расчета падения напряжения, то она имеет следующий вид:

В_вых = (Ом_2/Ом_1) * В_вх,
где, Ом_2 = сопротивление второго плеча; Ом_1 = сопротивление первого плеча.

Вращая регулятор, мы изменяем величину выходного напряжения.

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

На этом всё, продолжение следует…

ПОДЕЛИТЕСЬ С ДРУЗЬЯМИ!


About alexlevchenko

Ценю в людях честность и открытость. Люблю мастерить разные самоделки. Нравится переводить статьи, ведь кроме того, что узнаешь что-то новое — ещё и даришь другим возможность окунуться в мир самоделок.

mozgochiny.ru

Эксперимент 3. Светильник с управляемой яркостью [Амперка / Вики]

Прочтите перед выполнением

Список деталей для эксперимента

Для дополнительного задания

Принципиальная схема

Схема на макетке

Обратите внимание

  • Мы подключили «землю» светодиода и переменного резистора (потенциометра) к длинной рельсе «-» макетной платы, и уже ее соединили с входом GND микроконтроллера. Таким образом мы использовали меньше входов и от макетки к контроллеру тянется меньше проводов.

  • Подписи «+» и «-» на макетке не обязывают вас использовать их строго для питания, просто чаще всего они используются именно так и маркировка нам помогает

  • Не важно, какая из крайних ножек потенциометра будет подключена к 5 В, а какая к GND, поменяется только направление, в котором нужно крутить ручку для увеличения напряжения. Запомните, что сигнал мы считываем со средней ножки

  • Для считывания аналогового сигнала, принимающего широкий спектр значений, а не просто 0 или 1, как цифровой, подходят только порты, помеченные на плате как «ANALOG IN» и пронумерованные с префиксом A. Для Arduino Uno — это A0-A5.

Скетч

p030_pot_light.ino
// даём разумные имена для пинов со светодиодом
// и потенциометром (англ potentiometer или просто «pot»)
#define LED_PIN     9
#define POT_PIN     A0
 
void setup()
{
  // пин со светодиодом — выход, как и раньше...
  pinMode(LED_PIN, OUTPUT);
 
  // ...а вот пин с потенциометром должен быть входом
  // (англ. «input»): мы хотим считывать напряжение,
  // выдаваемое им
  pinMode(POT_PIN, INPUT);
}
 
void loop()
{
  // заявляем, что далее мы будем использовать 2 переменные с
  // именами rotation и brightness, и что хранить в них будем
  // целые числа (англ. «integer», сокращённо просто «int»)
  int rotation, brightness;  
 
  // считываем в rotation напряжение с потенциометра:
  // микроконтроллер выдаст число от 0 до 1023
  // пропорциональное углу поворота ручки
  rotation = analogRead(POT_PIN);
 
  // в brightness записываем полученное ранее значение rotation
  // делённое на 4. Поскольку в переменных мы пожелали хранить
  // целые значения, дробная часть от деления будет отброшена.
  // В итоге мы получим целое число от 0 до 255
  brightness = rotation / 4;
 
  // выдаём результат на светодиод
  analogWrite(LED_PIN, brightness);
}

Пояснения к коду

  • С помощью директивы #define мы сказали компилятору заменять идентификатор POT_PIN на A0 — номер аналогового входа. Вы можете встретить код, где обращение к аналоговому порту будет по номеру без индекса A. Такой код будет работать, но во избежание путаницы с цифровыми портами используйте индекс.

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

  • Чтобы использовать переменную, необходимо ее объявить, что мы и делаем инструкцией:

int rotation, brightness;
  • Для объявления переменной необходимо указать ее тип, здесь — int (от англ. integer) — целочисленное значение в диапазоне от -32 768 до 32 767, с другими типами мы познакомимся позднее

  • Переменные одного типа можно объявить в одной инструкции, перечислив их через запятую, что мы и сделали

  • Функция analogRead(pinA) возвращает целочисленное значение в диапазоне от 0 до 1023, пропорциональное напряжению, поданному на аналоговый вход, номер которого мы передаем функции в качестве параметра pinA

  • Обратите внимание, как мы получили значение, возвращенное функцией analogRead(): мы просто поместили его в переменную rotation с помощью оператора присваивания =, который записывает то, что находится справа от него в ту переменную, которая стоит слева

Вопросы для проверки себя

  1. Можем ли мы при сборке схемы подключить светодиод и потенциометр напрямую к разным входам GND микроконтроллера?

  2. В какую сторону нужно крутить переменный резистор для увеличения яркости светодиода?

  3. Что будет, если стереть из программы строчку pinMode(LED_PIN, OUTPUT)? строчку pinMode(POT_PIN, INPUT)?

  4. Зачем мы делим значение, полученное с аналогового входа перед тем, как задать яркость светодиода? что будет, если этого не сделать?

Задания для самостоятельного решения

wiki.amperka.ru

Цифровой переменный резистор ad5171 и Ардуино

9 мес. назад

Всем привет! В этом видео мы посмотрим как подключить цифровой переменный резистор AD5171 к Ардуино по I2C. …

1 г. назад

Потенциометр с цифровым управлением и интерфейсом SPI. MCP41010 в DIP корпусе на али, http://got.by/1om0n1 Код: http://arduinolab.pw/ind…

2 г. назад

Потенциометр с цифровым управлением, изменение сопротивления происходит благодаря массиву из 99 резисторо…

9 мес. назад

Всем привет! Если вам надоело крутить ручки переменных резисторов, то их можно заменить простым електронны…

11 мес. назад

Короткое видео с демонстрацией работы пользовательского блока для программы FLProg. Ссылка на старый форум…

12 мес. назад

Замена аналогового потенциометра на цифровой x9c104 Подробнее тут: http://umdom.by/цифровой-потенциометр-x9c104.

8 мес. назад

Всем привет! ШИМ — дним из самых распространненных способов регулировки мошности. В этом видео мы попробуем…

8 мес. назад

В этом видео мы научимся с вами делить напряжение в реальном времени.

2 г. назад

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

12 мес. назад

Цифровой потенциометр X9C103S типовое подключение и простейшая прошивка. https://drive.google.com/file/d/1wmPqP6-lsC3BjGKc60U-TFpv4DT_gKIZ/ …

9 мес. назад

Про микросхемки для электромагнитной гальванической развязки цифровых сигналов, вчастности про микросхем…

8 мес. назад

Первая часть видео где рассказывается о компенсации сопротивления проводов. Вторая часть — https://youtu.be/ROkRP8L0FC…

2 г. назад

Первый шаг к проектированию цифрового официанта. Дозатор. Простая и очень эффективная конструкция, собран…

9 мес. назад

Всем привет! Вот и 4-й выпуск распаковок. На этот раз много инструментов для пайки. Полезные ссылки: Полиимид…

2 г. назад

Описание намотчика с комплектующими https://yadi.sk/d/ii5ifLo4_q-L5w Описание протяжки с комплектующими https://yadi.sk/d/Ez56i5PxxF_A…

3 г. назад

На видео показана реализация конфигурации т.н. цифрового потенциометра, когда частота вращения двигателя…

7 мес. назад

Печатную плату можно изготовить при помощи фоторезиста. И в этом видео мы сделаем удобную установку для…

2 г. назад

Analog Devices AD5252 I2C Digital 100K Potentiometer 2-Channel 256-Position I2C Mini Module.The AD5251/AD5252 are dual-channel, I2C, nonvolatile …

7 мес. назад

Бүгінгі сабақтан естелік!!! Бүгінгі сабақта оқушылар Arduino uno микроконтроллерде потенциометрді қалай қолдан…

9 мес. назад

Сравнение стационарных и поворотных панелей: https://www.youtube.com/watch?v=8V8zteJGilo Всем привет! В этом видео мы будем…

yutubvideo.ru