-         

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 32

Thema: Atmel->Musik->Funkuhr

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.02.2007
    Beiträge
    30

    Atmel->Musik->Funkuhr

    Anzeige

    Sodelle, ich hab mir da mal eine Lösung überlegt um Musik aufzuzeichnen und dies sieht bei mir dann folgendermasen aus:

    Ein Atmel hat eine Taktfrequenz.
    Nun leistet das Programm im Atmel seine Dienste "das Programm im Flash Rom".

    Diese Dienste sehen dann folgendermasen aus:
    Spannungswerte werden von einem Mikrofon über einen A/D Wandler abgefragt.

    Dieser A/D Wandler wandelt dann die analogen Spannungswerte in digitale Werte um u. speichert diese Werte anschliessend in einen Arbeitsspeicher ab.

    Nun wird nachdem dieser Digitalwert in einen Arbeitsspeicher gespeichert wurde ein Zeitstempel gesetzt.
    Dieser Zeitstempel stammt von Arbeitsregister.
    Und dieser Zeitstempel kommt wiederum von einer Funkuhr.

    Nachdem ich die Musikaufzeichnung beendet habe, werde ich alle Digitalwerte aus dem Arbeitsspeicher laden u. beim PC auswerten.

    Auswerten bedeutet: Die Spannungswerte mit ihrem Zeitstempel auseinanderknüpfen.

    Nun weiss ich, wie oft diese Spannungswerte in einer Sekunde aufgezeichnet wurden.
    Da man das nun weiss, dann weiss man auch wie schnell diese Spannungswerte verarbeitet werden müssen, damit die Musik auch normal abgespielt werden kann.

    Nun werden diese digitalen Spannungswerte zu einem D/A Wandler geschickt.

    Falls nun die Töne stärker sein sollen, so werde ich über Schieberegister "Ausgangserweiterungen" die Stromstärke der Spannungen erhöhen.

    Nun wandern diese Töne "unterschiedliche Spannungen u. Stromstärken"
    zu Lautsprechern.

    Sind die Stromstärken der Spannungen hoch, so erklingen die Töne einem "logisch gesehen" auch stärker.


    Wenn ich nun die Musik schneller abspielen will, so muss ich die Taktfrequenz erhöhen.
    Wenn ich nun die Musik langsamer abspielen will, so muss ich die Taktfrequenz erniedrigen.


    Wie findet ihr diese Überlegung?

    Welchen Atmega würdet ihr mir hier empfehlen u. sind die internen A/D Wandler überhaupt hierfür geeignet?

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Die Überlegungen sind interessant.
    Woran ich nur zweifle ist, ob du genug speicher mit einem ATMega hast, intern und extern. Du hast ja extrem viele Daten, die du speicherst.
    der interne ADC wird zu langsam sein. Die Geschwindigkeit kannst du für Musik vergessen. Wie es mit externen ADCs ist weiß ich nicht. Müsstest du dich mal bei Analogdevice (oder wie auch immer die heißen) informieren. Die haben recht schnelle ADC für den I2C Bus.

    jon
    Nice to be back after two years
    www.roboterfreak.de

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    Viel zu kompliziert.
    Schon mal was von Samplingrate gehört?

    Es reicht doch wenn man weis wie schnell ein Signal abgetastet wird, üblicherweise 44000 mal pro Sekunde (in Cd-Qualität) und das mit einer Auflösung von 16-Bit.

    Abgesehen davon dass die meisten AVR's nur 10-Bit auflösen, was meiner Meinung erst mal genug wäre, ist da noch das Speicherproblem. Wohin mit all den Daten? und das für ein ganzen Musik-Stück.

    Ein EPROM reicht da nicht. Ein SD-MMC muss es schon sein,
    aber für den Zugrioff auf so ein Medium braucht es auch wieder ein paar Takte, welche dann von der Sampling-Rate abgehen.

    Nicht so einfach.

    Jetzt hast du das ganze gerümpel vielleicht im AVR, das muss aber auch wieder raus und zwar mir der gleichen Bi-Auflösung. Ein AVR bietet aber keinen DA-Wandler, der muss also extern aufgebaut werden.

    So und was es mit dem Lautsprecher angeht, das überlassen wir mal schön einem guten altmodischen analogen Verstärker (IC)

    Also mit einem AVR alleine geht das nicht.

    Just 4 Info: ich hänge gerade an einem MP3 Projekt mit AVR.


    EDIT:
    Der Verein heisst Anolog Devices. Mit einem AD7574 (8-Bit) hatte ich mal einen Sampler für meinen Amiga gebastelt, das war schon ganz nett. Ausgang war allerdings ein 8-Bi parallel Bus (wurde am Printer-Port angeschlossen).

    Nochmal Edit:
    Simmt die maximale Sampling-Rate des internen AD-Wandlers habe ich noch garnicht berücksichtigt. Außerdem ist das Samplingverfahren von Interresse (für Audio wird normalerweise Sample & Hold Verfahren angewendet).
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Wäre das vielleicht etwas für einen ARM?

    jon
    Nice to be back after two years
    www.roboterfreak.de

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    03.02.2007
    Beiträge
    30
    Ich hatte gedacht, dass ich diese Daten in Arbeitsspeicher ablege.

    Hab da mal Arbeitsspeicher gesehen, die über Zeilen u. Spalten aufgebaut sind.
    Pro Zelle wird dort eine Spannung angelegt u. ein Kondensator geladen.
    Wurde dieser Kondensator geladen, entspricht es eine logische 1, wird dieser Kondensator nicht geladen, dann ist es eine 0.
    Nun weiss ich ebenfalls noch, dass dieser Arbeitsspeicher dann die Zellen selbst nochmal laden muss, da er sonst die Informationen verliert.

    Nun meine Frage, wie heisst dieser Arbeitsspeicher u. wie muss ich diesen ansteuern.

    Ich dachte dabei daran, dass ich pro Abgriff des A/D Wandler eine Variable hochzähle....
    Demnach weiss ja dann auch der Mikrocontroller wo er den Digitalwert im Arbeitsspeicher abzulegen hat.


    Die Werte dieser Variablen sollte dann auch dazu führen, dass ein LCD Display einem anzeigt, wieviel vom Gesamtspeicher belegt ist.

    Die Totalkapazität des Arbeitsspeichers wird dann unten angezeigt.

    Aso das Starten u. Stoppen der Musikaufzeichnung wird dann über eine Tastaturmatrize gesteuert.

    Nochmal meine Frage:
    Die Taktfrequenz des Atmel ist doch völlig ausreichend oder.
    Der A/D Wandler dürfte dann auch ohne weiteres diese Anforderungen gewachsen sein.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    06.11.2006
    Beiträge
    1.078
    Hallo
    hilfreich wäre es, wenn Du Dein Anliegen einmal definieren würdest.Was ist Dein Ziel?
    Sprache habe ich schon gespeichert, indem ich einfach den Pegel getriggert habe, und jedes high bit per Rotation in einem Byte gespeichert habe.Die Qualität war natürlich nicht besonders, aber man konnte ein gesprochens Wort verstehen.So ließ sich ein Satz von 4 Sekunden Länge in einem 32kB Speicher festhalten.
    Musik oder Sprache aufzuzeichnen ist prinzipell kein Problem.
    Mit freundlichen Grüßen
    Benno
    Wo man nicht mit Vernunft handelt, da ist auch Eifer nichts nütze; und wer hastig läuft, der tritt fehl.
    Ein König richtet das Land auf durchs Recht; wer aber viel Steuern erhebt, richtet es zugrunde

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    03.02.2007
    Beiträge
    30
    Das erste wäre:"ein digitaler Anrufbeantworter".
    Das zweite wäre:"eine Spracherkennungsprogramm".

    Ich Spreche auf das Mikrofon ein.
    Dieser Mikrofon speichert nun diese Werte in einem Arbeitsspeicher ab.
    Dieser Arbeitsspeicher nenne ich mal Arbeitsspeicher Nr.1

    Nun kann ich wieder auf das Mikrofon einsprechen.
    Nun werden die Sprachmuster des Arbeitsspeicher Nr.2 mit Arbeitsspeicher Nr.1 verglichen.

    Wenn die Sprache zu 75% übereinstimmt, dann einfach einen Ausgangsstrom schalten.

    Was der Ausgangsstrom dann macht, ist jedem selbst überlassen.

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    WOW,
    wenn das so einfach wäre....

    Dann hätten wir schon lange keine Tastaturen mehr.

    Schon ein paar cm vom Mic. entfern würde Deine Sprache ganz ander aufgezeichnet werden, abgsehen davon, dass Du NIE genau gleich sprichst.

    Das Zaúberwort heisst Mustererkennung.
    Dafür gibt es schon mehr oder weniger erfolgreiche Lösungen (Sprachwahl im Handy) und diese Chips kann man auch als Bausatz kaufen.




    Zitat Zitat von Andy123
    Nochmal meine Frage:
    Die Taktfrequenz des Atmel ist doch völlig ausreichend oder.
    Der A/D Wandler dürfte dann auch ohne weiteres diese Anforderungen gewachsen sein.
    Die Taktfequenz könnte sicherlich gerade so reichen (16MHz) um die einzelnen Prozesse zu steuern.


    Hier mal ein Auzug aus dem Datemblat des Mega 32:
    • • 10-bit Resolution
      • 0.5 LSB Integral Non-linearity
      • ±2 LSB Absolute Accuracy
      [highlight=yellow:4722ee34ea]• 13 - 260 µs Conversion Time
      • Up to 15 kSPS at Maximum Resolution
      • 8 Multiplexed Single Ended Input Channels
      • 7 Differential Input Channels[/highlight:4722ee34ea]
      • 2 Differential Input Channels with Optional Gain of 10x and 200x(1)
      • Optional Left adjustment for ADC Result Readout
      • 0 - VCC ADC Input Voltage Range
      • Selectable 2.56V ADC Reference Voltage
      • Free Running or Single Conversion Mode
      • ADC Start Conversion by Auto Triggering on Interrupt Sources
      • Interrupt on ADC Conversion Complete
      • Sleep Mode Noise Canceler
      Note: 1. The differential input channels are not tested for devices in PDIP Package. This feature
      is only guaranteed to work for devices in TQFP and QFN/MLF Packages


    Also wenn ich mir das so ansehe, auf den ersten Blick.. naja warum nicht
    nur kann ich noch nichts mit 15 kSPS anfangen...

    Andererseits würde Atmel doch auch irgendwie so ein Interresantes Feature wie Voice-Recording oder (Low) Quality Sound Recording explizit als Feature hervorheben...
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    nur weil es mir grade dazu einfällt (ab und zu muss man ja was themenfremdes sagen):

    ich habe neulich einen digitalen anrufbeantworter aufm schrott gefunden, der nimmt etwa 20 sekunden ansage auf. ich denke, dass man sowas billig bekommt, und ich denke, man könnte ihn weiterverwenden (hab ihn bisher aber noch nicht zerlegt).

    du gehst falsch in der annahme, dass du da einzelne töne verstärken kannst, du hast es mit ein haufen überlagerter freuenzen zu tun. schon gar nicht kannst du mehr strom bei der selben spannung "machen". je nach höhe der spannung fliesst mehr strom (lauter). dann wird aber alles lauter, nicht nur ein einzelner ton. du kannst (equalizer) bestimmte frequenzen anheben oder absenken. aber ein audiosignal auftrennen in seine komponenten ist so einfach nicht zu machen.

    gruesse

    EDIT: andere waren schneller und kompetenter

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    03.02.2007
    Beiträge
    30
    Das stimmt, dass ein paar cm vom Mic weniger, die Stimme komplett verändern würde, aber die Länge der Schnur des Mic. ist gleich.

    Ich hab ja gesagt, dass die Stimme nur zu 75 % übereinstimmen muss.

    Ich dachte, dass ich die Werte mit and Vergleiche.

    Aso, wenn ich die A/D gewandelten Werte abrufe, dann werde ich einfach die entsprechende Spannung schalten mit einer anderen Stromstärke "wenn es lauter werden soll".

    Wo meinst du, sollte das Problem liegen....Es gibt doch Schieberegister, Transistoren, Reihen u. Parallelschaltungen und die Netzspannung wird einfach von 230 Volt mit 50/60 Hertz auf eine Ausgangsspannung heruntertransformiert u. gleichgerichtet und der verbruzelte Strom wird über Kühlrippen abgegeben.

    Hm, wenn die Auflösung des internen A/D Wandlers 10 Bit beträgt, dann muss ich mir einen D/A Wandler mit 10 Bit besorgen.

    Hm was das einstellen der Geschwindigkeit betrifft, man kann doch in den Mikrocontroller Wartezyklen integrieren.

    Wartezyklen gering = Samplingrate hoch
    Wartezyklen hoch = Samplingrate gering

    Man kann doch einfach ein Rad mit einem Kontakt integrieren.
    Dieses Rad erhöht dann eine Variable oder erniedrigt eine Variable.

    Je nachdem wie der Wert dann in der entsprechenden Variable ist, werden die Wartezyklen verändert.

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •