Digitales Potentiometer AD5263 !!!HILFE!!!

Hallo ich möchte das Digitale Potentiometer AD5263 steuern.
Ich habe es bereits nach dem Schema angelötet(Anhang).
Sämtliche Code versuche die ich bisher ausprobiert habe haben nicht funktioniert...:confused:
Weis jemand wie GENAU man den Steuert?
Als Codebeispiel das nicht Funktioniert hat :

#include <SPI.h>
const int slaveSelectPin = 10;
void setup() {
  pinMode (slaveSelectPin, OUTPUT);
  SPI.begin(); 
}
void loop(){
  digitalWrite(slaveSelectPin,LOW);
  SPI.transfer(1);
  SPI.transfer(200);
  digitalWrite(slaveSelectPin,HIGH); 
  }

Das IC ist falsch verdrahtet wenn das alles ist

Schau dir mal den DIS Pin (9) an:
"Digital Interface Select (SPI/I2C Select). SPI when DIS = 0, I2C when DIS = 1"
Der muss demnach auf Masse

Pin 10 - Logic Supply Voltage - sollte auf 5V

Pin 18 - Vss - muss an Masse

Pin 15 - Shutdown Enable - muss auf 5V (da Low Aktiv)

Pin 14 - Reset Low Aktiv - steht nichts dabei aber besser auch an 5V

Danke ich probiers mal...

Wegen Vss/GND:
Man kann dieses IC mit negativen Spannung betreiben. In dem Fall ist Vss die negative Versorgungsspannung und GND ist Masse. Bei einer einfachen Versorgungsspannung ist beides identisch.

Und die Logikspannung muss vorgegeben werden, weil man das IC auch mit Spannungen >5V betreiben kann, bzw. die Logikspannung auch unter 5V liegen kann.

Vielen Dank! Ich kann jetzt den Poti einstellen! ..jetzt gibt es nur noch paar codefehler zu beheben.
Andere Frage: ist es normal dass der Lautsprecher knackt wenn er über das Poti angeschlossen ist?

Ok das Knacken hat sich erledigt...war nur die kaputte PC Buchse :frowning: :blush:

Also jetzt klappt es mit einem Kanal super...doch wie steuere ich den 2. An ?

Code für ein Kanal:

      digitalWrite(ss, LOW);
  SPI.transfer(0); 
  SPI.transfer(value); 
  digitalWrite(ss, HIGH);

Und Noch was....
Ist das normal dass es extrem rauscht bei hohem Wiederstand?

Lies dir doch mal das Datenblatt genau durch:
http://www.analog.com/static/imported-files/data_sheets/AD5263.pdf

Du brauchst nicht alles, aber das SPI Protokoll ist auf Seite 15 und Seite 18

"The 10-bit serial word must be loaded with address bits A1 and A0, followed by the data byte, MSB first. The
format of the word is shown inthe Serial Data-Word Formatsection and bit map"

Auf Seite 15 steht, dass die ersten zwei Bits die Adressen sind. Da das ganze MSB first geschickt wird, wird also erst die Adresse geschickt. Die 2 gebrauchten Bits des ersten Bytes stehen in Bit 0 und 1. Also gehen die oberen 6 Bits verloren, wenn man das zweite Byte nachschiebt.

Zugegeben, wie man da 10 Bit Daten mit 2 Bytes schickt, hatte ich erst auch nicht kapiert, aber dein Code machst das ja schon:

SPI.transfer(0);

Das ist die Adresse des Kanals. Also 0-3. Siehe da auch Table 7 auf Seite 18

Du machst es dann so:

void setValue(byte channel, byte value)
{
  digitalWrite(slaveSelectPin,LOW);
  SPI.transfer(channel);
  SPI.transfer(value);
  digitalWrite(slaveSelectPin,HIGH); 
}

So steht es auch hier (ganz unten):

Zum Rauschen kann ich nichts sagen. Mit Audio kenne ich mich nicht wirklich aus.

kann ich auch" SPI.transfer(0,1);" machen wenn ich möchte dass 2 kanäle parallel laufen?

Nein. SPI kann immer nur ein Byte auf einmal schicken und das IC kann auch nur ein Byte auf einmal empfangen.

Aber SPI ist wirklich schnell. Die Übertragung dauert nur ein paar µs. Den Unterschied hörst du nicht ob das jetzt absolut synchron oder nacheinander geschaltet wird.

Danke. Mir ist jetzt aufgefallen warum der 2. Kanal nicht getan hat.... :roll_eyes: Kabel vertauscht

Laut deiner Beschaltung hängst du an Kanal 1 (Adresse 0) und 3 (Adresse 2)

Danke ich hab es gerade gesehen..(desshalb hab ich es auch gelöscht :wink: )

Jetzt klappt alles soweit. Nur sind die Übergänge sehr verzögert und kantig. Was könnte ich machen dass das flüssiger wird?
Kann man da ein Fade zwischen dem Alten und dem Neuen Wert machen ?
Oder vielleicht einfach das ding schneller reagieren lassen?

Ich habe mal probiert funktioniert sogar ...allerdings noch immer etwas stockend und zeitversetzt :frowning:

 if ( protzentsensor < 101){
     valuezwischen = 2.55*protzentsensor;
     delay(2);
   if ( millis() > previousmillisvalue + intervalvalue){
    value2 = valuezwischen;
    previousmillisvalue = millis();
    }
    Serial.println(value2);
    if (valuezwischen < value2){
   value = valuezwischen + 1;
  } 
     if (valuezwischen > value2){
   value = valuezwischen - 1;
  } 
     
      digitalWrite(ss, LOW);
  SPI.transfer(0); 
  SPI.transfer(value); 
  digitalWrite(ss, HIGH);
  delay(10);
      digitalWrite(ss, LOW);
  SPI.transfer(2); 
  SPI.transfer(value); 
  digitalWrite(ss, HIGH);
  delay(10);
    }

Ein weiteres von Dir ignoriertes Problem.
Die Widerstand-Anschlüsse des AD5263 dürfen max eine Spannung bekommen die zwischen Vss und Vdd sind. Der AD5263 kann zwar bis zu 15 V vertragen, da muß die Vesorgungsspannung auch 15V sein. Jetzt weiß ich nicht welche Spannungen an den R+, R-, L+ bzw L- Anschlüssend es MP3 Players liegen. bzw welchen Offset die gegenüber der Masse/Versorgungspannung des Ad5263 haben.

Grüße Uwe

heißt das dass ich auch einfach Vss an die Masse von dem Signal Kabel anstopseln kann ?

MaxNarr:
heißt das dass ich auch einfach Vss an die Masse von dem Signal Kabel anstopseln kann ?

Weiß ich nicht. Hat das Audiosignal negative Komponenten?
Grüße Uwe

Ich weiß da auch nicht mehr als dass es + und - gibt