meta data for this page
Differences
This shows you the differences between two versions of the page.
| Previous revision | |||
| — | sensor:digipot [2026/04/11 16:29] (current) – [Renesas X9C series] vamsan | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== lamaPLC project: Digitales Potentiometer Board Moduls | ||
| + | A digital potentiometer (or " | ||
| + | |||
| + | ===== Renesas X9C series ===== | ||
| + | {{ : | ||
| + | The X9C102, X9C103, X9C104, and X9C503 are digitally controlled (XDCP) potentiometers. The device consists of a resistor array, wiper switches, a control section, and nonvolatile memory. The wiper position is controlled by a three-wire interface. | ||
| + | |||
| + | The potentiometer is implemented using a resistor array composed of 99 resistive elements and a wiper-switching network. Between each element and at either end are tap points accessible to the wiper terminal. The position of the wiper element is controlled by the CS, U/D, and INC inputs. The wiper position can be stored in non-volatile memory and recalled upon subsequent power-up. | ||
| + | |||
| + | The device can be used as a three-terminal potentiometer or a two-terminal variable resistor in a wide variety of applications, | ||
| + | |||
| + | |< 100%>| | ||
| + | ^Model^Total Resistance \\ (R < | ||
| + | |X9C102|1 KΩ|10.1 Ω|+600 ppm/°C|4 V| | ||
| + | |X9C103|10 KΩ|101 Ω|+300 ppm/°C|10 V| | ||
| + | |X9C104|100 KΩ|505 Ω|+300 ppm/°C|10 V| | ||
| + | |X9C503|50 KΩ|1010 Ω|+300 ppm/°C|10 V| | ||
| + | |||
| + | * **Resolution: | ||
| + | * **Interface: | ||
| + | * **Memory:** Non-volatile EEPROM (retains position for 100 years). | ||
| + | * **Supply Voltage (Vcc):** 5V | ||
| + | * **Resistance Tolerance: | ||
| + | * **Typical Wiper Resistance: | ||
| + | |||
| + | {{page>: | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Full datasheet: https:// | ||
| + | |||
| + | |||
| + | ==== Pinout for the Renesas X9C series module board ==== | ||
| + | The Renesas X9C series module board, commonly known as the X9C103S module, organizes the chip's pins into two separate header rows, making it more convenient to connect with breadboards and microcontrollers such as Arduino. Usually, it includes a 5-pin control header on one side and a 3-pin potentiometer header on the opposite side. | ||
| + | |||
| + | |< 100%>| | ||
| + | ^Header^Pin Label^Name^Function| | ||
| + | ^Control|VCC|Power|Connects to +5V supply.| | ||
| + | ^Control|GND|Ground|Circuit common ground.| | ||
| + | ^Control|CS|Chip Select|Active LOW. Must be pulled low to enable control.| | ||
| + | ^Control|INC|Increment|Negative-edge triggered. Pulses move the wiper.| | ||
| + | ^Control|U/ | ||
| + | ^Potentiometer|VH (or H)|High|High-end terminal of the pot (max +5V).| | ||
| + | ^Potentiometer|VW (or W)|Wiper|The adjustable " | ||
| + | ^Potentiometer|VL (or L)|Low|Low-end terminal of the pot (min -5V).| | ||
| + | |||
| + | **Quick Wiring Guide** | ||
| + | |||
| + | * **For 0-5V Voltage Divider:** Connect VH to 5V, VL to GND, and read the output from VW. | ||
| + | * **Control Interface: | ||
| + | * **Saving Settings:** To save the current resistance so it persists after power-off, you must pull CS HIGH while INC is already HIGH. | ||
| + | |||
| + | ==== Arduino example code ==== | ||
| + | To operate a Renesas X9C series digital potentiometer (such as the X9C103S) with an Arduino, you can either utilise a dedicated library like **DigiPotX9Cxxx** or manually control the pins. Here is a straightforward example that gradually varies the resistance from minimum to maximum without requiring any external library. | ||
| + | |||
| + | **Wiring Diagram** | ||
| + | |||
| + | |< 100%>| | ||
| + | ^X9C Module Pin^Arduino Pin^Description| | ||
| + | ^VCC|5V|Power Supply| | ||
| + | ^GND|GND|Ground| | ||
| + | ^CS|Pin 10|Chip Select (Active LOW)| | ||
| + | ^INC|Pin 9|Increment (Pulse to move)| | ||
| + | ^U/D|Pin 8|Up/Down (HIGH = Up, LOW = Down)| | ||
| + | ^VH / VL|5V / GND|To use as a 0-5V voltage divider| | ||
| + | ^VW|A0|Connect to Analogue Pin 0 to see results| | ||
| + | |||
| + | <code c> | ||
| + | // Pin Definitions | ||
| + | const int CS_PIN = 10; | ||
| + | const int INC_PIN = 9; | ||
| + | const int UD_PIN = 8; | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); | ||
| + | | ||
| + | // Set control pins as outputs | ||
| + | pinMode(CS_PIN, | ||
| + | pinMode(INC_PIN, | ||
| + | pinMode(UD_PIN, | ||
| + | |||
| + | // Initial state: deselect chip and set high idle | ||
| + | digitalWrite(CS_PIN, | ||
| + | digitalWrite(INC_PIN, | ||
| + | | ||
| + | Serial.println(" | ||
| + | } | ||
| + | |||
| + | // Function to move the wiper 1 step | ||
| + | void moveWiper(bool up) { | ||
| + | digitalWrite(UD_PIN, | ||
| + | digitalWrite(CS_PIN, | ||
| + | delayMicroseconds(1); | ||
| + | | ||
| + | digitalWrite(INC_PIN, | ||
| + | delayMicroseconds(1); | ||
| + | digitalWrite(INC_PIN, | ||
| + | | ||
| + | digitalWrite(CS_PIN, | ||
| + | } | ||
| + | |||
| + | // Function to reset the wiper to 0 (by moving down 100 times) | ||
| + | void resetToZero() { | ||
| + | for (int i = 0; i < 100; i++) { | ||
| + | moveWiper(false); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | resetToZero(); | ||
| + | Serial.println(" | ||
| + | delay(2000); | ||
| + | |||
| + | // Gradually increase resistance | ||
| + | for (int i = 0; i < 100; i++) { | ||
| + | moveWiper(true); | ||
| + | int value = analogRead(A0); | ||
| + | Serial.print(" | ||
| + | Serial.print(" | ||
| + | delay(50); | ||
| + | } | ||
| + | |||
| + | Serial.println(" | ||
| + | delay(2000); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Key Logic Steps** | ||
| + | |||
| + | * **Selection: | ||
| + | * **Direction: | ||
| + | * **The " | ||
| + | * **No Feedback:** These chips cannot tell the Arduino their current position. The // | ||
| + | |||
| + | ===== Sensor topics on lamaPLC ===== | ||
| + | {{topic> | ||
| + | |||
| + | {{tag> | ||
| + | |||
| + | This page has been accessed for: Today: {{counter|today}}, | ||