PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Digitales I²C Potentiometer AD5280



Liquidator
13.06.2016, 21:51
Hallo liebe Gemeinde,

hat jemand schon die Erfahrung mit digitalen Potentiometern sammeln können?
Habe mir jetzt Testboards mit versch. Modellen gelötet, um diese auszutesten.

Da wären z.B. die Modelle AD5280 und sein 2-kanäliger Verwandter AD5282.
Bei beiden ist am Anschluss A (über einen strombegrenzenden Widerstand) 15V angeschlossen, B liegt auf GND.
Es wird die Spannung UWB gemessen. Während es beim AD5282 reibungslos funktioniert, habe ich mit dem AD5280 so meine Probleme.

Und zwar: Der Wiper (W) geht nicht über eine Spannung von 8,09V. Das entspricht dem Inhalt des RDAC-Registers von 141. Somit fallen irgendwelche Variablenüberläufe etc. aus. (bei über 127 bei signed 8-bit-Variablen)
Habe schon auf die Standardbibliotheken zurückgegriffen (Peter Fleury), hilft aber alles nichts.



i2c_start_wait(twiAddrDevice+I2C_WRITE);
i2c_write(TWI_INSTRUCTION_BYTE);
i2c_write(250);
i2c_stop();


In dem einfachen Code setze ich das RDAC-Register einfach auf höhere Werte als 141 (hier 250). Hilfts aber alles nichts. Die Spannung bleibt bei 8V. Das InstructionByte ist dabei 0x00.

Weiß jemand mir auf die Sprünge zu helfen?
Danke im Voraus.

Peter(TOO)
14.06.2016, 00:59
Da wären z.B. die Modelle AD5280 und sein 2-kanäliger Verwandter AD5282.
Bei beiden ist am Anschluss A (über einen strombegrenzenden Widerstand) 15V angeschlossen, B liegt auf GND.
Es wird die Spannung UWB gemessen. Während es beim AD5282 reibungslos funktioniert, habe ich mit dem AD5280 so meine Probleme.
Welche Betriebsspannung verwendest du?
Die Spannungen an dem Widerstandsanschlüssen müssen innerhab der Betriebsspannung liegen.

Stell mal das Schaltschema ein mit den Spannungswerten.

MfG Peter(TOO)

Liquidator
14.06.2016, 02:15
Für die Logik verwende ich 5V, die Betriebsspannung beträgt 15V.

Mit den Werten liege ich innerhalb meiner Betriebsspannung (also 0...14.7V). Bloß komme ich nicht bis zu den erwähnten 14.7V...

