MCP4131 – digitaler Potenziometer
von Edi · 13/11/2023
Der MCP4131 digitaler Potenziometer wird mittels der SPI Schnittstellen angesteuert. Es gibt Ausführungen als Einzel (MCP41x1) und Dual (MCP42x1) Potenziometer, aber wir beschäftigen uns hier mit dem Single Poti.
Es gibt den Potenziometer mit 7-bit Auflösung, was 128 Widerstände und 129 Schritte entspricht und eine 8-bit Auflösung, mit 256 Widerstände und 257 Schritte.
MCP4131 - Pin-out
Der CS Pin (Chip Select) Pin oder auch SS (Slave select) genannt im SPI interface, ist aktiv, wenn er auf LOW gezogen wird. Der Serial Clock Pin ist mit SCK beschriftet und für das Empfangen der Daten wird der SDI/SDO Pin verwendet. Der IC wird bei VSS (GND) und VDD mit Spannung versorgt. Auf den Pin P0B wird GND gelegt und auf Pin P0A die Spannung. Am P0W Pin kann jetzt die eingestellte Spannung abgenommen werden, die wir über SPI eingestellt haben.
Praktisches Beispiel
Der Sketch
#include
const byte CSPin = 4;
const byte analogInPin = 17; //A0
const byte maxPotiSteps = 128; // 0 - 128 or 0 - 255 Steps
byte address = 0x00;
void setup() {
Serial.begin(115200);
pinMode (CSPin, OUTPUT);
pinMode (analogInPin, INPUT);
SPI.begin();
}
void loop() {
setPotValue(5);
readPotValue();
delay(1000);
setPotValue(80);
readPotValue();
delay(1000);
setPotValue(maxPotiSteps);
readPotValue();
delay(1000);
setPotValue(50);
readPotValue();
delay(1000);
}
void setPotValue(int value) {
digitalWrite(CSPin, LOW);
delay(20);
SPI.transfer(address);
SPI.transfer(value);
delay(100);
digitalWrite(CSPin, HIGH);
}
void readPotValue() {
int sensorValue = analogRead(analogInPin);
Serial.println(sensorValue);
delay(100);
}