Das schwarze Rechteck - Klangobjektsaufbauversuchsbericht...

NicolasK

|||||
Hallo an alle,

ich habe endlich angefangen das in diesem, von mir gehijackten, fred:

viewtopic.php?f=13&t=98768

beschriebene Klangobjekt zu bauen.
Nachdem ich mir eine ganze nacht(tatsächlich ca 8stunden(incl nebenher surfen und kurz essen) um die ohren gehauen habe um ein arduino programm
zusammen zu klauen welches 6 pins mit rauschen belegt und dieses, für jeden einzeln, random an und wieder abschaltet, habe ich mit dem bau der Verstärkerschaltung begonnen.

https://cdn-reichelt.de/documents/daten ... XX_STM.pdf seite 4

An dieser stelle Herzlichen dank an Nordcore, dubmatze, hesspet und humax5600 die mich mit tips und anleitung versorgt haben.

unten seht ihr den breadboardaufbau der schaltung.


ich möchte versuchen das ganze in seinen schritten zu dokumentieren, bis am ende das große schwarze rechteck mit seinen 50 kleinen lautsprecherndie hinter stoff rauskommt.

da im andern fred interesse am fortgang (und den sich ergebenden Problemen) bekundet wurde, hab ich hier schon eins, bzw eine frage:

wenn ich den Lautsprecher (25w, 8Ω) direkt an den arduino hänge rauscht es laut und ordentlich. am ende der verstärkerschaltung krächzt und kratzt es nur.
wenn ich am poti drehe wird es nur irgendwann aus.

liegt das vielleicht am nicht stabilisierten netzteil das etwas mehr als 12V (12.38v) liefert?
oder daran dass an dem 5v anschluss auch etwas mehr, 5.24v liefert?

EDIT: das problem ist gelöst, es lag an der nicht gesetzten verbidung zu tp1.

aber jetzt gibt es einen ekligen sinus auf den speakern, wohl das hier:
viewtopic.php?f=13&t=98768&start=50#p1139526
also mehr experimente in die richtung.

hier, für die die es interessiert, der arduino code:
Code:
/* Pseudo-Random Bit Sequence Generator                     2009-11-25 */
/* Copyright (c) 2009 John Honniball, Dorkbot Bristol                  */
// also used code from and inspired by:
// SeveralThingsAtTheSameTimeRev1.ino
// by arduino-forum member: Robin2
//http://forum.arduino.cc/index.php?topic=223286.0
//___________________________________________________________________


// Konstanten:
// 5 Pins die das Rauschen ausgeben sollen
const int speakerPin2 = 2;
const int speakerPin3 = 3;
const int speakerPin4 = 4;
const int speakerPin5 = 5;
const int speakerPin6 = 6;

unsigned long int reg;

// Variablen:

int  anAus2  =  0;     //wie drüben onboardledstate
long zeitAn2 = 600;                  
long zeitAus2 = 400;     

int  anAus3  =  0;     //wie drüben onboardledstate
long zeitAn3 = 600;                  
long zeitAus3 = 400; 

int  anAus4  =  0;     //wie drüben onboardledstate
long zeitAn4 = 620;                  
long zeitAus4 = 430;

int  anAus5  =  0;     //wie drüben onboardledstate
long zeitAn5 = 500;                  
long zeitAus5 = 500;

int  anAus6  =  0;     //wie drüben onboardledstate
long zeitAn6 = 600;                  
long zeitAus6 = 400; 
/* Init Zeiten für an und Aus, sollen  behandelt werden wie in original Patch
die entsprechenden Blink konstanten */

unsigned long jetztZeit = 0;
unsigned long vorherigeRauschZeit2 = 0; 
unsigned long vorherigeRauschZeit3 = 0; 
unsigned long vorherigeRauschZeit4 = 0; 
unsigned long vorherigeRauschZeit5 = 0; 
unsigned long vorherigeRauschZeit6 = 0; 

void setup ()
{
  // Serial setup for debugging only; slows down the program far too much
  // for audible white noise
  Serial.begin (9600);

  // Connect a piezo sounder between Ground and this pin
  pinMode (speakerPin2, OUTPUT);
  pinMode (speakerPin3, OUTPUT);  
  pinMode (speakerPin4, OUTPUT);    
  pinMode (speakerPin5, OUTPUT);
  pinMode (speakerPin6, OUTPUT);
  
  // Arbitrary inital value; must not be zero
  reg = 0x55aa55aaL; 
}

void loop() 
{
  jaNein2();
  jaNein3();
  jaNein4();
  jaNein5();
  jaNein6();
  
  jetztZeit = millis();
  
  unsigned long int newr;
  unsigned char lobit;
  unsigned char b31, b29, b25, b24;
  
  // Extract four chosen bits from the 32-bit register
  b31 = (reg & (1L << 31)) >> 31;
  b29 = (reg & (1L << 29)) >> 29;
  b25 = (reg & (1L << 25)) >> 25;
  b24 = (reg & (1L << 24)) >> 24;
  
  // EXOR the four bits together
  lobit = b31 ^ b29 ^ b25 ^ b24;
  
  // Shift and incorporate new bit at bit position 0
  newr = (reg << 1) | lobit;
  
  // Replace register with new value
  reg = newr;

  // Drive speaker pin from bit 0 of 'reg'
  digitalWrite (speakerPin2, (reg & 1)*anAus2);
  digitalWrite (speakerPin3, (reg & 1)*anAus3);  
  digitalWrite (speakerPin4, (reg & 1)*anAus4);
  digitalWrite (speakerPin5, (reg & 1)*anAus5);    
  digitalWrite (speakerPin6, (reg & 1)*anAus6);  
  
  delayMicroseconds (50);
}



void jaNein2()
{
  if (anAus2 == 0) 
    {
          // wenn aus, warten bis zeit abgelaufen ist
    if (jetztZeit - vorherigeRauschZeit2 >= zeitAus2) 
    {
          // time is up, so change the state to HIGH
       anAus2 = 1;
          // and save the time when we made the change
       vorherigeRauschZeit2 += zeitAus2;
       zeitAus2 = random ( 50, 2200);
    }
  }
  else {  // i.e. if onBoardLedState is HIGH
          // if the Led is on, we must wait for the duration to expire before turning it off
    if (jetztZeit - vorherigeRauschZeit2 >= zeitAn2) 
    {
          // time is up, so change the state to LOW
       anAus2 = 0;
          // and save the time when we made the change
       vorherigeRauschZeit2 += zeitAn2;
       zeitAn2 = random ( 50, 2200);
    } 
  }
}

void jaNein3()
{
  if (anAus3 == 0) 
    {
          // wenn aus, warten bis zeit abgelaufen ist
    if (jetztZeit - vorherigeRauschZeit3 >= zeitAus3) 
    {
          // time is up, so change the state to HIGH
       anAus3 = 1;
          // and save the time when we made the change
       vorherigeRauschZeit3 += zeitAus3;
       zeitAus3 = random ( 50, 2200);
    }
  }
  else {  // i.e. if onBoardLedState is HIGH
          // if the Led is on, we must wait for the duration to expire before turning it off
    if (jetztZeit - vorherigeRauschZeit3 >= zeitAn3) 
    {
          // time is up, so change the state to LOW
       anAus3 = 0;
          // and save the time when we made the change
       vorherigeRauschZeit3 += zeitAn3;
       zeitAn3 = random ( 50, 2200);
    } 
  }
}


void jaNein4()
{
  if (anAus4 == 0) 
    {
    if (jetztZeit - vorherigeRauschZeit4 >= zeitAus4) 
    {
       anAus4 = 1;
       vorherigeRauschZeit4 += zeitAus4;
       zeitAus4 = random ( 50, 2200);
    }
  }
  else {  
    if (jetztZeit - vorherigeRauschZeit4 >= zeitAn4) 
    {
       anAus4 = 0;
       vorherigeRauschZeit4 += zeitAn4;
       zeitAn4 = random ( 50, 2200);
    } 
  }
}


void jaNein5()
{
  if (anAus5 == 0) 
    {
    if (jetztZeit - vorherigeRauschZeit5 >= zeitAus5) 
    {
       anAus5 = 1;
       vorherigeRauschZeit5 += zeitAus5;
       zeitAus5 = random ( 50, 2200);
    }
  }
  else {  
    if (jetztZeit - vorherigeRauschZeit5 >= zeitAn5) 
    {
       anAus5 = 0;
       vorherigeRauschZeit5 += zeitAn5;
       zeitAn5 = random ( 50, 2200);
    } 
  }
}


void jaNein6()
{
  if (anAus6 == 0) 
    {
    if (jetztZeit - vorherigeRauschZeit6 >= zeitAus6)
    {
       anAus6 = 1;
       vorherigeRauschZeit6 += zeitAus6;
       zeitAus6 = random ( 50, 2200);
    }
  }
  else {  
    if (jetztZeit - vorherigeRauschZeit6 >= zeitAn6) 
    {
       anAus6 = 0;
       vorherigeRauschZeit6 += zeitAn6;
       zeitAn6 = random ( 50, 2200);
    } 
  }
}
 

Anhänge

  • IMAG0832.jpg
    IMAG0832.jpg
    871,2 KB · Aufrufe: 176
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

wow...3monate her...ich weiss auch nicht wieso.

aber jetzt sitze ich wieder daran, und werde den oben beschriebenem hässlichen sinus nicht los.
ich habe versucht ein bucherot-glied/snubber (http://de.wikipedia.org/wiki/Snubber) einzubauen,
aber das macht nur alles insgesamt leise und entfernt den sinus nicht. ich habs in parallel und seriell versucht.
wahrscheinlich bekomme ich keine seriöse dimensionierung gebacken.
ich habe alle kondensatoren ausprobiert die ich zu hause habe, 10µf, 220µf, 470µf, 100nf...
mit großen und kleinen widerstandswerten. nichts ändert den sound wirklich.
ist das signa des arduino vielleicht zu stark?

auch wundere ich mich nach wie vor warum aus dem arduino direkt ein lauteres signal kommt(ohne sinus) als aus dem amp.

bitte, hilfe...

edit:
P.S.: Hier ist etwas ähnliches, darauf bin ich auch etwas neidisch: :mrgreen:
http://www.everydaylistening.com/articl ... -wall.html
 
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

Der Amp braucht am Eingang ein total kleines Signal. (Ohne nachgucken vielleicht 1:50 runtergeteilt.)

Am besten fängst du mal mit NULL Volt an: Eingang kurz schließen, dann darf auch nichts rauskommen.
Dann pröpel mal Audio rein (mp3 Player oder so... ), auch das muss raus kommen.
Nur so kannst du dir sicher sein, dass der Verstärker richtig arbeitet.

Den Verstärker gleich am Controller zu testen lässt halt immer zwei Fehlermöglichkeiten.

Der Controller liefert übrigens das "Audio-Signal" mit halber Versorgungsspannung als Offset, da muss ein Koppelkondensator rein.

8Ohm Lautsprecher direkt am Arduino-Pin überlastet diesen erheblich. Der Pin darf 20mA treiben, über einen Kondensator macht er +/2,5V, 2,5v/20mA sind 125Ohm: wenn du mit dem Pin direkt treibst, muss da also ein 120-Ohm Widerstand in Reihe, der Kondensator soll ab vielleicht 70Hz übertragen (deutlich höher kann sinnvoll sein), der hat also 22uF.
Da der Lautsprecher so praktisch von einer Stromquelle betrieben wird, wird er seine Resonanzen sehr stark betonen.

5,25 und 12,blah Volt sind kein Problem.
(Im Datenblatt stehen die erlaubten Spannungsbereiche, die funktionieren auch! )
 
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

Danke!

also: breadboard neu aufgebaut, war etwas veschwenderisch.
mp3player drangehangen, ergebnis:
Sehr leiser output.
und wenn ich einschalte dauert es etwas bis was zu hören ist.
Das volumen poti macht von
7-10 uhr: aus
10-1 uhr: rauschig leise
1-3 uhr: aus
3-5 uhr: leise aber einigermaßen klar.

ich hab die schaltung xmal geprüft.
ich weiß das kann immer noch fehlerhaft sein,aber aargh...
 
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

Poste mal den Schaltplan den du gebaut haben willst.
 
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

Der hier:
 

Anhänge

  • Bildschirmfoto 2015-04-18 um 18.24.58.png
    Bildschirmfoto 2015-04-18 um 18.24.58.png
    45,6 KB · Aufrufe: 96
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

oder das ganze:
 

Anhänge

  • verstarker_TDA7496_XX_STM.pdf
    232,1 KB · Aufrufe: 0
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

Mute und Stand-By richtig angeschlossen?
Vereinfacht ist das so auf Dauer-An:


Und die beiden GND ( 8 & 11) müssen miteinander verbunden sein.
 

Anhänge

  • amp1.png
    amp1.png
    11,2 KB · Aufrufe: 88
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

Aber 8 & 11 sind doch sound und power.
dann wären ja alle gnd miteinander verbunden?
warum wird das hier dann getrennt aufgeführt?

aber ok, ich mach das mal.


Edit:YAY! ergebnis:
out 12 machtwas er soll und zwar laut!
out 14 macht immernoch was ich oben beschrieben habe, aber viel lauter.wenigstens das :mrgreen:

edit2: um den offset kümmere ich mich wenn der verstärker macht was er soll.
 
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

Wenn du C2 und C3 drin hast (die beiden 470nF) , dann killen die den Offset.
 
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

ja hab ich, sind allerdings auf deine empfehlung im andern thread 100nf.
 
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

jetzt funktioniert alles wie oben beschrieben, auf dem guten kanal ist sogar der sinus weg.
auf dem schlechten auch, wenn ich laut genug mache.

Eine Frage hätte ich aber noch :floet: :
Wenn pins 11 und 8 verbunden sind heißt das ja dass die im Schaltplan getrennt aufgeführten pw_gnd und s_gnd eins sind, oder?
Heißt das dann dass ich einfach ganz am anfan den gnd vom arduino an der des powers schließe, was ja eh nötig ist wenn ich den arduino nicht per USB
powern will?

und noch was:
Reicht ein 12v 1400mA netzteil?

EDIT:
Vielen Dank nochmal!
 
Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

Die Massen sind getrennt, weil sie nur an einer Stelle miteinander verbunden sein sollen: über den Power-Ground fließt der große Lautsprecherstrom zurück. Wenn der auf der Masseleiterbahn von Eingang deutliche Spannungsabfälle macht, dann gibt das Probleme.

12V 1.4A macht knapp 17W, da kann deine Schaltung bei vollem Pegel und mehreren Endstufen sicher mehr brauchen, im Normalbetrieb wird das aber weit weniger sein. Der kritische Fall ist dann nur das Einschalten, wenn das klappt, dann ist es dick genug.
 


Zurück
Oben