Forum: Mikrocontroller und Digitale Elektronik Digitalpoti für Audio / Störgeräusche


von Maz (Gast)


Lesenswert?

Hallo,

ich steuere mit einem Arduino Nano (akutell auf einem Breadboard) ein 
MCP41100 Digitalpotenziometer zur Lautstärkeregelung an. Das 
funktioniert prinzipiell auch ganz gut, die geringe Auflösung (8 bit) 
ist kein Problem. Leider habe ich aber ein Pfeifen im Audiosignal. Da 
das Poti über ein Volumenpedal gesteuert wird, muss es leider dauerhaft 
mit dem Nano kommunizieren.

Ich habe das Poti über 100nF abgepuffert, die Spannungsversorgung der 
gesamten Schaltung ist ebenfalls gepuffert. Es gibt eine gemeinsame 
Masse.

Ich kenne mich noch nicht so gut mit digitalen Schaltungen aus, daher 
wäre ich für Tips dankbar, wie ich mich dem Problem nähern könnte. Ich 
möchte das gerne fixen, bevor ich mich an das finale Design, Layout etc. 
mache.

Vielen Dank,
Maz

von Stefan (Gast)


Lesenswert?

Schaltnetzteil dran ?

von Maz F. (mfunk)


Lesenswert?

Stefan schrieb:
> Schaltnetzteil dran ?
Nein, klassisches Trafo-Netzteil aus den 90ern...

von MWS (Gast)


Lesenswert?

Schick' nur einmalig Daten an den MCP41100, wenn das Pfeifen weg ist, 
dann kann's sein, dass falsch kommuniziert wird. Oder die Datensignale 
übersprechen auf einer Zuleitung. Oder die Kontakte auf dem Breadboard 
schwächeln.

von Maz F. (mfunk)


Lesenswert?

MWS schrieb:
> Schick' nur einmalig Daten an den MCP41100, wenn das Pfeifen weg ist,
> dann kann's sein, dass falsch kommuniziert wird. Oder die Datensignale
> übersprechen auf einer Zuleitung. Oder die Kontakte auf dem Breadboard
> schwächeln.

Erledigt, habe die Routine "digitalpotwrite" (s.u.) nur einmal aus dem 
setup()-Teil des Programms aufgerufen - das Pfeifen ist weg. Leider muss 
ich ja dauernd mit dem Poti kommunizieren, daher nützt mir das nicht so 
viel.
1
int digitalPotWrite(int pin, int value)
2
{
3
  digitalWrite(pin, LOW);   //When Slave is LOW, the MCP listens to the master
4
  SPI.transfer(0x11);
5
  SPI.transfer(value);
6
  digitalWrite(pin, HIGH);  //When Slave is HIGH, the MCP does not listen to the master
7
}

Übersprechen: Ja, kann sein, wenn ich die Kabel vom Arduino in die Nähe 
der (nicht abgeschirmten) Audio-Kabel bringe, geht das Pfeiffen ZURÜCK 
(ich hätte vermutet, es würde mehr). Soll ich für die Audio-Leitung mal 
abgeschirmte Kabel verwenden? Wenn das was nützt, würde ich dann im 
späteren Design auf der Platine kurze Verbindungen zum Digitalpoti 
vorsehen und diese orthogonal zu den digitalen Leitungen führen).

Gibt's weitere Maßnahmen (Filtern oder dergleichen?).

: Bearbeitet durch User
von Max M. (jens2001)


Lesenswert?

Maz F. schrieb:
> Leider muss
> ich ja dauernd mit dem Poti kommunizieren

Warum?
Wieviel tausend mal pro sec. ändert sich "value"?

edit:
B.t.W. Was tut
"SPI.transfer(0x11);"

: Bearbeitet durch User
von klausr (Gast)


Lesenswert?

Sorge dafür, dass sich das Poti nur max 50x pro Sekunde ändern kann.

von MWS (Gast)


Lesenswert?

Wenn nicht mehrere SPI Slaves angeschlossen sind, dann würde ich zum 
Testen den CE in Ruhe lassen, also nur einmal auf Low und nur noch Daten 
rüberschieben. Oder jeweils ein kleines Delay nach und vor dem Wechsel 
setzen.

von Joe F. (easylife)


Lesenswert?

Maz F. schrieb:
> Wenn das was nützt, würde ich dann im
> späteren Design auf der Platine kurze Verbindungen zum Digitalpoti
> vorsehen und diese orthogonal zu den digitalen Leitungen führen).

In einem guten Design sind digitale und (empfindliche) analoge Signale 
strikt getrennt.
Das MCP41100 macht es dir da auch sehr einfach, denn der Digitalteil und 
der Analogteil sind auf jeweils gegenüberliegenden IC Seiten angeordnet.
So kann man das IC genau auf der Grenze zwischen Digital- und Analogteil 
plazieren.

Freiliegende, ungeschirmte Digitalsignale sind zu vermeiden.
Entweder benutzt man hier geschirmte Kabel, oder Flachbandkabel, bei dem 
jede 2. Ader mit GND verbunden ist.
Auf dem PCB führt man die digitalen Signale idealerweise über einer GND 
Plane. Das hat schirmende Wirkung.
Am einfachsten lässt sich das mit einem 4-Lagen PCB verwirklichen.
Reduzieren der Flankensteilheit der Digitalsignale auf das Nötigste kann 
ebenfalls sehr effektiv sein (Serienwiderstand 33..1000 Ohm).

