Главная Новости

Как подключить цифровой потенциометр X9C102, X9C103, X9C104 к Arduino

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

видео Как подключить цифровой потенциометр X9C102, X9C103, X9C104 к Arduino

Изменение напряжения цифровым потенциометром X9C103

Рассмотрим управление цифровым потенциометром X9C (X9C102, X9C103, X9C503, X9C104) с помощью Arduino, а также то, какие области применения могут быть у данного устройства. Воспользуемся готовым модулем, который стоит меньше 1 доллара.


Цифровой потенциометр X9C103S

1 Описание цифрового потенциометратипа X9C

Потенциометр, или переменный резистор – это электротехническое устройство, которое позволяет изменять сопротивление электрическому току. Классический (механический) потенциометр представляет собой два вывода, между которыми располагается третий – подвижный («скользящий»). Перемещая подвижный вывод, мы меняем сопротивление между ним и каждым из неподвижных вывода.


Arudino Pro mini (FT232RL) + X9C104 (or 102/103/503) Digital Potentiometer Module (digipot)

Принцип работы механического потенциометра

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

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

Будем использовать готовый модуль с цифровым потенциометром X9C102 (X9C103, X9C104, X9C503). Китайские друзья продают их меньше чем за 100 рублей.

Модуль с цифровым потенциометром X9C102, X9C103, X9C104

Цифровой потенциометр типа X9C может быть одного из следующих номиналов:

Название Максимальное сопротивление
X9C102 1 кОм
X9C103 10 кОм
X9C503 50 кОм
X9C104 100 кОм

В названии потенциометра X9C три цифры означают: значение и количество нулей, которое нужно приписать к значению, чтобы получить номинал. Например: 102 это 10 и 2 нуля, или 1000 Ом (1 кОм); 503 – это 50 и 3 нуля, или 50000 (50 кОм) т.п.

2 Логика работы и схема подключения цифрового потенциометра X9C103 к Arduino

Между 0 и максимальным значением с шагом 1/100 от максимума можно регулировать сопротивление на третьем «подвижном» выводе.

Управление положением «подвижного» вывода осуществляется с помощью серии отрицательных импульсов. Каждый импульс смещает значение сопротивления на 1 шаг в сторону увеличения или уменьшения.

Потенциометр управляется по трём линиям:

Название вывода Назначение Примечание
CS Выбор устройства LOW - устройство активно
INC Изменение сопротивления выхода Отрицательные импульсы
U/ D Направление изменения U (вверх) – если напряжение на ножке микросхемы HIGH, D (вниз) – LOW

Вот так выглядит временная диаграмма управляющих сигналов:

Временная диаграмма управления потенциометром X9C102, X9C103, X9C104

Здесь VW – напряжение на центральном выводе.

Давайте соберём схему, как показано на рисунке:

Схема подключения цифрового потенциометра X9C102, X9C103, X9C104 к Arduino

Модуль требует питание +5 В.

3 Скетч управления цифровым потенциометром X9C102, X9C103, X9C104

Теперь напишем вот такой скетч:

const int CS = 10; const int INC = 9; const int UD = 8; void setup() { pinMode(CS, OUTPUT); pinMode(INC, OUTPUT); pinMode(UD, OUTPUT); digitalWrite(CS, HIGH); // X9C в режиме низкого потребления digitalWrite(INC, HIGH); digitalWrite(UD, HIGH); } void loop() { for (int i=0; i<=100; i+=10) { setResistance(i); delay(100); } } // Задаёт сопротивление на "подвижном" выводе. // Уровень percent - от 0 до 100% от максимума. void setResistance(int percent) { // Понижаем сопротивление до 0%: digitalWrite(UD, LOW); // выбираем понижение digitalWrite(CS, LOW); // выбираем потенциометр X9C for (int i=0; i<100; i++) { // т.к. потенциометр имеет 100 доступных позиций digitalWrite(INC, LOW); delayMicroseconds(1); digitalWrite(INC, HIGH); delayMicroseconds(1); } // Поднимаем сопротивление до нужного: digitalWrite(UD, HIGH); for (int i=0; i<percent; i++) { digitalWrite(INC, LOW); delayMicroseconds(1); digitalWrite(INC, HIGH); delayMicroseconds(1); } digitalWrite(CS, HIGH); /* запоминаем значение и выходим из режима настройки */ }

Данный скетч содержит такой алгоритм: повышаем каждые 100 мс с шагом 10% сопротивление от 0 до 100% от максимума потенциометра.

Загрузим данный скетч в память платы Arduino.

4 Проверка работы цифрового потенциометра X9C102/103/104

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

Временная диаграмма управления цифровым потенциометром X9C

Видно, что вполне. Опускаем линию CS в LOW, а также U/ D в LOW (уменьшение выходного сопротивления). Когда на INC отсчитали 100 импульсов, поднимаем U/ D в HIGH (изменяем сопротивление в сторону увеличения). С помощью INC относительно выставленного нулевого сопротивления начинаем отсчитывать нужное значение (в данном случае 10 импульсов равны 10% от максимума потенциометра).

Потенциометр X9C102/103/104 имеет 100 градаций сопротивления между минимальным и максимальным. Это позволяет не вводить никаких коэффициентов для пересчёта процентов в импульсы. Например: 10 импульсов INC изменяют текущее значение выходного сопротивления на 10%.

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

Для наглядности я подам напряжение 5 вольт между конечными выводами потенциометра, а к центральному контакту подключу осциллограф. Фотографии и видео ниже иллюстрируют результат.

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

Неплохая достаточно подробная статья про виды и устройство потенциометров тут .

Скачать техническое описание (datasheet) на цифровой потенциометр X9C102, X9C103, X9C104, X9C50

© 2008 — 2012 offroad.net.ua . All rights reserved. by nucleart.net 2008
rss