Tiberiu IORGULESCU (25243) - Looping Sound System

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Sistemul permite inregistrarea unui sunet si redarea lui intr-un ciclu infinit. In timpul redarii, se poate inregistra un alt sunet, astfel incat la reluarea buclei sa poata fi redate toate sunetele anterioare combinate.

Scopul acestuia este sa poti combina mai multe melodii / efecte pentru ca in final sa poti de unul singur sa creezi o melodie complexa.

Ideea de la care am pornit e ca uneori vreau sa cant pe mai multe voci si nu pot sa o fac simultan.

Proiectul este deja confirmat ca fiind util, deoarece sisteme de sunet similare sunt folosite de mai multi artisti de strada sau beatboxeri.

Descriere generală

Microcontroller-ul ATMEGA324 va fi folosit pentru:

  • preluarea sunetului de la input si transmiterea lui pe cardul SD
  • preluarea melodiei stocate pe SD si redarea sa intr-un ciclu infinit
  • primirea comenzilor de la utilizator
  • combinarea inregistrarii anterioare cu noua inregistrare

Cardul SD va fi folosit pentru stocarea melodiei.

Conectorii de input si output audio vor primi / trimite semnalul analogic cu melodia.

Input-ul utilizatorului va consta intr-o pedala si cateva switch-uri.

Hardware Design

Lista Componente

Componenta Model Cantitate
DAC 16 biti DAC8571IDGKG4 1
Memory card connector 502570-0893 1
Amplificator operational MCP6002 1
Rezistente amplificator - 1
Cabluri mama-mama - 1
Placa PM2016 - 1
Componente baza placa - 1
Translator de nivel logic - 1
Header pini - 1
Soclu jack 6.3mm NMJ4HFD2 2

Schema Electrica

Aceasta este schema electrica a PCB-ului de care am nevoie in afara de placa de baza cu microcontroller-ul, a carei schema este aproximativ comuna pentru toate proiectele (de aceea nici nu o mai pun aici).

Software Design

  • Mediu de dezvoltare: Programmer's Notepad
  • Librării: Petit FAT Filesystem (pffs), i2cmaster

Sunetul de la input este primit prin ADC-ul microcontroller-ului Atmega324PA, cu rezolutie de 10 biti.

Cardul SD este accesat prin SPI.

Comunicarea cu DAC-ul este facuta prin I2C.

Algoritm Looping

Melodia curentă se află într-un buffer de 256 uint_16 (pentru că DAC-ul are rezolutie pe 16 biți). Sample-ul care urmează să fie pus pe DAC este adunat cu sample-ul primit de la ADC (care este pe 10 biti) si trimis prin I2C la DAC.

Atunci când se termină cele 256 de sample-uri, acestea sunt stocate împreună cu noua melodie combinată pe cardul SD.

Atunci când se dorește reluarea melodiei, se stochează la începutul fișierului lungimea melodiei (pentru ca programul să știe când unde să facă loop) și se reia melodia.

Rezultate Obţinute

Am reusit sa colectez date de la microfon conectat la input si sa le salvez pe cardul SD.

Facand un plot pe datele de pe cardul SD, am obtinut urmatorul grafic:

Se poate observa semnalul shiftat in spectrul pozitiv de voltaj, cu centrul pe 512 volti (fiind ADC pe 10 biti ventrul este la jumatatea lui 1024).

Am reusit sa comunic cu DAC-ul prin I2C, pot sa generez sunete neplacute pe el, dar din pacate atunci cand ii dau o melodie frumoasa nu mai merge. Mai trebuie sa imi dau seama de ce.

Concluzii

Cu ocazia acestui proiect am invățat:

  • Cum se printează un PCB
  • Că nu e bine să fac unghiuri drepte pe traseele din PCB, deoarece apar zgomote la colțuri (maxim 45 grade să fie curba)
  • Cum se comunică cu un card SD
  • Cum se folosește interfața I2C

Download

Jurnal

[22.04.2016] Lipit componente pe placa de baza
[14.05.2016] Terminat design PCB
[20.05.2016] Trecut placa la 3v3 ⇒ am reusit sa comunic cu cardul SD (LLC-ul distorsiona semnalul ceasului)
[24.05.2016] Imprimat al doilea PCB pe care vor sta mufele jack (cu amplificator la intrare), DAC-ul si cardul SD.

Bibliografie/Resurse

pm/prj2016/csoare/tibsloopsys.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0