PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 4in2 AMP-Umschalter mit Arduino



EoA
23.02.2018, 14:31
Hallo,
dann will ich mal mein erstes Posting machen....

Ich habe in meiner Bastelbude oft bis zu 4 (leider manchmal mehr) Verstärker/Receiver stehen. Teils zu sammeln, teils zum ausprobieren.

Für ein anderes Projekt habe ich den Arduino Nano entdeckt und passende Relais waren für einen Umschalter auch schnell in china gefunden. ein OLED Display soll das ganze abrunden.

Hier der Versuchsaufbau:

https://s17.postimg.org/61bpd7mvj/IMG_0214.jpg (https://postimg.org/image/bpi043r7v/)

https://s17.postimg.org/8ingki1n3/IMG_0215.jpg (https://postimg.org/image/rnqpu9gaz/)


Ich möchte später am Gehäuse nur drei Schalter/Taster und das Display haben. Keine LED und kein schnickschnack.

Es gibt also einen Taster für "vor" und einen Taster für "zurück" um die Amps umzuschalten. Der dritte Schalter (rastender Taster) schaltet zwischen Lautsprecher-Ausgang 1 und 2 um.

Hier mal das Schaltbild:
https://s13.postimg.org/k8dcrevlj/LS-_Umsch4in2.png (https://postimg.org/image/igkdwic8j/)

Zum Code für den Arduino später mehr.

arlecchino
23.02.2018, 14:42
Hi EoA,

GENIAL!
Genau soetwas steht auch noch auf meiner ToDo liste.
Ich denke, man kann das Teil auch "rückwärts" verwenden und 4 Paar Lautsprecher an zwei Amps verwalten!?
Die gaanz motivierten Bastler könnten die Relais "doppelt auslegen" und die Quelle gleich mitumschalten - so könnte man auch Für jeden der 4 Kanäle ein eigenes Poti mit einschleifen und wirkungsgradbedingte Pegelunterschiede ausgleichen.
Das Teil wäre dann perfekt für Direkt- / Blindvergleiche geeignet.

Ich lese auf jeden Fall schon mal interessiert mit! =)

Gruß
M
PS: Willkommen im Forum

Olaf_HH
23.02.2018, 15:53
Hi,
Hast du bedacht, das alle! Ausgangsleitungen der amps gegeneinander potential frei sein muessen, du also alle plus und minus leitungen getrennt schalten musst?
Die blauen relais wuerde ich fuer diese Anwendung nochmal ueberdenken.
Idee finde ich aber sehr gut.

EoA
23.02.2018, 16:02
Hi,
Hast du bedacht, das alle! Ausgangsleitungen der amps gegeneinander potential frei sein muessen, du also alle plus und minus leitungen getrennt schalten musst?
Die blauen relais wuerde ich fuer diese Anwendung nochmal ueberdenken.
Idee finde ich aber sehr gut.

Der Blick auf den Schaltplan beantwortet deine Frage. Es wird IMMER plus und minus geschaltet.

Die blauen Relais haben sich bei anderen bisher bewährt.

Olaf_HH
23.02.2018, 16:06
Hi, danke. Hab ich aufm tablet wohl falsch gesehen.
Bei kleinleistungen sind die auch gut. Setzt n freund in industriellen schaltungen ein. Bei hoeheren schaltstroemen hat er die wegen der Langzeitqualitaet diese dann nicht mehr fuer lastschaltungen verwendet. Die kontakte haben nach 2 Jahen einen hoeheren wiederstand gehabt.

EoA
23.02.2018, 16:15
Hi, danke. Hab ich aufm tablet wohl falsch gesehen.
Bei kleinleistungen sind die auch gut. Setzt n freund in industriellen schaltungen ein. Bei hoeheren schaltstroemen hat er die wegen der Langzeitqualitaet diese dann nicht mehr fuer lastschaltungen verwendet. Die kontakte haben nach 2 Jahen einen hoeheren wiederstand gehabt.

