Hallo Community,
für ein privates Projekt habe ich ein I2C Digitalpotentiometer (AD524, genauer AD5245BRJZ50) mit 50kOhm verbaut.
Die Adresse des Digitalpoti habe ich bereits herausgefunden: 0x2C.
Das Poti liegt an 3.3V Versorgungsspannung. Die I2C Busverbindung scheint zu funktionieren.
Zum testen des Poti habe ich ein Sketch für den Arduino DUE geschrieben, dass den Wert des Poti in regelmäßigen abständen (3 Sekunden) ändert (siehe unten).
Jetzt zur eigentlichen Problemstellung;
Egal welchen Wert ich durch das Sketch an den Poti sende, steht sozusagen der „Schleiferkontakt“ immer mittig, also bei etwa 25kOhm. Das setzen des Potis auf GND (Übergabewert „0“) funktioniert.
Also kurz: Ich kann nur zwischen 1,65V und 0V hin- und herschalten.
Was mache ich falsch? Ich will auch andere Werte als diese zwei Werte am Schleifer (W) einstellen können.
Könnt Ihr mir helfen?
Viele Grüße
kleinerkaktus
Anmerkung zum Sketch: Der Übergabewert 255 im Sketch sollte doch eigentlich den Poti auf „Vollausschlag“, also 50kOhm stellen, oder nicht?
// ++++++++++++++++++++ Libraries ++++++++++++++++++++
#include <Wire.h> // I2C-Bus Library
// ++++++++++++++++++++ Variable ++++++++++++++++++++
// Digitalpotentiometer
byte potAdress = 0x2C; // Setzt die Adresse des Digitalpotentiometers
const double valuePotA = 3.3; // Spannung an Terminal A
const double valuePotB = 0; // Spannung an Terminal B
//++++++++++++++++++++ SETUP ++++++++++++++++++++
void setup() {
Serial.begin(9600); //Startet die Kommunikation per USB zum Computer
// Setup I2C:
Wire.begin(); // Startet die I2C Kommunikation
while (!Serial); //Leaonardo wait for serial monitors
}
//++++++++++++++++++++ LOOP ++++++++++++++++++++
void loop() {
delay(3000);
setValue(255);
delay(3000);
setValue(0);
}
void setValue(byte val)
{
Wire.beginTransmission(potAdress);
Wire.write(val);
Wire.endTransmission();
}