Forum: Mikrocontroller und Digitale Elektronik Single Digital Potentiometer MCP41 Ansteuerung über SPI


von Jim P. (stadtaffe)



Lesenswert?

Hallo Experten,

ich habe folgendes Problem....

ich versuche über eine DAQ Karte PCI 6220 von NI das Single Digital 
Potentiometer MCP41 über die SPI Schnittstelle anzusteuern.

Im Manuale wird vorgegeben wie man den Widerstandwert inkl. Timing 
(Bild) über ein 16 bit Kommando ändern kann.

Diese digitale Signal wird mittels DAQ Karte PCI 6220 von NI an das Poti 
übertragen. Beigefügt ist das Timing aus dem Manual, das generierte 
Singal (Select, Clock, SI) sowie das gemessene Signal am Poti. Kann mir 
jemand sagen, warum sich der Widerstandswert am Poti nicht ändert bzw. 
was ich falsch mache???

Vielen Danke im Voraus.

von Geht dich auch nix an (Gast)


Lesenswert?

Geht Dich nix an schrieb:
> Singal (Select, Clock, SI) sowie das gemessene Signal am Poti. Kann mir
> jemand sagen, warum sich der Widerstandswert am Poti nicht ändert bzw.
> was ich falsch mache???

von n.b. (Gast)


Lesenswert?

Geht Dich nix an schrieb:
> Im Manuale wird vorgegeben wie man den Widerstandwert inkl. Timing
> (Bild) über ein 16 bit Kommando ändern kann.

Und warum verwendest du dann nicht den passenden SPI-Mode? Du solltest 
dich einigen, ob die Daten während Low- oder High-Phase des Clock stabil 
sein sollen.

von Easylife (Gast)


Lesenswert?

Du mischt SPI mode 1,1 und 0,0.
Lass die Clock low während du CS low machst. Dann hast du exakt 16 
clocks.

von Jim P. (stadtaffe)


Angehängte Dateien:

Lesenswert?

Hallo und Danke für die Antworten.

Ich habe die Clock und die Daten so verschoben wie geraten (siehe Foto). 
Leider funktioniert das Poti dann immer noch nicht. Sollte es nach dem 
dargestellten Timing theoretisch funktionieren?

Danke im Voraus

von Easylife (Gast)


Lesenswert?

Na, guck doch mal was du da rausschickst:

17(!) Clocks = Bits

0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0

Jetzt lasse das erste Bit weg, und du bist am Ziel.

von Jim P. (stadtaffe)


Angehängte Dateien:

Lesenswert?

Danke nochmals für die Antwort.

nun habe ich das Bit weggelassen... geht leider immer noch nicht.

Sollte es nach dem dargestellten Timing theoretisch funktionieren oder 
ist noch ein weitere bug drinne?

Danke im Voraus

von easylife (Gast)


Lesenswert?

messung zeigen. ;-) wieviel mhz hat die clock?

von Jim P. (stadtaffe)


Lesenswert?

Hallo,

die linke Grafik von Bild versuch3.png ist das Signal was an den DIO´s 
ausgegeben wird. Die rechte Grafik von versuch3.png  ist das gemessene 
Signal mittels eines AD Wandlers am jeweiligen Kanal. Die Farben sind 
leider unterschiedlich.

Die dargestellten Verläufe sind also richtig?

Die Frequenz für die Clockperiode ist  3750 Hz.

Vielen Dank soweit

von Easylife (Gast)


Lesenswert?

Geht Dich nix an schrieb:
> Die dargestellten Verläufe sind also richtig?

Ja.
Du sendest jetzt 0x11, also Command "Write Data" für Potentiometer 0.
Datenbyte ist 0x01.

Wenn es jetzt nicht funktioniert, kann es nur noch an der Beschaltung 
des Digitalpotis liegen.
Vielleicht die 100nF an VDD vergessen?
Oder falsch beschaltet?
Hast du einen Schaltplan zu deiner Beschaltung?

Miss auch mal den Potentiometerwert direkt nach dem Startup, bevor du 
ein Kommando schickst. Der Wiper sollte per default in der Mitte 
stehen...

von Jim P. (stadtaffe)


Lesenswert?

Hallo,

100nF habe ich zwischen Pin 4 und 8. Nach dem Einschalten hat das Poti 
den halben max. Widerstand. Einen Schaltplan gibts nicht. Die Schaltung 
ist fliegen auf einem Steckboard verdrahtet. Ansonsten liefert die Karte 
6220 von NI +5V und GND, sowie CS, SCK und SI über die DIO´s. Weiterhin 
wird an diesen Pin´s über die AD- Wandler der Karte das generierte 
Signal gemessen. Mittels eines Multimeteres messe ich den Widerstand an 
PA und PW.

Vielen Dank nochmals

von Easylife (Gast)


Lesenswert?

Wenn du ein Multimeter nimmst, um den Widerstand zu messen, benutzt du 
das Teil im "rheostat mode".
In diesem Fall solltest du dann entweder PA oder PB direkt mit PW 
verbinden.
(Datenblatt "4.1 Modes of Operation")

Und nur um sicher zu gehen: verpolt hast du das Ding nicht aus Versehen?
5V gehört an (8)VDD und GND an (4)VSS...

von Easylife (Gast)


Lesenswert?

Funktioniert es inzwischen?

von Jim P. (stadtaffe)


Lesenswert?

hallo... sorry für die Sendepause. Ich habe noch einen Hausbau an den 
Hacken der meine ganze Zeit absorbiert. Das mit dem "rheostat mode" 
sowie die +5V und GND sind richtig. Es funktioniert leider trotzdem 
nicht.

von stadtaffe (Gast)


Lesenswert?

hallo... ich habe die schaltung nochmals kontrolliert. das board hatte 
ein kontaktproblem am si eingang.jetzt funktioniert es. vielen dank 
nochmals für die hilfe!!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.