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
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.
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
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
Sorge dafür, dass sich das Poti nur max 50x pro Sekunde ändern kann.
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.
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
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?
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.
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 ...
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.
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.