X9C103 – digitaler Potenziometer

Der X9C103 ist ein digitales, serielles, nichtflüchtiges Potenziometer von Intersil, das in verschiedenen elektronischen Anwendungen eingesetzt wird. Der IC ist in zwei Ausführungen erhältlich. Als SOIC (Small outline IC) und als PDIP (Plastic Dual-In-Line Package) der in unser Breadboard passt.

Der IC besteht aus einer Widerstandsreihe mit 99 temperaturkompensierte  Widerstandselementen und einem Schleiferschaltnetz. Zwischen den einzelnen Elementen und an beiden Enden befinden sich Angriffspunkte, die für den Schleiferanschluss zugänglich sind. Die Position des Schleiferelements wird durch die Eingänge CS, U/D und INC gesteuert.

Die Position vom Schleifer kann in einem nichtflüchtigen Speicher abgelegt und bei einem späteren Einschaltvorgang wieder abgerufen werden.

Es gibt vier unterschiedliche Typen, die sich durch den Widerstandswert unterscheiden.

Anwendung findet das digitale Potenziometer zur Regelung von Spannungen, Einstellungen und Trimmen in verschiedenen Schaltkreisen.

X9C103 - Pin-out

Der X9C103 IC hat acht Anschlüsse, Spannungseingang und GND auf Pin 8 (VCC) und 4 (VSS) und die Pins 3, 5 und 6 entsprechen den festen Anschlüssen von einem mechanischen Potenziometer. Die Steuer-Pins INC-, U/D- und CS-Eingänge steuern die Bewegung des Schleifers entlang des Widerstandsfeldes. Wenn CS auf LOW gesetzt ist, wird das Gerät ausgewählt und aktiviert, um auf die Eingänge U/D und INC zu reagieren. Eine Übersicht der Befehle findet ihr in der Tabelle – Modi Auswahl aus dem Datenblatt.

Praktisches Beispiel

Der Sketch

				
					#include <Bounce2.h> 

const byte CS_Pin = 6;
const byte buttonPinSAVE = 7;
const byte buttonPinDOWN = 8;
const byte buttonPinUP = 9;
const byte UD_Pin = 10;
const byte INC_Pin = 11;
const byte debounceInterval = 10; // Zeit in (ms) für depounce

Bounce2::Button buttonSAVE = Bounce2::Button();
Bounce2::Button buttonDOWN = Bounce2::Button();
Bounce2::Button buttonUP = Bounce2::Button();

void setup() {
  pinMode(buttonPinSAVE, INPUT_PULLUP);
  pinMode(buttonPinUP, INPUT_PULLUP);
  pinMode(buttonPinDOWN, INPUT_PULLUP);
  pinMode(CS_Pin, OUTPUT);
  pinMode(INC_Pin, OUTPUT);
  pinMode(UD_Pin, OUTPUT);

  buttonSAVE.attach(buttonPinSAVE);
  buttonSAVE.interval(debounceInterval);
  buttonUP.attach(buttonPinUP);
  buttonUP.interval(debounceInterval); 
  buttonDOWN.attach(buttonPinDOWN);
  buttonDOWN.interval(debounceInterval); 
}

void loop() {
  buttonSAVE.update();
  buttonUP.update();
  buttonDOWN.update();
  if (buttonSAVE.fell()) {saveValue();}
  if (buttonUP.fell()) {countUp();}
  if (buttonDOWN.fell()) {countDown();}
}

void countUp() {
  digitalWrite(UD_Pin, HIGH);
  digitalWrite(CS_Pin, LOW);
  delay(5);
  digitalWrite(INC_Pin, HIGH);
  delay(5);
  digitalWrite(INC_Pin, LOW);
  delay(5);
}
void countDown() {
  digitalWrite(UD_Pin, LOW);
  digitalWrite(CS_Pin, LOW);
  digitalWrite(INC_Pin, HIGH);
  delay(5);
  digitalWrite(INC_Pin, LOW);
  delay(5);
} 
void saveValue() {
  digitalWrite(CS_Pin, LOW);
  digitalWrite(INC_Pin, HIGH);
  delay(5);
  digitalWrite(CS_Pin, HIGH);
  delay(20);  // 20 Millisek. für das Speichern
  digitalWrite(INC_Pin, LOW);
  delay(5);
}
				
			

Zum Video

★☆★ Wenn ihr den Kanal unterstützen wollt über ★☆★

oder über

Twint Spenden Code

Letzte Aktualisierung am 6.05.2024 / Affiliate Links / Bilder von der Amazon Product Advertising API