Ja das mag sein, werde ich dann mal messtechnisch begleiten. Zum Glück kostet so eine 8-Relais-Platine in China nur ca. 8-10€, was einen Austausch nach 2 Jahren problemlos macht. :prost:

Ich persönlich würde nicht unter hoher Last den Verstärker umschalten, schon meinen Boxen zu liebe...

arlecchino
23.02.2018, 19:51
Hi Jungs,
Ich hab mit genau solch einer Relaisplatine (allerdings mit nur einem Relais) mal einen "Mühlentimer" für meine Espressomühle gebaut. Das Relais schaltet dort seit gut zwei Jahren jeden Tag zwischen 5 und 10 Mal einen 800W Elektromotor (der jedes Mal gegen "verklemmte" Kaffeebohnen anläuft) ein und nach vorberechneten 2-4 Sekunden wieder aus.
Bislang tut das Chinabrett dies nach bestimmt dreitausend Schaltzyklen noch immer ohne einen Mucks.
Ich war zunächst auch skeptisch, hab es dann aber bei den lächerlichen Preisen einfach mal probiert ("Es steht ja 10A druff") und ein zweites Board auf Vorrat gekauft (mit dem ich dann nen Schütz geschalten hätte).


Wenn wir mal großzügig mit 10W in 4 Ohm rechnen, kommen wir auf grob eineinhalb Ampere. Darüber lacht selbst das Billigrelais ;-)

Du steuerst die Relais über ein IC an, oder? Mit dem Arduino Mega müsste das ja auch noch "direkt" gehen, der hat ja >30 Digitalausgänge.

Edit: Was vielleicht nicht ganz verkehrt wäre, gerade wenn du viele Amps testest: In den "Sternpunkt" könnte man zentral noch einen Lautsprecherschutz zwischenschalten...

Gruß

EoA
24.02.2018, 00:39
Ich steuer die Relais direkt über den Arduino. Sieht man doch schön im Schaltplan, der den Arduino beinhaltet :D

Lautsprecherschutz? Was genau meinst du damit? Es wird immer erst freigeschaltet und dann die andere Quelle zugeschaltet - sieht man später im Code.

Nicht benutzte Eingänge werden über einen Lastwiderstand (8 Ohm 50W oder 100W) abgeschlossen um auch Röhrenverstärker zu schützen.

Zur Haltbarkeit der Relais habe ich ähnliche Aussagen. Danke für die Bestätigung.

arlecchino
24.02.2018, 22:18
:D Wer die Augen auf macht sieht mehr.

Mit Lautsprecherschutz mein ich ein Modul wie dieses hier (https://www.velleman.eu/products/view/?id=9233&lang=de&country=ch) - das trennt die Verbindung wenn der Amp Probleme macht und Gleichspannung anliegt.
Einschaltverzögerung wäre jetzt weniger relevant, das ist bei ner Arduino-Lösung ja nur eine zusätzliche Zeile Code ;-)

EoA
27.02.2018, 19:04
Hier mal ein Teil des Code:



#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2


#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif


int buttonstatevor = 0;
int buttonstaterueck = 0;
int buttonstateoutput = 0;
int amp1 = 6; //digital output pin6
int amp2 = 7; //digital output pin7
int amp3 = 8; //digital output pin8
int amp4 = 9; //digital output pin9
int output1 = 10; //digital output pin 10
int counter =0; //counter auf 0 setzen
//int out =0;
String LS1,ampdisplay;

void setup()