Liquidator
15.06.2016, 22:19
Echt keiner? :(

Habe jetzt noch Folgendes getestet und gemessen:

- Die Spannung an A beträgt auch wirklich 14,7V. (Die Versorgungsspannung ist bei 15V)
- Die I²C-Frequenz spielt keine Rolle und wird korrekt erkannt (testhalber sogar bis 950kHz)
- Habe den Bus näher am Oszilloskop untersucht. Es stimmt alles. Die Adresse, das folgende Acknowledge, das darauffolgende Statusbyte, ein weiteres Aknowledge und schlussendlich das DataByte selbst (gefolgt von einem Nack).

Heißt also: Das IC bekommt alle korrekten Informationen.

RoboHolIC
15.06.2016, 23:29
Da könnte man glatt auf den Gedanken kommen, dass der Chip hinüber ist. Hast du einen zweiten AD5282 zum Vergleich (oder schon verglichen)?

Liquidator
16.06.2016, 00:17
Die Platine mit dem AD5282 funktioniert ja. Es geht um den fast baugleichen AD5280. Ich habe drei gleiche Testplatinen für den AD5280 bestellt und diese sind bereits alle bestückt, um einen Bauteildefekt auszuschließen. Funktioniert leider nach wie vor nicht, bei keinem aus der AD5280-Reihe. Also liegt ein systematischer Fehler vor. Oder ich sehe den Wald vor lauter Bäumen nicht mehr.

RoboHolIC
16.06.2016, 21:56
Die Platine mit dem AD5282 funktioniert ja. Es geht um den fast baugleichen AD5280. Sorry, hab nicht richtig gelesen.
Liefert die fragliche Spezies denn unterhalb von 141 proportionale Ausgangsspannungen? Welchen Nennwert hat sie, also R_AB
Ist auch garantiert nicht der rehostatische sondern der potentiometrische Mode aktiv? Würde das mit Schutzwiderstand und Nennwert des Chips als Spannungsteiler zusammenpassen?

Schaltungsfehler oder Lötpanne ist ausgeschlossen?

Liquidator
17.06.2016, 12:54
Ja, mit den Spannungen kleiner Registerinhalt 141 passt es hundertprozentig.

Mein aktuelles Testprogramm:


const uint32_t I2C_DIGIPOT_1 = 200000; // Nennwert des Widerstandes (nominell)
const uint16_t Rlim = 3700; // strombegrenzender Widerstand
const uint8_t Rw = 60; // Widerstand des Wipers

i2c_start_wait(TWI_ADDR_DIGIPOT_1+I2C_READ);
regRDAC1 = i2c_readNak();
i2c_stop();

// Aktuell eingestellten Widerstandswert berechnen, anhand des vorhandenen ausgelesenen RDAC-Registerinhalt
digiRes = (uint32_t) (regRDAC1 + I2C_DIGIPOT_1) / 256.0 + Rw;

// Die abfallende Spannung RWB berechnen
digiVoltage_mV = (uint32_t) (1000.0*digiRes*15) / (Rlim + I2C_DIGIPOT_1);


Lötfehler auf allen drei Testplatinen halte ich eher für unwahrscheinlich. Aber auch alle Kontakte auf korrekte Verbindung geprüft.
Schaltungsfehler... Keine Ahnung, die Logikspannung ist eben 5V (Sowie auch !SHDN-Pin), die Versorgung beträgt 15V, Masse ist auf GND, sowie auch die negative Versorgung.
Am Punkt A kommen wegen des Rlim keine vollständigen 15V mehr an und damit liege ich innerhalb der Betriebsspannung.




Ist auch garantiert nicht der rehostatische sondern der potentiometrische Mode aktiv?


Ähm... muss man diesen explizit einstellen? *zum Datenblatt hinlauf*

P.S.: Das Programm folgt also nach dem Codeschnipsel oben (wo der Wert zum Potentiometer übertragen wird). Hier ist die Ausleseprozedur und die Konvertierung nach mV dargestellt.

- - - Aktualisiert - - -

Ergänzung: Habe soeben noch die "Power Up Sequence" laut Datenblatt beachtet. Durch ein RC-Verzögerungsglied habe ich die Spannung am Punkt A später ansteigen lassen als die Betriebsspannung. Ebenfalls ohne Erfolg. Die abfallende Spannung RWB bleibt bei den 8V

Peter(TOO)
17.06.2016, 14:24
Hallo,

Ergänzung: Habe soeben noch die "Power Up Sequence" laut Datenblatt beachtet. Durch ein RC-Verzögerungsglied habe ich die Spannung am Punkt A später ansteigen lassen als die Betriebsspannung. Ebenfalls ohne Erfolg. Die abfallende Spannung RWB bleibt bei den 8V
Das kann jetzt auch schon zu spät sein!

Das Problem sind interne Dioden, hier vor allem dir Schutzdioden an den Eingängen.
Jetzt kommt es darauf woher die Logik-Signale stammen.
Kurzzeitig verkraften die Dioden hier 20mA, dauerhaft 5mA.
Ist eigentlich kein Problem wenn die Signale von einem Logik-Gatter stammen, aber wenn man zum Testen da eine Schalter einsetzt, sollte noch ein Widerstand in Serie.

Bei manchen ICs mit mehreren Spannungen, darf die höhere Spannung nie kleiner als die Niedrige Spannung sein, weil sonst die restliche Schaltung, welche noch an der höheren Spannung hängt, über die internen Dioden mit Strom versorgt wird. Praktisch reicht da aber eine (Schottky-)Diode zwischen den Spannungen aus um diese Bedingung einzuhalten.

Eine Möglichkeit bei Chinaware ist noch, dass nicht immer das im IC drin ist, was aussen drauf steht :-(
Es gibt da eine regelrechte Fälscher-Mafia. Da werden ICs über offenem Feuer ausgelötet, aufpoliert. manchmal neu gestempelt, und als Neuware verkauft. Hinzu kommt noch, dass die auch ihre eigenen Landsleute übers Ohr hauen.
SHDN verbunden wird.
Du hast ja etwas fertiges gekauft, wie sind die Schaltpläne genau?
Im Datenblatt ist da noch ein Trick für ein sicheres hochfahren angegeben, indem Ox mit
Da der AD5280 14 Pins und der AD5282 16 Pins hat, müssen das unterschiedliche Leiterplatten sein.

MfG Peter(TOO)

Liquidator
17.06.2016, 14:35
Im Datenblatt ist da noch ein Trick für ein sicheres hochfahren angegeben, indem Ox mit


Ich fürchte, du hast den Satz nicht zu Ende geschrieben. Oder mir entgeht bisschen der Sinn :)



Da der AD5280 14 Pins und der AD5282 16 Pins hat, müssen das unterschiedliche Leiterplatten sein.


Das sind auch verschiedene Leiterplatten. Ich habe sie selbst gezeichnet und herstellen lassen. Hier der interessante Ausschnitt des Schaltplans.

31710




Und nein, da ist keine Ware aus China, weder die Platine noch das Bauteil.

Danke, dass ihr zu helfen versucht Leute :D

RoboHolIC
17.06.2016, 17:37
Im Datenblatt ist da noch ein Trick für ein sicheres hochfahren angegeben, indem Ox mit
... dem Pin /SHDN verbunden wird. Dann kann man den passenden Set-Wert übertragen und den Wiper von Null weg gleich auf das richtige Potential springen lassen - die Mittelstellung könnte ja bereits zu hoch sein. Mehr dazu steht auf Seite 17 "meines" Datenblattes. Das hilft hier aber vermutlich nicht weiter, weil es die Bootstrap-Sicherheit des Gesamtsystems meint, nicht jedoch die Funktionssicherheit des Chips.

Wird der Chip im Programm nur ein einziges Mal beschrieben oder kriegt der kontinuierlich Werte übermittelt? Mit Stop/Start oder mit Repeated Start? Laut Datenblatt kann man auch ein wenig mit gekürzten Protokollen arbeiten, d.h. nach dem Controllbyte das Stop senden. Ein Auslesen des Wiper-Wertes (Readback) soll auch möglich sein. Vielleicht ist hier was dabei, was bei der Fehlersuche helfen könnte ...

Sicherlich hängt beim Test immer nur ein einziger I2C-Slave am Bus und der Bus wird zu Anfang auf Ruhezustand geprüft.

Peter(TOO)
17.06.2016, 20:25
Hallo,

Hier der Link zum Datenblatt, damit wir die selbe Version benutzen:
http://www.analog.com/media/en/technical-documentation/data-sheets/AD5280_5282.pdf


Ich fürchte, du hast den Satz nicht zu Ende geschrieben. Oder mir entgeht bisschen der Sinn :)
Jo da fehlt was.
Gemeint war Page 17, Figure 47


