
Ponieważ czujniki IR wykrywający dystans pomiędzy Tereminem a najbliższym obiektem jest tani i dokładny, wydaje się być perfekcyjnym do tego rodzaju projektu.
Głównym założeniem budowy było stworzenie prostego instrumentu potrafiącego wygrać podstawowe nuty z jednej oktawy np. od C4 do C5. Czujnik IR będzie wykrywał jak daleko znajduje się ręka od instrumentu i na tej podstawie w zależności od dystansu wygrywał odpowiednią nutę.
Wewnętrzny przetwornik analogowo-cyfrowy mikrokontrolera PIC, który steruje Thereminem, będzie wykorzystany do przetwarzania danych wyjściowych z czujnika IR, które następnie będą przeliczane na konkretną odległość. Szybki timer mikrokontrolera, będzie wytwarzał falę prostokątną o określonej częstotliwości – określony dźwięk, nieprzerwanie tak długo jak jakiś obiekt będzie się znajdował w polu widzenia czujnika. Jeżeli czujnik nie wykryje żadnego obiektu, Theremin nie będzie wydawał dźwięku.
Lista części
Mikrokontroler PIC 18F452
Czujnik Sharp 2Y0A21 albo GP2D12 IR
Kondensator 100uF
Rezystory 3x 300Ω
Rezystor 10kΩ
2x jasne diody LED
Zielone LED
Kwarc 20 MHz
SPST Switch
Złącze 9v baterii
płytka prototypowa
Przewody
Klej epoksydowy
Pickit 2
Wszystkie powyższe części wystarczają do budowy Theremina.
Mikrokontroler PIC 18F452
Procesor w projekcie służy do przetwarza danych. Dane z czujnika mierzącego odległość są przetwarzane poprzez przetwornik analogowo-cyfrowy. Na ich podstawie obliczana jest odległość od instrumentu. Na tej podstawie na głośnik wysyłana jest fala prostokątna o określonej częstotliwości nuty.
Czujnik Sharp 2Y0A21 lub GP2D120
Popularny tani czujnik zbliżeniowy. Zasilany napięciem 5V, wystawia na wyjściu sygnał analogowy z przedziału od 3,5V do 0V, proporcjonalnie do odległości najbliższego obiektu.
Kwarc 20MHz
Szybszy zegar dałby prawdopodobnie bardziej wygładzone dźwięki, ale prawdopodobnie byłyby one bardziej nieznośne dla naszych uszu, ponieważ nie lubią one słuchać długotrwałych dźwięków o jednostajnym tonie.
Jasne niebieskie i zielone diody LED
Zielona dioda jest podłączona bezpośrednio do zasilania przez rezystor, więc służy jedynie temu, aby wskazywać czy włączone jest zasilanie. Dwie niebieskie diody umieszczone równolegle po obu stronach czujnika IR, wskazują przestrzeń, która jest wykorzystywana do gry.
Pudełko z pleksiglasu
Zastosowanie pleksiglasu, który jest tani i solidny do tego typu projektów, wynikło z mody, aby urządzenia elektroniczne były przeźroczyste i można było zobaczyć, co jest w środku.
Głośnik
Głośnik użyty w projekcie jest standardowym głośnikiem z pary słuchawek
Druty i płytka prototypowa
Projekt został stworzony na płytce prototypowej i tak już zostało, ale autor nie wyklucza, że później układ zostanie przeniesiony na płytkę drukowaną.
Schemat elektryczny
Schemat instrumentu jest cudownie prosty, gdyż urządzenia wejściowe i wyjściowe nie wymagają tu zbyt wielu połączeń. Jest to zazwyczaj podwójne błogosławieństwo, ponieważ mniej sprzętu oznacza mniej programowania. Główne elementy używane w projekcie to 18F452, 2Y0A21/GP2D120, czujnik odległości na podczerwień i głośnik słuchawkowy.

Obwód zasilania:
Obwód zasilania to tylko baterie. W projekcie nie został zastosowany żaden stabilizator, ponieważ po połączeniu 4 baterii o napięciu 1,2 dostajemy 4 x 1,2 = 4,8 co jest zgodne ze specyfikacją zasilania czujnika podczerwieni jak i pozostałych elementów.
Obwód czujnika odległości na podczerwień
Czujnik odległości IR ma tylko trzy złącza: zasilanie, masę oraz wyjście podawane na pin nr 2 (RA0) mikrokontrolera PIC. Pin ten jest skonfigurowany jako wejście przetwornika analogowo-cyfrowego.
Podłączenie głośnika
Jeden z konektorów głośnika jest podłączony bezpośrednio do masy a drugi do pinu numer 19 mikrokontrolera PIC (RD0). Program wsadowy mikrokontrolera wysyła na ten pin falę prostokątną o określonej częstotliwości, aby wytworzyć odpowiednią nutę.
Teoria
Opis teorii został podzielony na dwie części. Pierwsza opisuje jak czujnik zbliżenia zbiera dane a następnie wysyła je do mikrokontrolera, który zamienia je w użyteczne dane.
Jak już wspomniano wcześniej, czujnik IR posiada trzy złącza. Na jego wyjściu pojawia się konkretna wartość napięcia skorelowana z odległością czujnika od obiektu. Krzywa korelacji odległości do konkretnego napięcia znajduje się poniżej.

Aby umożliwić przyporządkowanie określonej nuty do określonej odległości konieczne jest stworzenie równia, opisującego krzywą czujnika. Autor podaje gotową formułę, która została stworzona poprzez aproksymację charakterystycznych punktów.