{
Serial.begin(9600);

// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32)
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("No Amp!");
display.println("Push Btn!");
display.display();
pinMode(amp1, OUTPUT);
pinMode(amp2, OUTPUT);
pinMode(amp3, OUTPUT);
pinMode(amp4, OUTPUT);
pinMode(output1, OUTPUT);
pinMode (2, INPUT); //Taster vorwärts
pinMode (3, INPUT); // Taster rückwärts
pinMode (4, INPUT); // Taster Lautsprecherumschalter
digitalWrite(amp1,HIGH); //Relais abgefallen
digitalWrite(amp2,HIGH); //Relais abgefallen
digitalWrite(amp3,HIGH); //Relais abgefallen
digitalWrite(amp4,HIGH); //Relais abgefallen
digitalWrite(output1,HIGH); //Ausgang Relais abgefallen
LS1 = String("LS1");
ampdisplay = String("No Amp!");

}


ausserhalb des Loops die Funktion um etwas in das Display zu schreiben:



void displaywrite (String ampdisplay, String LS1) {
display.clearDisplay();
display.setCursor(0,0);
display.println(ampdisplay);
display.println(LS1);
display.display();
}


Und noch der Code für den "Vorwärtstaster" im Loop



void loop()

{

buttonstatevor = digitalRead(2); //Taster einlesen (vor)
buttonstaterueck = digitalRead(3); //Taste einlesen (zurück)
buttonstateoutput = digitalRead(4); //Lautsprecher Auswahltaste einlesen

if (buttonstateoutput == HIGH) {

LS1=String("LS2");
digitalWrite(output1, LOW);
displaywrite (ampdisplay,LS1);
delay(100);
}
else
{
digitalWrite(output1, HIGH);
LS1=String("LS1");
displaywrite (ampdisplay,LS1);
delay(100);

} //Auf ampdisplay umschalten


if (buttonstatevor == HIGH) {

if (counter == 0)
{
digitalWrite(amp4, HIGH); //amp4 ausschalten
digitalWrite(amp3, HIGH); //amp3 ausschalten
digitalWrite(amp2, HIGH); //amp4 ausschalten
delay(300);
digitalWrite(amp1, LOW); //amp1 einschalten
Serial.println("AMP1 eingeschaltet");//Serielle Debugmeldung
ampdisplay=String("Amp 1");
displaywrite (ampdisplay,LS1);
exit;
}

if (counter == 1)
{
digitalWrite(amp4, HIGH); //amp4 ausschalten
digitalWrite(amp3, HIGH); //amp3 ausschalten
digitalWrite(amp1, HIGH); //amp1 ausschalten
delay (300);
digitalWrite(amp2, LOW); //AMP2 einschalten
Serial.println("AMP2 eingeschaltet");
ampdisplay=String("Amp 2");
displaywrite (ampdisplay,LS1);
exit;
}

if (counter == 2)
{
digitalWrite(amp4, HIGH); //amp4 auschalten
digitalWrite(amp1, HIGH); //amp1 auschalten
digitalWrite(amp2, HIGH); //amp2 auschalten
delay(300);
digitalWrite(amp3, LOW); //amp3 einschalten
Serial.println("AMP3 eingeschaltet");
ampdisplay=String("Amp 3");
displaywrite (ampdisplay,LS1);
exit;
}

if (counter == 3)
{
digitalWrite(amp3, HIGH); //amp3 auschalten
digitalWrite(amp1, HIGH); //amp1 auschalten
digitalWrite(amp2, HIGH); //amp2 auschalten
delay(300);
digitalWrite(amp4, LOW); //amp4 einschalten
Serial.println("AMP4 eingeschaltet");
ampdisplay=String("Amp 4");
displaywrite (ampdisplay,LS1);
exit;
}

if (counter == 4)
{
digitalWrite(amp1, HIGH); //amp1 auschalten
digitalWrite(amp2, HIGH); //amp2 auschalten
digitalWrite(amp3, HIGH); //amp3 auschalten
digitalWrite(amp4, HIGH); //amp4 auschalten
Serial.println("alles aus");
ampdisplay=String("No Amp!");
displaywrite (ampdisplay,LS1);
exit;
}
delay (1900);
counter++;
if (counter > 4) counter = 0;
Serial.println(counter); //Debug counter state
}


Rückwärts kann man sich dann vielleicht denken - falls nicht einfach nachfragen.

Viel Spaß beim Nachbauen oder Weiterentwickeln.

nr12
12.03.2018, 11:31
Hallo zusammen,

da klinke ich mich mal in die Diskussion ein.
Sowas liegt auch auf meinem Basteltisch.

Hab mir extra einen analogen Sat-Receiver dafür gekauft.
Nur als Gehäuse. Da ist genügend Platz drin, nicht so klein wie die aktuellen Gehäuse. Vor allem an der Rückwand des Gehäuses ist genug Platz für vieeele Anschlüsse.

Mein Plan:
Eine Quelle (Cinch-Eingang), 4 Ausgänge (Cinch), an diese werden bis zu 4 DUTs angeschlossen (Endstufen), Endstufenausgänge dann wieder über Polklemmen zurück in dieses Gerät und dann werden diese Ausgänge auf den einen Lautsprecher geschaltet.
Oder Eine Endstufe, deren Ausgang wieder hier herein und auf bis zu 4 Lautsprecher geschaltet.

Das ganze fernbedienbar, Arduino-Beispiel code gibt es ja für sowas.
Mit LC-Display. Auch einfach über Arduino machbar.

Und vor Allem:
Ein PGA2311 als Vorverstärker ist mit dabei. Damit können einzelnen DUTs korrekt ausgepegelt werden, damit ja keiner lauter ist als der Andere, sonst gewinnt der lauteste.
Lautstärke wird dann immer beim Umschalten automatisch angepasst.
2311 hat auch den Vorteil, dass der "bis zu 660 Ohm Impedanz" ansteuern kann, der kann also alle 4 Endstufen treiben, das muss nicht extra umgeschaltet werden.

Und mit zufälliger Zuordnung der Probanden. Der Arduino merkt sich in jeder Runde, welches Gerät aktiv war und nach Abschluss des Tests wird das Protokoll über das Display durchgescrollt oder per seriellem Interface an einen Rechner gesendet.

D.h. man kann alleine einen Blindtest durchführen.
Arduino Code hab ich mir aus Beispielen zusammengesucht. Ist gerade eine große Baustelle.

EoA, mit welchem Tool hast du denn das Schaltbild gezeichnet?

Viele Grüße

Ulf

EoA
12.03.2018, 15:11
Hi Ulf,

mit Eagle von Autodesk - für den privaten Einzelanwender kostenlos. Libaries für den Arduino findest du im Internet.

nr12
12.03.2018, 20:11
Ah, DAS ist Eagle.
Ja, damit sollte ich mich endlich mal beschäftigen.

Ok, danke.

EoA
12.04.2018, 18:57
So fertig... Projektende. Falls noch jemand am Quellcode interessiert ist kann ich ihn hier posten. Bis neulich.

https://i.imgur.com/3tjRuIYh.jpg (https://i.imgur.com/3tjRuIY.jpg)

https://i.imgur.com/ombxx5Nh.jpg (https://i.imgur.com/ombxx5N.jpg)

https://i.imgur.com/x3fW85Yh.jpg (https://i.imgur.com/x3fW85Y.jpg)

https://i.imgur.com/0UoVRgih.jpg (https://i.imgur.com/0UoVRgi.jpg)

https://i.imgur.com/toWEbXLh.jpg (https://i.imgur.com/toWEbXL.jpg)

https://i.imgur.com/ilm1YDoh.jpg (https://i.imgur.com/ilm1YDo.jpg)

https://i.imgur.com/U6G8UmMh.jpg (https://i.imgur.com/U6G8UmM.jpg)

claus1968
12.04.2018, 19:05
Ich bin begeistert und möchte auch so etwas bauen.
Code wäre super
Viele Grüße und viel Freude damit
Claus

EoA
12.04.2018, 20:57
Noch ein paar Bilder vom Projekt

4263242633426344263542636

EoA
12.04.2018, 21:00
Und noch ein paar....

42637426384263942640