Guten Tag zusammen, ich habe mal wieder ein problem =) Ich möchte den ADC eines ATTINY84 konfigurieren, sodass eine LED an PA2 angeht, bzw irgendwie action macht^^, wenn die Mikrofonkapsel etwas empfängt. (die LED ist im schaltplan als kondensator dargestellt, nicht beirren lassen hehe). dafür habe ich mir eine verschaltung aus dem internet gesucht, bei der ich hoffe dass sie für meine anwendung ebenfalls funktioniert. verwendete Bauteile Mikrofonkapsel EM-6 von http://www.conrad.de/ce/de/product/302147/MIKROFONKAPSEL-EM6/SHOP_AREA_17390&promotionareaSearchDetail=005 NPN transistor MMBT4401: http://www.fairchildsemi.com/ds/2N/2N4401.pdf als erstes stellt sich natürlich die frage, ob die schaltung überhaupt funktioniert. wenn dem so ist, wie muss ich den ADC7 (PA7) konfigurieren? meine bisherigen überlegungen: ADCSRA = (1 << ADEN) | (1 << ADPS1) | (1 << ADPS0); //enable ADC, set prescaler to 8 ADMUX = 7; bisher habe ich aber noch keine ergebnisse erzielt. Grüße Martin
hmmm habe es jetzt hinbekommen, dass wenn ich klatasche und schnipse sich etwas an der LED tut.... aber wenn musik läuft reagiert der irgendwie net. uint16_t get_adc() { uint16_t value; // warm up the ADC, discard the first conversion ADCSRA |= (1 << ADSC); while (ADCSRA & (1 << ADSC)); value = ADCW; ADCSRA |= (1 << ADSC); // start single conversion while (ADCSRA & (1 << ADSC)); // wait until conversion is done return ADCW; } int main( void ) { ................(codeteile fehlen) ADMUX = 7; //VCC used as analog reference, disconnected from PA0 (AREF), ADC7 enable ADCSRA |= (1 << ADEN) | // enable ADC (1 << ADPS1) | (1 << ADPS0); // set prescaler to 8 for (;;) { if (get_adc() > 250) { Ledport |= (1 << LED_PIN); else Ledport &=~(1 << LED_PIN); } } } wie kann ich denn zum beispiel sagen, dass bei einer bestimmten frequenz ein bestimmtes event passiert?
Du hast das Problem, dass der Ruhepegel am Kollektor nicht genau bekannt ist und schwanken kann (hängt von der Verstärkung des Transistors ab). Das Nutzsignal ist ja eine Wechselspannung, mit der der Ruhepegel sich ändert. Daher weiß die SW nicht, wie groß Dein Nutzsignal ist, und Dein Vergleich mit 250 ergibt eher ein Zufallsergebnis. Beim Klatschen hat es gereicht, weil das ein kurzer, hoher Impuls ist. "Normale" Musik reicht da wohl eben nicht. Lösungen: 1. Ruhepegel per SW ermitteln: mehrere Messungen machen und Mittelwert bilden 2. Ausgang kapazitiv entkoppeln: C zwischen Kollektor und ADC-Eingang + (hochohmiger) Spannungsteiler zw.+5V und GND an den Eingang, um eine bekannten Ruhepegel stabil festzulegen (am besten auf halben Wert der Referenzspannung). Die SW vergleicht dann mit dem Wert "Ruhepegel + (oder-) Schwelle". Gruß Dietrich
hello =) danke für deine auskunft. das klingt ja kompliziert... =) muss ich mir mal genauer anschauen. allerdings gibt es auf der homepage von der ich diese idee habe ein video, wo bei selber verschaltung eine interaktion mit musik möglich ist.... http://tinkerlog.com/2007/05/20/cheap-sound-sensor-for-avr/ grüße
Oder schmeiss den Transistor raus und bau was gescheitets ein mit einem OP. Den kannst du dann genau auf die haelfte der Versorgungsspannung einstellen. Stichwort: nichtinvertierende OP Schaltung.
ahh ha =) und wenn ich den dann auf die hälfte der versorgungsspannung geregelt habe, kann ich dann die eizenlnen frequenzbereiche grob ansteuern, so wie eine art equilizer ? das wäre nämlich ziemlich cool dass ich z.b sagen könnte bei niedrigen frequenzen kommt der effekt, bei hohen der....? kennt jemand gute beispiele? vlt wurde so etwas ja schonmal gebaut =) grüße
Martin K. schrieb: > ahh ha =) > und wenn ich den dann auf die hälfte der versorgungsspannung geregelt > habe, kann ich dann die eizenlnen frequenzbereiche grob ansteuern, so > wie eine art equilizer ? möglich ist es. Aber nicht so wie du dir das vorstellst. Aus deinem ADC kommen ja keine Frequenzen raus, sondern Spannungswerte, die sich mit der Zeit ändern (schnell ändern). Die Frequenz bzw. die Mischung der im Signal enthaltenen Frequenzen steckt in dieser zeitlichen Änderung. Und die kann man rausholen. Zb mit einer FFT. > kennt jemand gute beispiele? vlt wurde so etwas ja schonmal gebaut =) wurde es. Geh in die Codesammlung und such nach [C] AVR-Lichtorgel per FFT MEGA8 32 644
Martin K. schrieb: > allerdings gibt es auf der homepage von der ich diese idee habe ein > video, wo bei selber verschaltung eine interaktion mit musik möglich > ist.... > > http://tinkerlog.com/2007/05/20/cheap-sound-sensor-for-avr/ Ich vermute, da wurde der Vergleichswert (dort 180) durch ausprobieren ermittelt. Du kannst allerdings auch die (Ruhe-) Spannung mit einem (hochohmigen) Multimeter messen und daraus Deinen Vergleichswert errechnen. Aber so richtig toll ist das nicht, da das z.B. auch Temperaturabhängig ist. Gruß Dietrich
hmmmm alsooo kriegt denn mein ATTINY84 die FFT gebacken....? oder muss ich da auf atmega wechseln? grüße
Martin K. schrieb: > hmmmm alsooo kriegt denn mein ATTINY84 die FFT gebacken....? > oder muss ich da auf atmega wechseln? Wenn es sich nur um 3 Frequenzbaender handelt wuerde ich dir 3 Digitale Filter vorschlagen. Bedenke aber das du mindestens doppelt so hoch abtasten muss wie deine hoechste Signalfrequenz. Wie hoch willst du denn in der Frequenz gehen?
Martin K. schrieb: > hmmm naja so 14k wäre schon ganz nett =) Da wird es aber langsam eng. Das wuerde mindestens 28KHz Abtastrate bedeuten. Mit maximaler Aufloesung (10Bit) kann er das aber nicht. Auch sollte noch etwas Rechenzeit ueberbleiben fuer die Filterberechnung. Du must ja wenn du 3 Frequenzbaender trennen willst ja 3 Filter aufbauen (LOW,BAND,HIGH) nach den Filtern musst du noch die Amplitude (Huellkurve) des Signales bestimmen also eine Gleichrichtung vornehmen.
hmmmm ist die variante mit der verstärkerschaltung nicht besser...? dann mit der FFT von elm chan z.B. auswerten? sonst müsst ich ja frei filter in meiner schaltung packen. Da ist dann die frage ob die FFT funktion auf dem tiny läuft, da sie für atmega optimiert ist.... Außerdem habe ich keinen plan von verstärkern, welchen nimmt man denn da am besten.... ^^? grüße
ich habe im übrigen noch folgende verschaltung im anhang entdeckt, die auch grob Ihren job tut. ich schätze mal nicht so gut wie mit OP's aber .... okay =) hier verstehe ich nicht, auf welchen wert der Regelbare Widerstand eingestellt werden sollte, und wie man die widerstandswerte ausmacht... vlt kann jemand dazu etwas sagen? =) grüße
Martin K. schrieb: > Außerdem habe ich keinen plan von verstärkern, welchen nimmt man denn da > am besten.... ^^? Fuer deine Zwecke sollte es ein TS912/Ts914 tun. Martin K. schrieb: > ich habe im übrigen noch folgende verschaltung im anhang entdeckt, > die auch grob Ihren job tut. ich schätze mal nicht so gut wie mit OP's > aber .... okay =) > Der die Schaltung entwickelt hat , hat von Transistorverstaerker keine Ahnung. > hier verstehe ich nicht, auf welchen wert der Regelbare Widerstand > eingestellt werden sollte, und wie man die widerstandswerte ausmacht... > vlt kann jemand dazu etwas sagen? =) Da bei dieser Schaltung werder der Arbeitpunkt noch die Verstaerkung der Schaltung definiert ist und von den Transistorparameter sehr stark abhaengig ist kann man das nicht sagen. Die thermische Stabilitaet des Arbeitspunktes ist bei dieser Schaltung nicht gegeben weil sie keine Gegenkopplung hat. Entwerder Emitterwiderstand mit vorsehen oder Gegenkopplung Kollektor nach Emitter. Verbesserte Version: --------+-----------+--- VCC | | R1 RC | | | +--- Ausgang | | | C --CK----+--------B NPN | E R2 | | +---R3--- | | | | RE CE | | | GND GND GND Als ersters geben wir mal einen Kollektorstrom vor also: IC = 2mA , VCC = 5V An RE sollte so rund 0.5 .. 1V abfallen zur Temperaturstabilisierung. Und an RC sollte moeglichst eine hohe Wechselspannung abfallen. Dann koennen wir mal anfangen zu rechnen: RE = URE/RE = 0.5V/2mA = 250 Ohm Der Rest der Spannung bis VCC soll sich fuer hoechste Aussteuerbarkeit gleichmaessig auf CE und RC verteilen Also: URC = (VCC-URE)/2 = (5V-0.5)/2 = 2.25V Jetzt koennen wir RC bestimmen: RC = URC/IC = 1125 Ohm Der Spannungsabfall an R2 ergibt sich damit: UR2 = URE+UBE = 0.5V+0.7V = 1.2V und an R1 UR1 = VCC - UR2 = 3.8V Der Basisstrom ergibt sich zu: IB = IC / B wir nehmen ein B von 300 an (BC547C) dann wird IB = 6.6uA Damit der Spannungsteiler aus R1 u. R2 unabhaengig vom Basisstrom wird der ja auf Grund der hohen Streuung von B nicht eindeutig bestimmt werden kann waehlen wir ihn ca. 5 .. 10x Groesser als IB. Fuer die weitere Rechnung setzen wir ihn auf 5x IB fest. Also ergibt sich fuer IR2 = IB * 5 und fuer R1 = IB*6 *6 deshalb neben dem Querstrom fliesst ja noch der Basisstrom ueber ihm. Jetzt koennen wir R1,R2 berechnen. R1 = UR1/(IB*6) = 95KOhm R2 = UR2/(IB*5) = 36KOhm Damit ist die DC Einstellung des Transistors abgeschlossen. Jetzt berechnen wir die Signalverstaerkung ohne R3 des Transistors. Das ergibt sich aus dem Verhaeltnis von Kollektor zu Emitterimpedanz. Im Kollektor liegt ohne Last ein Widerstand von 1125 Ohm Im Emitter liegt ein Widerstand von RE + re. re ist hier der differentielle Emitterwiderstand. Er wird folgendermassen berechnet: re = UT / IC UT ist die sogenannte Temperaturspannung mit 25mV bei Raumtemperatur Damit wird re = 12.5 Ohm Sie ist Temperatur und Stromabhaengig. Damit ergibt sich eine Versaterkung von V = 1125Ohm / (250 + 12.5) = 4.28 fach. Das heist fuer die Temperaturstabilitaet ergibt sich: Die UBE Spannung sinkt mit 2mV/K das mal 4fach. Die Spannung am Kollkektor aendert sich mit 8mV/K Waere der RE jetzt nicht drin wuerde der Transistor nicht gegengekoppelt und wuerde mit einer hoeheren Verstaerkung arbeiten. V = 1125 /12.5 = 90. Das heist in diesem Fall die Kollektorspannung aendert sich mit 180mV/K Das ist wesentlich empfindlicher. Will man jetzt mehr Verstaerkung als die 4.28 haben und trotzdem die Stabilitaet behalten kann man den RE jetzt Wechselspannungsmaessig ueberbruecken. Das mach in diesem Fall CE. Man koennte ihn jetzt so gross machen das sein Wechselstromwiderstand kleiner als 12.5 Ohm wird dann wuerde die Stufenverstaerkung auf den Wert von 90 hoch gegen. Allerdings steigt in diesem Fall auch die Verzerrungen mit an. Auch waere die Verstaerkung weiterhin vom Transistorwert UT abhaengig. Also was macht man. Einen Widerstand (R3) in Reihe zum CE. Wenn wir jetzt eine Verstaerkung von 10 haben wollen koennen wir rechnen: RE' = RC / 10 = 1125 Ohm / 10 = 112.5Ohm Davon ziehen wir re ab = 112.5 - 12.5 = 100 Ohm 100 Ohm muss jetzt die Parallelschaltung von RE + R3 haben. das ergibt fuer R3 = 166 Ohm Und fuer CE ergibt sich CE = 1/(2*pi*fu*R3) fu = untere Grenzfrequenz (ca.30Hz) CE = 32uF Damit ist die Stufe dimensioniert.
uiuiui helmut.... krasse sache. das nenn ich mal dokumentiert =) vielen dank. dann werd ich das mal so aufbauen und berichten, wa ... =) dankeschön für deine hilfe =) noch eine frage.... im datenblatt ist ja ein shematic gezeichnet, http://www.produktinfo.conrad.com/datenblaetter/300000-324999/302147-da-01-en-Mikrofonkapsel_EM6.pdf muss ich das mit aufbauen, und dann den ausgang auf --CK--- führen, und den ausgang aus deiner schaltung in den uC ?
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.