The shipping fee depends on your address
Standard: 9-15 business days,fee is down to $3.99
Express: 4-7 business days,fee is down to $5.99
WE'RE READY TO BUILD A CUSTOM PRODUCT FOR YOU.
If you're looking for a custom product, we can help. Kindly contact us via email support@keszoox.com and send us the details for your need, then we'll let you know how we can deliver the right solution.We make into production usually Within 1 - 3 Bussiness Days.
Expect customization orders.10kΩ digitally controlled potentiometer with 100 selectable wiper taps
The X9C103S Digital Potentiometer Module is a 10kΩ digitally controlled potentiometer with 100 selectable wiper taps and non-volatile storage of the current tap point.
Digital potentiometers are commonly used to allow a uC to control the calibration or adjustment of a device rather than having a human twiddle a potentiometer knob. This can be done automatically such as in the case where the uC is monitoring a voltage using ADC and adjusting the pot to hit a target voltage or in response to user input such as to control the volume of an audio amplifier.
The potentiometer has 100 steps, so if it is connected across 5V, the step resolution of the wiper output will be approximately 5V/100 steps = 50mV.
The two ends of the potentiometer can be connected to voltages that span the range of up to -5V to +5V.
The maximum output current sink/source capability is 4.4mA. Ensure that is not exceeded in the circuit you are using it in.
The module has an easy to use 3-wire interface that allows the device to be selected, direction of travel of the wiper to be set and the wiper incremented in the direction chosen. It can also optionally save the last setting so that it will be restored after a power cycle.
It is not a true communication interface and it is not possible to read the current setting back out of the device. This may seem like a major limitation, but it mimics how a typical potentiometer is used. You don’t set a potentiometer to a particular resistance value, rather you adjust it to achieve a particular affect depending on the circuit it is being used in.
This module comes with the headers loose. This allows you to configure the module to meet your particular requirements such as which side of the board you want the header on or if you want to solder on wires to make the connections.
Note that the spacing of the headers on the two ends of the boards are not exactly on 0.1″ centers. For use with breadboards, we put the 5-pin header on the bottom so that the module can plug directly into the breadboard and we put the 3-pin header on the top of the board where connections can be made using female jumpers.
The connections to the module are fairly straightforward.
1 x 5 Header
1 x 3 Header
Note that just like a regular potentiometer, you can switch the voltages between VL and VH as to which one is more positive, but doing so will reverse the direction of the U/D movement.
These modules have good build quality and generally work well. It would have been nice if the header layout was on 0.1″ centers but that is not a major limitation as long as you don’t solder both headers to the bottom of the module and then wonder why it won’t plug into a breadboard very well. You can mount both on the bottom side if you first put them into a breadboard and then solder them in place at a slight angle or do as we have and solder the potentiometer contacts on the top side.
The back of the board shows some incorrect voltage info that can be ignored. The chip is specified to operate at a VCC of 5V ± 10%, so cannot operated down to 3V as per the silkscreen. The VL and VH terminals can both handle the full range of -5V to +5V
The program below is a simple program that allows you to control the device directly. There are libraries available for this device but the interface is simple enough that we don’t bother to use one. In the program, entering a ‘U’ causes the wiper to be incremented UP by one. Entering a ‘D’ causes the wiper to be decremented DOWN by one. ‘S’ causes the device to save the current setting.
We are connecting U/D to pin 8, INC to pin 9 and CS to pin 10, but these can be reassigned to any 3 digital pins.
We are connecting the pot across 5V and ground and the wiper output is being input to A0, but this can be any analog input pin.
/* Exercise X9C103S Digital Potentiometer Uses Serial Monitor window to issue commands for controlling the pot and also observing the results. The 3 control lines are attached to any digital Pins pins on uC. We are using pins 8,9 and 10. Pot connections: VL = ground, VH = 5V, VW wiper is connected to analog input A0 Commands -------- U = Increase wiper setting D = Decrease wiper setting S = Save current setting into memory for recall after power cycle */ const float V_REF = 5.0; // Change if using different Vref const int UP = 0; const int DOWN = 1; const int UD_PIN = 8; // Goes to X9C103P U/D pin - Up = HIGH, Down = LOW const int INC_PIN = 9; // Goes to X9C103P INC pin - active falling edge const int CS_PIN = 10; // Goes to X9C103P CS pin - active LOW const int WIPER_PIN = A0; // Goes to X9C103P VW pin - Analog voltage output of pot float voltage = 0; //=============================================================================== // Initialization //=============================================================================== void setup() { pinMode (CS_PIN, OUTPUT); pinMode (UD_PIN, OUTPUT); pinMode (INC_PIN, OUTPUT); Serial.begin(9600); digitalWrite(INC_PIN, HIGH); digitalWrite(CS_PIN, LOW); // Enable the X9C103P chip Serial.print ("Initial Voltage Setting: "); PrintVoltage(); // Print X9C103P power up value } //=============================================================================== // Main //=============================================================================== void loop() { if (Serial.available()) DoSerial(); // Just loop looking for user input } //=============================================================================== // Subroutine to handle characters typed via Serial Monitor Window //=============================================================================== void DoSerial() { char ch = toupper(Serial.read()); // Read the character we received // and convert to upper case switch (ch) { case 'S': // Save settings digitalWrite(INC_PIN, HIGH); digitalWrite(CS_PIN, HIGH); delay(100); digitalWrite(CS_PIN, LOW); Serial.println("Setting Saved"); break; case 'U': // Increment setting Move_Wiper(UP); Serial.print("Incrementing Value"); PrintVoltage(); break; case 'D': // Decrement setting Move_Wiper(DOWN); Serial.print("Decrementing Value"); PrintVoltage(); break; default: break; } } //=============================================================================== // Subroutine to read ADC and print to the Serial Monitor Window //=============================================================================== void PrintVoltage() { int sampleADC = analogRead(WIPER_PIN); // Take reading on wiper pin float volts = (sampleADC * V_REF) / 1023.0; // Convert to voltage Serial.print(" ADC = "); Serial.print(sampleADC); Serial.print(" Voltage = "); Serial.println(volts, 3); } //=============================================================================== // Subroutine to move the wiper UP or DOWN //=============================================================================== void Move_Wiper(int direction) { switch (direction) { case UP: digitalWrite(UD_PIN, HIGH); delayMicroseconds(5); // Set to increment digitalWrite(INC_PIN, LOW); delayMicroseconds(5); // Pulse INC pin low digitalWrite(INC_PIN, HIGH); break; case DOWN: digitalWrite(UD_PIN, LOW); delayMicroseconds(5); // Set to decrement digitalWrite(INC_PIN, LOW); delayMicroseconds(5); // Pulse INC pin low digitalWrite(INC_PIN, HIGH); break; default: break; } }
Notes:
Operational Ratings | ||
Vcc | 5V ±10% | |
VVH | VH Terminal Voltage | -5V to +5V |
VVL | VL Terminal Voltage | -5V to +5V |
IW | Wiper Current | ± 4.4mA |
Wiper Tap Points | 100 | |
Resistance | End-to-End | 10kΩ ±20% |
Wiper | 40Ω (typ) | |
Dimensions | L x W (PCB) | 27 x 14mm (1.1 x 0.55″) |
Country of Origin | China | |
Datasheet | Renesas / Intersil | X9C Series |
WE'RE READY TO BUILD A CUSTOM PRODUCT FOR YOU.
All orders are dispatched from our warehouse. The shipments are fully tracked—from our door to yours. Please allow 3-5 business days for your order to be processed in addition to the shipping times below.
Standard: 9-15 business days. Express: 4-7 business days.
Please note that shipping providers are extremely busy during this time, and some orders might experience a delay on top of usual delivery times. If your order is late, please allow 5-10 days more than indicated in standard shipping times before contacting our customer service. Thank you for your understanding.
All orders are 100% tracked. You’ll receive an email with a tracking number and a link to track your parcel once your order leaves our warehouse. Please allow 24-48 hours for the tracking link to start showing shipping information.
Receive our latest updates about our products & promotions.
Thanks for subscribing!
This email has been registered!