Formuła powyżej została określona dla 10-bitowego przetwornika analogowo-cyfrowego, w której wartość zawsze mieści się pomiędzy 600 a 50 co odpowiada wartości napięcia z przedziału od 3V do 0,4V.
Zastosowanie powyższej formuły powinno z dość dobrym przybliżeniem opisywać wartości, które dochodzą z przetwornika.
Przyjrzyjmy się teraz jak generować dźwięki muzyki. Poniżej przedstawiono określone częstotliwości, które odpowiadają poszczególnym nutom.
Kolejno: Nuta; Częstotliwość (Hz); Długość fali (cm)
C4; 261.63; 132
D4; 293.66; 117
E4; 329.63; 105
F4; 349.23; 98.8
G4; 392.00; 88.0
A4; 440.00; 78.4
B4; 493.88; 69.9
C5; 523.25; 65.9
Każda z powyższych częstotliwości będzie na stałe zapisana w pamięci i zostanie zagrana, gdy tylko odpowiedni dystans zostanie wykryty poprzez czujnik odległości. Pozostaje pytanie jak ustawić timer, aby można było grać takie tony? Sekwencja poniższego wzoru wskazuje jak obliczyć liczbę instrukcji w cyklu PIC, aby osiągnąć określoną częstotliwość.

Należy tu zacząć od częstotliwości taktowania mikrokontrolera, 20MHz, co tak naprawdę daje nam 5MHz, bo każda instrukcja maszynowa trwa w mikrokontrolerze PIC 4 cykle zegarowe. Spójrzmy teraz na częstotliwość tonu, który chcemy generować. W tym przypadku będzie to nuta C4, która posiada częstotliwość 261 63 Hz. Kiedy podzielimy 261 63 Hz przez 5MHz dostajemy liczbę instrukcji mikrokontrolera, które musza być wykonane w cyklu, aby wygenerować tę częstotliwość.
Pamiętać należy, że przez połowę cyklu sygnał powinien mieć wartość równą 5V a przez drugą połowę 0V. Autor użył w timerze preskalera 1 do 2 co oznacza, że każdą instrukcję liczymy jako dwie. Tak więc wartość po poprzednim dzieleniu - 19 110 znów dzielimy na połowę. W taki sposób otrzymaliśmy wartość rejestru timera dla wygrania nuty C4. Problemem jest jednak to, że musimy stale zmieniać wartość sygnału pomiędzy 0V a +5V. Podzielimy więc wartość timera raz jeszcze, aby otrzymać finalną wartość 4777.
Kiedy timer PIC wywoła przerwanie po odliczeniu do 4777, sygnał na wyjściu do głośnika powinien zmienić swoją polaryzację. Rozwiązanie to spowoduje powstanie czystego dźwięku bez zniekształceń.
Projektowanie sprzętu
Ze schematu wynika jak proste są połączenie pomiędzy poszczególnymi elementami, szczególnie na płytce prototypowej. Autor stwierdza, że warto się troszkę zabawić i stworzyć ładne funkcjonalne pudełko dla diod LED, czujnika odległości i głośnika.
Ze standardowego arkusza pleksi wycinane są kwadraty, do złożenia pudełka. Powinno być ono otwierane, aby ułatwić późniejszy serwis. Z racji tego do drzwiczek i ścianki montujemy specjalny zawias. Wszystkie wycięte części jak i diody i czujnik klejone są klejem epoksydowym. Wszystkie części elektroniczne łączone są na płytce prototypowej, którą również wklejono do obudowy pleksiglasowej i połączono przewodami z resztą elementów.

Oprogramowanie mikrokontrolera PIC składa się z 3 części funkcjonalnych:
• Przerwania od przetwornika A/C
• Przerwania od timera
• Głównej funkcji przełączającej
Przerwanie od przetwornika A/C ma tutaj niższy priorytet od przerwania timera, ponieważ autorowi najbardziej zależało na czystości dźwięku.
Priorytety przerwań

Kod powyżej powinien być bardzo prosty, aby nie obciążać zbytnio procesora.

Głowna funkcja inicjuje pracę przetwornika A/C a następnie oblicza aktualną odległość odległości i przekazuje ją do instrukcji switch. W zależności od tego, jaka wartość znajduje się w timer0_val, zależy jaka częstotliwość będzie wystawiona na wyjście. Proces ten, odbywa się ciągle aż wyczerpie się bateria.
Oprogramowanie gotowe, urządzenie skręcone, można, więc przystąpić do testów. Zamieszczony filmik pokazuje jak zbudowane jest urządzenie oraz kilka przykładów, czego można się spodziewać po urządzeniu.
Nie jest to światowy poziom dźwięku, ale samo urządzenie z pewnością pracuje poprawnie wygrywając właściwe nuty dla określonych odległości. Jedna oktawa to bardzo ograniczony zakres, ale to dopiero początek.
Autor ma wiele pomysłów jak rozbudować urządzenie. Można zbudować całą fortepianową klawiaturę i grać na Thereminie jak na fortepianie. Innym pomysłem są dwa czujniki zbliżeniowe, jeden kontrolujący sopran a drugi bas jak w akordeonie. Autor ma również kilka pomysłów jak polepszyć jakość dźwięku i kontrolować głośność i z pewnością powróci do tego projektu.
Źródło:
http://www.pyroelectro.com/projects/mini_ir_theremin/index.html
Cool? Ranking DIY