Stroik gitarowy

Stroik gitarowy
Pobierz PDF Download icon

Przeglądając strony internetowe, natknąłem się na bardzo ciekawy, nietuzinkowy projekt stroika gitarowego, który w odróżnieniu od pozostałych urządzeń tego typu wykorzystuje inne zjawiska fizyczne niż fala akustyczna w celu umożliwienia nastrojenia instrumentu. Typowe rozwiązania dostępne w handlu poddają analizie dźwięk lub drgania emitowane przez strunę gitary i wyświetlają procent odstrojenia instrumentu od wartości prawidłowej. Opisywane urządzenie nie wykonuje analizy dźwięku, a używa efektu stroboskopowego – emituje wiązkę światła LED o określonej częstotliwości migotania, oświetlając nią strojoną strunę.

Rekomendacje: stroik może przydać się nie tylko muzykom.

Podstawowe parametry:
  • Obsługa za pomocą dwóch przycisków.
  • Strojenie gitary z użyciem efektu stroboskopowego.
  • Wielkość i kształt płytki drukowanej zbliżony do kostki gitarowej.
  • Mikrokontroler ATtiny24 taktowany rezonatorem 3,6864 MHz.
  • Zasilanie z baterii CR2032.

Jak wspomniano we wstępie, układ stroika oświetla strojoną strunę za pomocą światła o określonej częstotliwości migotania. Jeśli obserwowana struna drga z częstotliwością inną niż emitowana przez LED, będzie wydawało się, że porusza się w górę i w dół wolniej lub szybciej, zależnie od stopnia odstrojenia. W wypadku nastrojenia struny do częstotliwości migania diod LED struna ta będzie wydawała się nieruchoma. W ten sposób możemy zrealizować układ oryginalnego stroika gitarowego, który z powodzeniem zastąpi rozwiązania tradycyjne.

Zanim jednak przejdziemy do opisu urządzenia konieczne wydaje się przyswojenie podstawowej wiedzy na temat częstotliwości dźwięków muzycznych. W powszechnie używanym tzw. systemie równomiernie temperowanym stosunek częstotliwości dwóch kolejnych dźwięków jest stały i wynosi )12, czyli dwukrotnie! Przyjęto ponadto, że podstawową częstotliwością, do której stroi się wszystkie instrumenty, jest częstotliwość dźwięku A1 równa 440 Hz. Dla takich założeń częstotliwości prawidłowo nastrojonych strun gitary klasycznej wynoszą kolejno: E2→82,41 Hz, A2→110 Hz, D3→146,83 Hz, G3→196 Hz, B3→246,94 Hz, E4→329,63 Hz. Na tym etapie posiadamy już niezbędną z punktu widzenia projektu wiedzę z zakresu muzyki, w związku z czym pora przejść do rozwiązania sprzętowego.

Rysunek 1. Schemat ideowy stroika gitarowego

Schemat ideowy stroika pokazano na rysunku 1. Jest to nieskomplikowany system procesorowy, którego sercem jest mikrokontroler ATtiny24 realizujący całą, zakładaną funkcjonalność urządzenia. Mikrokontroler steruje pracą dwóch diod LED1 i LED2 będących oświetlaczem stroboskopowym oraz realizuje interfejs użytkownika zbudowany z 6 diod LED wskazujących rodzaj strojonej struny oraz dwóch przycisków: TONE odpowiedzialnego za wybór rodzaju strojonej struny oraz POWER służącego do włączania/wyłączania zasilania urządzenia. Warto podkreślić, że całe urządzenie jest zasilane z niewielkiej baterii CR2032 o napięciu 3 V, więc w tym projekcie istotne było odpowiednie gospodarowanie pobieraną energią. Do realizacji tego wymagania wykorzystano możliwość wprowadzania mikrokontrolera w tryb uśpienia (w naszym wypadku tryb Power Down), w którym prąd pobierany przez urządzenie spada do wartości poniżej 0,1 μA! W porównaniu do prądu obciążenia włączonego urządzenia (pobieranego głównie przez diody LED) rzędu 30 mA osiągnięto gigantyczną wręcz oszczędność energii, zapewniając długą pracę urządzenia na jednej baterii zasilającej. Mikrokontroler jest usypiany każdorazowo po naciśnięciu przycisku Power (dokładnie, co drugie naciśnięcie) lub po 2 minutach bezczynności urządzenia.

Ustawienia fuse-bitów:
• CKSEL3…0: 1101
• SUT1…0: 11
• CKDIV8: 1
• CKOUT: 1

Przejdźmy zatem do szczegółów implementacyjnych. W celu realizacji efektu stroboskopowego wykorzystano układ czasowo-licznikowy Timer1 pracujący w trybie CTC (porównania wartości licznika TCNT1 z zawartością rejestru OCR1A) taktowany przebiegiem zegarowym o częstotliwości 3,6864 MHz (Preskaler=1). Dzięki odpowiedniej konfiguracji Timer1 przejmuje kontrolę nad wyprowadzeniem OC1A mikrokontrolera, pozwalając na generowanie przebiegu prostokątnego o częstotliwości zależnej od wartości wpisanej do rejestru OCR1A a obliczanej według wzoru:


, gdzie:

  • fclk – częstotliwość taktowania mikrokontrolera równa 3,6864 MHz,
  • N – wartość preskalera ustawiana w rejestrze TCCR1B (w naszym wypadku 1),
  • OCR1A – wartość wpisana do rejestru OCR1A.

Na listingu 1 pokazano sposób konfigurowania Timera1 oraz niezbędne stałe wyznaczone dla potrzeb generowania przebiegów o określonej częstotliwości (dla kolejnych strun gitary). Zmiany częstotliwości na wyjściu OC1A dokonujemy poprzez wczytanie do rejestru OCR1A stosownej stałej z tablicy Tones[], używając w tym celu makra z pliku pgmspace.h dostarczanego wraz z pakietem AVR-GCC w następujący sposób: OCR1A=pgm_read_word(&Tones[Index]);.

