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

X9C103S — Потенциометр с цифровым управлением, изменение сопротивления происходит благодаря массиву из 99 резисторов. В серии X9C есть потенциометры на различное сопротивление, X9C102 = 1kΩ, X9C103 = 10kΩ, X9C503 = 50kΩ и X9C104 = 100kΩ

Особенности работы:

У микросхемы нет привычного интерфейса вроде I2C или SPI, управление происходит по трем проводам, своеобразным способом.

  • Выход VH, RW, VL, выходы потенциометра, максимальное напряжение через потенциометр 10В, ток 8мА.
  • вход U/D: UP/DOWN, в зависимости от состояния этого входа, ползунок резистора перемещается в верх или вниз.
  • вход INC: INCREMENT, управление ползунком, когда на входе изменяется состояние с 1 на 0, ползунок потенциометра делает один шаг, принцип работы как у аппаратного прерывания.
  • вход CS: DEVICE SELECT, выбор устройства, чтобы микросхема начала принимать команды, нужно подать логический 0

Но лучше обратится к даташиту, на 7 странице находится таблица поясняющая процесс.

Микросхема может хранить в EEPROM установленное значение потенциометра, но сохранит или нет, зависит от состояния входа INC в момент перехода входа CS, что видно из таблицы выше.

 


Подключение модуля к Arduino:

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

#define UD  2                          // выходы к которым подключен модуль
#define INC 3
#define CS  4

void up(){                            // поднимает ползунок в верх на 1 ступень
  digitalWrite(UD, HIGH);             // на U/D подаем единицу
  digitalWrite(INC, HIGH);            // и на INC тоже
  digitalWrite(CS, LOW);              // включаем микросхему
  delayMicroseconds(1);               // ждем
  digitalWrite(INC, LOW);             // дергаем вход INC
  delayMicroseconds(1);
  digitalWrite(INC, HIGH);
  delayMicroseconds(1);
///digitalWrite(INC, LOW);                  // в этом случаи положение ползунка записано не будет
  digitalWrite(CS, HIGH);             // выключаем микросхему и записываем положение в EEPROM 
}

void down(){                          // опускаем ползунок в верх на 1 ступень
  digitalWrite(UD, LOW);
  digitalWrite(INC, HIGH);
  digitalWrite(CS, LOW);
  delayMicroseconds(1);
  digitalWrite(INC, LOW);
  delayMicroseconds(1);
  digitalWrite(INC, HIGH);
  delayMicroseconds(1);

  digitalWrite(CS, HIGH);
}

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

  pinMode(INC, OUTPUT);
  pinMode(UD, OUTPUT);
  pinMode(CS, OUTPUT);
  digitalWrite(CS, HIGH);                         // выключаем микросхему
}

void loop() {

  if (Serial.available()) {                       // проверяем пришло ли что в Serial
     if (Serial.read() == '0'){                   // если пришел 0
      down();                                     // опускаем ползунок
      Serial.print("-1");
     }
     else {                                       // иначе поднимаем
      up();
      Serial.print("+1");
     }
   
  }
 

}

В примере две функции up() и down(), при вызове их, на микросхему дается команда поднять или опустить ползунок.

Выходы VL, VW, VH модуля подключаются на место обычного потенциометра, это может быть управление контрастностью текстовых экранов 1602 или управление микросхемой линейного стабилизатора напряжения LM317

Видео:

Купить:

можно тут.