Рассмотрим управление цифровым потенциометром X9C (X9C102, X9C103, X9C503, X9C104) с помощью Arduino, а также то, какие области применения могут быть у данного устройства.
Описание цифрового потенциометра типа X9C
Потенциометр, или переменный резистор – это электротехническое устройство, которое позволяет изменять сопротивление электрическому току. Классический (механический) потенциометр представляет собой два вывода, между которыми располагается третий – подвижный («скользящий»). Перемещая подвижный вывод, мы меняем сопротивление между ним и каждым из неподвижных вывода.
Электронный потенциометр – это аналог механического потенциометра, но с рядом преимуществ: он не имеет механических частей, он может управляться удалённо с помощью, например, микроконтроллера, и он существенно меньше по размеру.
Потенциометры широко применяются в различных электронных устройствах, где необходимо регулировать напряжение в процессе работы. Например, в роли подстроечных резисторов при настройке схем, в роли регуляторов громкости в аудио-устройствах, или регуляторов уровня освещения в осветительных приборах.
Будем использовать готовый модуль с цифровым потенциометром X9C102 (X9C103, X9C104, X9C503).
Цифровой потенциометр типа X9C может быть одного из следующих типов, различающихся максимальными сопротивлениями:
Название | Максимальное сопротивление |
X9C102 | 1 кОм |
X9C103 | 10 кОм |
X9C503 | 50 кОм |
X9C104 | 100 кОм |
В названии потенциометра X9C три цифры означают: значение и количество нулей, которое нужно приписать к значению, чтобы получить номинал. Например: 102 это 10 и 2 нуля, или 1000 Ом (1 кОм); 503 – это 50 и 3 нуля, или 50000 (50 кОм) т.п.
Логика работы и схема подключения цифрового потенциометра X9C103 к Arduino
Между 0 и максимальным значением с шагом 1/100 от максимума можно регулировать сопротивление на третьем «подвижном» выводе.
Управление положением «подвижного» вывода осуществляется с помощью серии отрицательных импульсов. Каждый импульс смещает значение сопротивления на 1 шаг в сторону увеличения или уменьшения.
Потенциометр управляется по трём линиям:
Название вывода | Назначение | Примечание |
---|---|---|
CS | Выбор устройства | LOW – устройство активно |
INC | Изменение сопротивления выхода | Отрицательные импульсы |
U/D | Направление изменения | U (вверх) – если напряжение на ножке микросхемы HIGH, D (вниз) – LOW |
Модуль требует питание +5 В.
Скетч управления цифровым потенциометром 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% от максимума потенциометра.
Опускаем линию CS в LOW, а также U/D в LOW (уменьшение выходного сопротивления). Когда на INC отсчитали 100 импульсов, поднимаем U/D в HIGH (изменяем сопротивление в сторону увеличения). С помощью INC относительно выставленного нулевого сопротивления начинаем отсчитывать нужное значение (в данном случае 10 импульсов равны 10% от максимума потенциометра).
Потенциометр X9C102/103/104 имеет 100 градаций сопротивления между минимальным и максимальным. Это позволяет не вводить никаких коэффициентов для пересчёта процентов в импульсы. Например: 10 импульсов INC изменяют текущее значение выходного сопротивления на 10%.
Распиновка и назначение контактов микросхемы:
1 INC – Increment контакт для управления “ползунком” когда на него поступает положительный сигнал “ползунок” перемещается в верх или в низ
а в какую сторону “ползунок” пойдёт, определяет пин
2 U/D – Up/Down при высоком уровне ползунок едет на верх а при низком в низ.
7 CS – Chip Select микросхема выбирается, когда на входе CS НИЗКИЙ уровень. когда CS переходит в ВЫСОКИЙ уровень, а вход INC также имеет ВЫСОКИЙ уровень, текущее положение “ползунка” сохраняется в энергонезависимой памяти.
После завершения операции сохранения X9C1ХХ будет переведен в режим ожидания с низким энергопотреблением, пока микросхема не будет выбрана еще раз.
5 VW — это тот самый контакт “ползунка” или центральный вывод потенциометра которым мы управляем, Последовательное сопротивление между контактами VW – VL и VW – VH не менее 40 Ом. это кстати тоже может накладывать некие ограничения для использования этой микросхемы.
3 VH и 6 VL – пины высокого (VH) и низкого (VL) сигнала X9CХХ эквивалентны фиксированным контактам механического потенциометра. Минимальное напряжение –5В, максимальное +5В.
Следует отметить, что терминология VL и VH относится к относительному положению клеммы по отношению к направлению движения “ползунка”, выбранному входом U/D, а не к потенциалу напряжения на клемме.
одно из самых важных ограничений это выходы потенциометра, максимальное напряжение проходящее через потенциометр не должно превышать 5V и ток в 8 мА.
Модуль цифрового потенциометра X9C104 100K
Этот Модуль имеет 10 контактов:
5 контактов с левой стороны:
VCC: Источник питания модуля – 5 В
GND: Заземление
INC: Команда изменения резистора
U/ D: ВВЕРХ / вниз. Регулировочный резистор
CS: Выбор микросхемы. Активный НИЗКИЙ уровень
5 контактов с правой стороны:
VCC: Источник питания модуля – 5 В
RH: Высокий резистор
RW: Регулируемый резистор
RL: Низкий резистор
GND: Заземление
Ссылка на Али
Ещё ссылка