Listing 1. Sposób konfigurowania Timera1 dla potrzeb generowania przebiegów o określonej częstotliwości
//Tablica przechowująca wartości OCR1A odpowiadające częstotliwościom poszczególnych strun
const uint16_t Tones[] PROGMEM = {22365, 16755, 12552, 9403, 7463, 5590};
//Konfigurowanie Timera1 adla generowania przebiegu na wyjściu OC1A
TCCR1A = (1<<COM1A0); //Zmiana stanu OC1A przy porównaniu
TCCR1B = (1<<WGM12)|(1<<CS10); //Tryb CTC, Preskaler = 1
OCR1A = 22365; //Na starcie ustawiamy częstotliwość struny E
DDRA |= (1<<PA6); //Port OC1A, jako port wyjściowy

Do omówienia pozostaje poruszona na wstępie kwestia energooszczędności urządzenia i trybu uśpienia mikrokontrolera. W celu zminimalizowania energii pobieranej przez układ zastosowano następujące, charakterystyczne dla wszystkich mikrokontrolerów AVR zabiegi programowo-sprzętowe:

  • Wszystkie nieużywane porty I/O ustawiono jako wyjściowe (opcjonalnie można było pozostawić je jako wejściowe z włączonym podciąganiem do napięcia zasilania).
  • Wyłączono wszystkie nieużywane peryferia mikrokontrolera.
  • Nieużywane urządzenie wprowadzano w stan uśpienia Power Down.

Za realizację powyższej funkcjonalności odpowiada fragment programu przedstawiony na listingu 2.

Listing 2. Kod odpowiedzialny za minimalizowanie zużycia energii urządzenia
//Redukcja poboru mocy poprzez wyłączenie nieużywanych peryferiów
PRR = (1<<PRTIM0)|(1<<PRUSI)|(1<<PRADC); //Timer0, Universal Serial Interface, ADC
ACSR = (1<<ACD); //Wyłączenie komparatora analogowego
//Nieużywany port, jako wyjściowy ze stanem 0
DDRB |= (1<<PB3);

Do rozwiązania pozostaje jeszcze kwestia usypiania i wybudzania mikrokontrolera. Do wybudzania mikrokontrolera ze stanu uśpienia wykorzystano wejście przerwania zewnętrznego INT0 skonfigurowane jako wyzwalane poziomem niskim, ponieważ dla tego wejścia to jedyna dostępna możliwość wybudzania. Samą procedurę obsługi przerwania INT0 pozostawiono pustą, gdyż przerwanie służy wyłącznie do wyprowadzenia mikrokontrolera ze stanu uśpienia, w który został wcześniej wprowadzony za pomocą przycisku Power, a które inicjuje wykonanie fragmentu programu odpowiedzialnego za uśpienie mikrokontrolera z listingu 3. Zaprezentowany kod z list. 3 korzysta z wygodnych makr zawartych w pliku sleep.h dostarczanym z pakietem AVR-GCC.

Listing 3. Kod odpowiedzialny za uśpienie mikrokontrolera
set_sleep_mode(SLEEP_MODE_PWR_DOWN); //Ustawienie rodzaju trybu uśpienia
sleep_enable(); //Aktywacja możliwości uśpienia mikrokontrolera
sei(); //Zezwolenie na obsługę przerwań (w celu późniejszego wybudzenia mikrokontrolera)
sleep_cpu(); //Uśpienie mikrokontrolera
sleep_disable(); //Dezaktywacja możliwości uśpienia mikrokontrolera

To tyle, jeśli chodzi o opis zagadnień implementacyjnych. Pora na pokazanie schematu montażowego urządzenia, który zamieszczono na rysunku 2.

Rysunek 2. Schemat montażowy stroika gitarowego

Jak widać, zaprojektowano niewielki i zwarty obwód drukowany ze zdecydowaną przewagą elementów SMD, który kształtem i wymiarami przypomina kostkę gitarową. Montaż rozpoczynamy od przylutowania elementów umieszczonych na warstwie TOP, przy czym w pierwszej kolejności lutujemy mikrokontroler, następnie wszystkie LED-y zachowując odpowiednią biegunowość, kolejno elementy bierne, a na samym końcu przyciski POWER i TONE oraz rezonator kwarcowy. Następnie przechodzimy na stronę BOTTOM, gdzie wlutowujemy gniazdo baterii CR2032 będące jedynym elementem przeznaczonym do montażu przewlekanego. Warto także pocynować duże pole lutownicze umieszczone pod gniazdem baterii będące jednocześnie stykiem ujemnego bieguna baterii. Zaprogramowane urządzenie nie wymaga żadnych procedur konfiguracyjnych i powinno działać tuż po włączeniu zasilania.

Robert Wołgajew, EP

Wykaz elementów:
Rezystory: (SMD 0805)
  • R1, R2: 62 Ω
  • R3: 220 Ω
Kondensatory:
  • C1: 100 nF
  • C2, C3: 22 pF
Półprzewodniki:
  • U1: ATtiny24 (SOIC14)
  • LED1, LED2: LED typu OSR5120641E (SMD 1206)
  • LED3…LED8: LED czerwona (SMD 1206)
Inne:
  • Q1: rezonator kwarcowy SMD 3,6864 MHz (HC49SM)
  • POWER, TONE: przycisk SMD typu TACTM-34N
  • BATT: gniazdo baterii CR2032 typu COMF BC-2002
Artykuł ukazał się w
Elektronika Praktyczna
styczeń 2018
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik listopad 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje październik 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna listopad 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich listopad 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów