X9C103 – digitaler Potenziometer
https://youtu.be/u798QP_RRH0
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
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);
}
Material
Hier gehts zu den Sketches auf Github
Zum Video
★☆★ Wenn ihr den Kanal unterstützen wollt über ★☆★
oder über
Letzte Aktualisierung am 12.12.2024 / Affiliate Links / Bilder von der Amazon Product Advertising API