Theremin

Introducere

Scopul proiectului este realizarea unui instrument (aproape) muzical asemănător ca funcţionalitate cu Theremin (cunoscut şi sub numele de eterofon). Astfel, sunetul generat este controlat prin mişcarea mâinilor, fără fizic. Deşi asemănător ca funcţionalitate, metoda de implementare este total diferită, în cazul acestui proiect fiind folosiţi senzori cu infraroşu pentru detectarea mişcării mâiniilor.

Descriere generală

Cei doi senzori cu infraroşu variază tensiunea de ieşire în funcţie de distanţa detectă. Graficul dependenţei tensiune(distanţă) poate fi vizualizat în datasheet-ul Sharp GP2Y0A21YK [1]. Tensiunea dată de un senzor va fi folosită pentru varierea frecvenţei sunetului, iar cealaltă pentru varierea volumului.

Tensiunea generată mai devreme este folosită drept input pentru logica decizională care este reprezentată de microcontroller-ul ATmega16 şi de amplificatorul TDA7052A. Practic, ATmega16 va primi ca input tensiunea dată de senzor şi va varia frecvenţa semnalului folosind PWM. Acest semnal va fi folosit ca input de TDA7052A împreună cu tensiunea generată de celălalt senzor şi se va varia astfel amplitudinea semnalului (deci volumul).

Acest ultim semnal este trimis difuzorului care redă sunetul.

Hardware Design

Listă piese (pe lângă plăcuţa de bază):

  • 2 senzori Sharp GP2Y0A21YK [1]
  • 1 amplificator TDA7052A [2]
  • 1 stabilizator de tensiune L7806
  • 1 difuzor 8Ω 1W.
  • diverse rezistenţe, condensatoare şi bobine.

Microcontroller-ul Atmega16 primeşte tensiunea de intrare de la un senzor de distanţă pe portul PA0 şi generează semnalul modulat în frecvenţă pe portul PD5. Semnalul este întâi prelucrat de un filtru trece-jos care este controlat printr-un potenţiometru, având rolul de a “tăia” frecvenţele peste o anumită valoare:

Amplificatorul TDA7052A:

  • Primeşte pe portul 2 semnalul generat de filtrul de mai sus.
  • Primeşte pe portul 4 tensiunea de comandă generată de senzorul de distanţă (folosit în acest caz pentru a varia amplitudinea). Observaţie: Ţinând cont că tensiunea generată de senzor este în intervalul [0, 3.2V], s-a decis aplicarea unui divizor de tensiune pentru a o reduce în intervalul [0, 1.6V] care este potrivită pentru TDA7052A conform datasheet-ului [2] (suportă maxim 2V şi tensiunea de output nu mai este amplificată dacă semnalul de comandă este peste 1.4V).
  • Este alimentat pe portul 1 de la stabilizatorul de tensiune L7806 (a fost necesar un nou stabilizator de tensiune întrucât TDA7052A necesită 6V pentru a funcţiona).
  • Redă semnalul final care este preluat de difuzor pe porturile 5 (+) şi 8 (-).

Schema amplificatorului poate fi vizualizată mai jos:

Software Design

Pentru dezvoltare nu s-a folosit vreun mediu de dezoltare dedicat (doar VIM + avr-gcc).

Ţinând cont de natura mai mult hardware a proiectului, nu există detalii software relevante, implementarea fiind inspirată din laboratorul 2 (PWM) şi laboratorul 3 (ADC).

Rezultate Obţinute

Proiectul este funcţional şi sunetul este redat în funcţie de mişcarea mâinilor. Din păcate, a fost ales un difuzor puţin cam slab şi nu face faţă foarte bine semnalului generat de amplificatorul TDA7052A (ar fi trebuit minim un difuzor de 2W, faţă de 1W, cât este momentan).

Mai jos puteţi vizualiza o poză cu plăcuţa finală.

Concluzii

Download

Codul sursă: theremin_pm.zip

Resurse

pm/prj2011/rtataroiu/theremin.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