Das schwarze Rechteck - Klangobjektsaufbauversuchsbericht...

Dieses Thema im Forum "Lötkunst" wurde erstellt von NicolasK, 25. Januar 2015.

  1. 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:

  2. Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

    Schick. :supi:
     
  3. 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
     
  4. Nоrdcore

    Nоrdcore deaktiviert

    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! )
     
  5. 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...
     
  6. Nоrdcore

    Nоrdcore deaktiviert

    Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

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

    Der hier:
     

    Anhänge:

  8. Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

    oder das ganze:
     

    Anhänge:

  9. Nоrdcore

    Nоrdcore deaktiviert

    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
      Dateigröße:
      14,6 KB
      Aufrufe:
      87
  10. 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.
     
  11. Nоrdcore

    Nоrdcore deaktiviert

    Re: Das schwarze Rechteck - Klangobjektsaufbauversuchsberich

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

    ja hab ich, sind allerdings auf deine empfehlung im andern thread 100nf.
     
  13. 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!
     
  14. Nоrdcore

    Nоrdcore deaktiviert

    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.
     

Diese Seite empfehlen