Модуль цифрового потенциометра X9C103S скетч

Модуль цифрового потенциометра TZT X9C103 (X9C103 Digital Potentiometer Board Module)

Модуль цифрового потенциометра X9C103S

Характеристики  цифрового потенциометра TZT X9C103

Цифровой потенциометр реализован с помощью резисторной матрицы, состоящей из 99 резисторов и переключателей. Положение контактов может храниться в энергонезависимой памяти.
X9C102 = 1kОм
X9C103 = 10kОм
X9C503 = 50kОм
X9C104 = 100kОм

Количество резисторов 99;
Напряжение сигнала на выходе, ±5 В (или X9C103, X9C503, X9C104 0-10 V, X9C102 0-4V);
Напряжение питания VCC 5 В;
Ток потребления в режиме работы, не более 3 мА;
Ток в режиме ожидания, не более 750 мкА;
Срок хранение данных, 100 лет.

Чип управляется с помощью SPI интерфейса.

Распиновка

VH High Terminal
VW Wiper Terminal
VL Low Terminal

VSS Ground
VCC Supply Voltage
U/D Up/Down Input (увеличение напряжения при HIGH или уменьшение напряжения при LOW)
INC Increment Input Изменение сопротивления выхода (отрицательные импульсы)
CS Chip Select Input Выбор устройства (при LOW активно)

Скетч для проверки работы модуля цифрового потенциометра X9C103S в Arduino

const int pin_CS=10;
const int pin_INC=9;
const int pin_UD=8;

const int pin_wiper=A0;

void setup() {
  pinMode (pin_CS, OUTPUT);       
  pinMode (pin_INC, OUTPUT); 
  pinMode (pin_UD, OUTPUT);

  pinMode (pin_wiper, INPUT);

  digitalWrite(pin_CS,HIGH); // off
  //digitalWrite(pin_INC,HIGH);
  //digitalWrite(pin_UD,HIGH);

  digitalWrite(pin_wiper,HIGH);

   Serial.begin(9600);
}

void loop() {
  up();
  print_wiper(pin_wiper); 
  delay(500);

 down();
  print_wiper(pin_wiper); 
  delay(500); 
 
 
}

/*********** вниз **********/ 
void down(){
 digitalWrite(pin_UD, LOW);
 digitalWrite(pin_INC, HIGH);
  digitalWrite(pin_CS, LOW);
  delayMicroseconds(1);
  digitalWrite(pin_INC, LOW);
  delayMicroseconds(1);
  digitalWrite(pin_INC, HIGH);
  delayMicroseconds(1);

  digitalWrite(pin_CS, HIGH); // сохранение значения
}
/*********** вверх **********/ 
void up(){
  digitalWrite(pin_UD, HIGH);             
  digitalWrite(pin_INC, HIGH);           
  digitalWrite(pin_CS, LOW);             
  delayMicroseconds(1);               
  digitalWrite(pin_INC, LOW);             
  delayMicroseconds(1);
  digitalWrite(pin_INC, HIGH);
  delayMicroseconds(1);
  digitalWrite(pin_CS, HIGH);  // сохранение значения 
}

void print_wiper(byte pin_analog)
{
  int analog_signal = analogRead(pin_analog);
  float voltage = (analog_signal * 5.0)/ 1023.0;
  Serial.print("Аналоговый сигнал = ");
  Serial.print(analog_signal);     
  Serial.print("\tНапряжение = ");
  Serial.println(voltage,3);
}

Результат работы программы

результат работы программы

286

Leave a Reply

Ваш адрес email не будет опубликован.