https://github.com/johntalton/ds3502
Digital Potentiometer (POT)
https://github.com/johntalton/ds3502
ds3502 i2c pot potentiometer
Last synced: 4 months ago
JSON representation
Digital Potentiometer (POT)
- Host: GitHub
- URL: https://github.com/johntalton/ds3502
- Owner: johntalton
- License: mit
- Created: 2020-07-05T20:27:48.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2025-09-24T05:08:00.000Z (9 months ago)
- Last Synced: 2025-09-24T07:09:01.157Z (9 months ago)
- Topics: ds3502, i2c, pot, potentiometer
- Language: JavaScript
- Homepage:
- Size: 85.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DS3502
Digital Potentiometer (POT)
[](https://www.npmjs.com/package/@johntalton/ds3502)

[](https://github.com/johntalton/ds3502/actions/workflows/CI.yml)
## :gear: Operation
The Digital Potentiometer uses a resistor array to achieve a 0-127 step range between its high (RH) and low value (RL). In most cases these are wired to the same logic high and low. Thus, providing a POT output (on RW) for analog usage in the RH-RL range.
In addition to the controllable wiper value (via WR) the device provides the ability to set the initialization value on startup. This is provided via a `mode` change such that writes to the wiper value are preserved in a persistent storage on the chip (withing IVR on the EEPROM).
This set-and-update `mode` while useful for setting persistent values over power loss also comes with increased delay in update.
:warning: `mode changes to the control register (CR) do not take effect until the next write phase`
:warning: `it is not recommended to update both CR and WR in a single update, although it is supported`
## :book: Example
```javascript
import { I2CAddressedBus } from '@johntalton/and-other-delights'
import { DS3502 } from '@johntalton/ds3502'
const bus = /* I2CBus */
const device = new DS3502.from(new I2CAddressedBus(bus, 0x28))
const { persist } = await device.getControl()
await device.setWiper(42)
```