meta data for this page
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| sensor:digipot [2026/04/11 14:50] – created vamsan | sensor:digipot [2026/04/11 16:29] (current) – [Renesas X9C series] vamsan | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== lamaPLC project: Digitales Potentiometer Board Moduls | ====== lamaPLC project: Digitales Potentiometer Board Moduls | ||
| - | {{ : | + | |
| - | {{ : | + | A digital potentiometer (or " |
| - | A digital potentiometer (or " | + | |
| ===== Renesas X9C series ===== | ===== 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 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. | ||
| Line 12: | Line 12: | ||
| |< 100%>| | |< 100%>| | ||
| - | |{{ : | + | ^Model^Total Resistance \\ (R < |
| - | ===== Wiring ===== | + | |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> | <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); | ||
| + | } | ||
| </ | </ | ||
| - | ===== Communication | + | **Key Logic Steps** |
| - | {{topic>communication}} | + | |
| + | * **Selection: | ||
| + | * **Direction: | ||
| + | * **The " | ||
| + | * **No Feedback:** These chips cannot tell the Arduino their current position. The // | ||
| + | |||
| + | ===== Sensor | ||
| + | {{topic>sensor}} | ||
| - | {{tag>BMP280 AHT20 temperature humidity pressure | + | {{tag> |
| This page has been accessed for: Today: {{counter|today}}, | This page has been accessed for: Today: {{counter|today}}, | ||