Ausserdem: unbedingt GND Schleifen vermeiden. Eine nicht unterbrochene 
GND Plane ist bei hochwertigen Designs der einfachste Weg.
Ausser man kennt sich wirklich gut aus mit sternförmigen Layouts...

> Gibt's weitere Maßnahmen (Filtern oder dergleichen?).

Wenn die Störung mal im Audioteil ist, ist guter Rat teuer.
Nachträgliches Filtern ist wenig effektiv.
Besser die Ursache der Einstreuung verhindern.

: Bearbeitet durch User
von Georg A. (georga)


Lesenswert?

Das Pfeifen kommt wohl nicht vom SPI-Clock, wenn überhaupt vom 
Übersprechen des CS. Dessen Flanken könnte man noch problemlos 
verlangsamen. Allerdings könnte es auch von sich andauernd ändernden 
Volume-Werten kommen. Schon mal probiert, immer dieselben Werte zu 
senden?

von Maz F. (mfunk)


Lesenswert?

den Slave auf LOW zu lassen hat leider nichts genützt, das Poti nimmt 
dann die Änderungen nicht an (oder ich habe etwas nicht verstanden). Das 
Heruntersetzen der Frequenz auf 50Hz war aber ein sehr guter Tip (kam 
oben ja gleich zwei mal - danke dafür). Ich versuche jetzt noch die 
Flanken zu verlangsamen (Serienwiderstand), damit es noch besser wird. 
Und dann werde ich versuchen, bei einem Wechsel des Volumens die 
Zwischenwerte zu durchlaufen, um das "Kratzen" des Potis bei argen 
Sprüngen zu minimieren.

von blubber (Gast)


Lesenswert?

Maz F. schrieb:
> um das "Kratzen" des Potis

Bist du dir sicher, das die Potis optimal für dich sind?
Die sind ja linear.
Als Lautstärkeregler wird auch gern der log Type genommen.

Ich meine mich erinnern zu können, das hier schon über für Audio 
geeignete Potis diskutiert wurde.
Die Dinger schalten dann im 'Nulldurchgang' und Muten auch beim Schalten 
...
Irgend sio etwas.

Und für die AD-Wandlung deines Pedal-Signals würde sich ein lineares 
Poti (im Pedal) glaube ich besser eignen ...

von Maz F. (mfunk)


Lesenswert?

blubber schrieb:
> Maz F. schrieb:
>> um das "Kratzen" des Potis
>
> Bist du dir sicher, das die Potis optimal für dich sind?
> Die sind ja linear.
> Als Lautstärkeregler wird auch gern der log Type genommen.
>
> Ich meine mich erinnern zu können, das hier schon über für Audio
> geeignete Potis diskutiert wurde.
> Die Dinger schalten dann im 'Nulldurchgang' und Muten auch beim Schalten
> ...
> Irgend sio etwas.
>
> Und für die AD-Wandlung deines Pedal-Signals würde sich ein lineares
> Poti (im Pedal) glaube ich besser eignen ...

Vielen Dank - bin mir nicht sicher mit den Potis, aber die hatte ich 
herumliegen und sie sind eigentlich überall zu bekommen.

Am Ende möchte ich verschiedene 100k Poti-Kennlinien damit simulieren 
(log, linear, reverse linear, ICAR), da damit letztendlich nicht nur das 
Volumen, sondern auch andere Effekte gesteuert werden sollen, die evtl. 
ander Kennlinien benötigen. Die Auflösung wird auch vor diesem 
Hintergrund kein Problem sein, da in der Schaltung drei Digitalpotis 
kaskadiert werden (...16 bit). ^(vgl. 
https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&sqi=2&ved=0ahUKEwii-f_uyIPNAhUHJsAKHcQSA6wQFggkMAA&url=http%3A%2F%2Fwww.analog.com%2Fmedia%2Fen%2Ftechnical-documentation%2Fapplication-notes%2FAN-582.pdf&usg=AFQjCNH7lFJZkgSJDBZ1nxZE6_e1Ml5AAQ&bvm=bv.123325700,d.bGs&cad=rja)

Das Expression-Pedal zur Steuerung verwendet bereits ein lineares Poti, 
die Auflösung des Arduino (10 bit) ist bereits ganz ok, evtl. versuche 
ich noch auf 12 oder 14 bit (vgl. Midi) durch oversampling oder einen 
externen DAC zu kommen.

Ich bin sehr interessiert an diesen Potis mit Nulldurchgang/zero 
crossing detection/clickless switching. Habe welche von Maxim gesehen, 
aber keine vernünftigen Bezugsquellen gefunden. Bin für jeden Hinweis 
dankbar, gerne auch 2-channel oder 4-channel, wo man so etwas (auch von 
anderen Herstellern) in D beziehen kann.

von Leo C. (rapid)


Lesenswert?

> Ich bin sehr interessiert an diesen Potis mit Nulldurchgang/zero
> crossing detection/clickless switching.

PGA2311UA und Konsorten:
http://www.ti.com/product/PGA2311/description?keyMatch=PGA2311UA&tisearch=Search-EN-Products

Leider nicht ganz billig.

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.