Das sind auch verschiedene Leiterplatten. Ich habe sie selbst gezeichnet und herstellen lassen. Hier der interessante Ausschnitt des Schaltplans.

31710

Aus den 14.7V an TP29 schliesse ich, dass du den AD5280 mit 200k verwendest.

200k ist schon relativ hochohmig, was hängt da so am W-Anschluss?
Welchen Widerstand haben übrigens die AS5282?


Sonst kann dein Problem nur noch an der SW liegen.
Aus deinen Code-Schnipseln sieht man aber nicht ob da eine Fehler in den Konstanten ist.

BTW: Wenn du ins Register geschrieben hast, was liest du da raus?
Also den Registerwert, nicht die Umrechnung in mV oder sonst was.

Steht da was falsches drin, musst du auf der I2C-Ebene suchen.
Stimmt der Wert liegt es eher auf dar Hardware-Seite.

Kannst du eigentlich O1 und O2 ansteuern?

MfG Peter(TOO)

Liquidator
28.06.2016, 01:17
Hallo und entschuldigt das Fehlen, war etwa beschäftigt :)

Das Digitalpotentiometer lässt sich tadellos (auch die Ox-Ausgänge) ansteuern und auch auslesen. Und der Wert am Spannungsteiler wird auch eingestellt. Nur eben bis zum genannten Limit. Die ICs haben alle 200kOhm, am AD5280 hängt der Eingang eines Komparators. Aber müsste dieser nicht sehr hochohmig sein?


Grüße,
Liquidator

Peter(TOO)
28.06.2016, 02:28
Hallo Liquidator ,

Die ICs haben alle 200kOhm, am AD5280 hängt der Eingang eines Komparators. Aber müsste dieser nicht sehr hochohmig sein?
Kommt ganz auf den Typ an!

Ich kenne OVs welche +/-30V zwischen den Eingängen zu lassen und welche die Schutzdioden zwischen den Eingängen haben und somit maximal +/-0.7V erlauben.

Also leg mall ALLES auf den Tisch!

MfG Peter(TOO)

Liquidator
28.06.2016, 18:01
Hallo Liquidator ,
Also leg mal ALLES auf den Tisch!


Jawohl, Sir! :)

Aber außer zusagen, dass es ein LM319 - Komparator ist... Alles andere habe ich bereits erwähnt, meine ich...

Peter(TOO)
28.06.2016, 18:16
Hallo,

Aber außer zusagen, dass es ein LM319 - Komparator ist... Alles andere habe ich bereits erwähnt, meine ich...
Die Schaltung hast du nicht offen gelegt, also was da genau am W alles dran hängt.

Was ist, wenn du alles am W abhängst (evtl. Leiterbahn durchtrennen)?

MfG Peter(TOO)

Liquidator
28.06.2016, 19:47
Wie gesagt, am W hängt nur der Eingang des Komparators. Ich werde die Tage dazukommen und teste dann das Trennen der Leiterbahn zwischen W und LM319.
Wenn es hilft, heißt es wohl, dass ich einen anderen Komparator brauche...

Peter(TOO)
28.06.2016, 20:01
Wenn es hilft, heißt es wohl, dass ich einen anderen Komparator brauche...
Oder einen Fehler in der Schaltung hast.

Liquidator
28.06.2016, 22:31
Naja, mittlerweile besteht die Platine nur noch aus dem Potentiometer und dem Komparator :D
Werde dann mal den Komparator auch noch auslöten... Immer wenn man denkt, jetzt kann nichts mehr schiefgehen...