Skocz do zawartości

Stroik do gitary elektrycznej


Pomocna odpowiedź

Ostatnio czytam sobie o wzmacniaczach operacyjnych i pomyślałem, że może by tak wykorzystać zdobytą wiedzę w praktyce i zrobić stroik do gitary elektrycznej. Co więcej znalazłem nawet coś na instructables

584516825_F9NHK40HJAHZX9S(1).thumb.jpg.012e3f1bf93ba92c4ed50d00104284fd.jpg

Sygnał z gitary jest wzmacniany wzmacniaczem operacyjnym TL082 a potem podawany na wejście ADC Arduino. Następnie jest wykorzystywana biblioteka Arduino-Frequency-Detection do obliczenia częstotliwość. Wszystko proste, oczywiste, ale... czy nie przekombinowane?  Biblioteka bada kiedy sygnał przechodzi przez 2.5V, więc autorka i konstruktorka stroika sugeruje: 

"I recommend building this circuit on a breadboard and testing it out using an oscilloscope before soldering it together. Your audio input should be the green wire of the audio jack. Connect the black wire of the jack to ground.  Attach your scope probe to the output of the DC offset (where the circuit is attached to A0 on the Arduino). Turn the volume on your guitar all the way up and plug your guitar into the audio jack. Play every string and check on the oscilloscope to make sure your signal is centered around 2.5V and that the signal is close to but does not exceed 5V peak to peak."

I tu zacząłem się zastanawiać. Przecież ja chcę mierzyć tylko częstotliwość. Można na wzmacniaczu operacyjnym ustawić takie wzmocnienie, aby powstała fala prostokątna i zmierzyć jej częstotliwość. Ale taki wzmacniacz operacyjny z dużym wzmocnieniem to działa jak komparator. Więc w sumie mogę użyć komparatora z ATTiny. 

Screenshot_20211228_211645.thumb.jpg.718caa2880f3522059d893e3d0f18614.jpg

Sygnał z gitary elektrycznej ma kilka mV. Więc trzeba zapodać sygnał z dodatkową składową stałą na wejście dodatnie komparatora, a na wejście odwracające samą składową stałą, jako napięcie referencyjne. Zastanawiam się czy nie mógłbym wykorzystać w tym miejscu tego obwodu:

Screenshot_20211228_211747.thumb.jpg.a54cf78daf9ff7dde6d952470b064192.jpg

WY podłączone do wejścia nieodwracającego komparatora, a węzeł R1, R3, C2 do wejścia odwracającego. Oczywiście piękno tego obwodu ujawnia się gdy rezystancja R1 jest o rząd wielkości większa niż równoległe połączenie R2 i R3. 

Podsumowując: Kombinując co by to zrobić na wzmacniaczu operacyjnym, wymyśliłem jak go nie użyć. Jednak zapytałem wujka Googla i nikt tak nie robi. Wszyscy używają wzmacniacza operacyjnego, gdy robią stroik do gitary. Wiec rodzą się pytania: "Czy mi coś nie umyka? Nie ma tu jakiegoś błędu myślowego? O czymś zapomniałem?" 

Edytowano przez pmochocki
Link do komentarza
Share on other sites

Pomijając kwestie mierzenia składowych częstotliwości sygnału (bo się na tym nie znam) to Vref ADC czy wbudowanego WO, na poziomie 5V jest chyba najgorszym możliwym wyjściem. Przecież zarówno AtMegi jak i AtTiny - nawet te starszej generacji mają wbudowane źródło napięcia referencyjnego o wiele lepszej jakości niż te 5V. Ten schemat jest tak fatalny że szkoda go nawet komentować. Także, brzydko mówiąc, olej panią Santos i wykorzystaj wejścia różnicowe swojego uP do wzmocnienia sygnału a potem... czego dusza zapragnie 🙂  

Link do komentarza
Share on other sites

UWAGA ale walnąłem głupotę: za szybko odpisałem, to nie pani Santos(pomyliłem z kimś innym) przepraszam. Co do układu też teraz doczytałem że sygnał z przetwornika ma tak małą wartość, ale być może zamiast próbować posłać ten sygnał bezpośrednio na komparator, lepiej byłoby spróbować go wzmocnić na ADC? 

Link do komentarza
Share on other sites

6 minut temu, _LM_ napisał:

Co do układu też teraz doczytałem że sygnał z przetwornika ma tak małą wartość, ale być może zamiast próbować posłać ten sygnał bezpośrednio na komparator, lepiej byłoby spróbować go wzmocnić na ADC? 

No właśnie się zastanawiam czy trzeba tak komplikować. Wydaje mi się, że użycie komperatora jest bardziej naturalne jak chcemy mierzyć częstotliwość. Może w tym tygodniu znajdzie się chwila na mały eksperyment i wtedy się okaże... 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@pmochocki taki stroik to jest dokładnie to samo co ostatnio buduję, np. na stornie z generatorem sygnału sinusoidalnego masz też podane jakie to są tony:

image.thumb.png.3aef11e18c27450f76c34306e413f90f.png

Popatrz na bibliotekę ArduinoFFT, może to będzie ten kierunek 🙂 Jeżeli przeprowadzisz transformację Fouriera (FFT) np dla 512 punków, to uzyskasz z tego tablicę 256 (tak, połowa) wartości, które odpowiadają udziałowi częstotliwości w sygnale (im większa wartość w danym elemencie tablicy, tym więcej tej częstotliwości w sygnale. W moim projekcie są one zawężane do 19 pasów ale np pasek po lewej stronie tyczy się basów i jego przedział wartości to tylko 1 wartość z wynikowego FFT.

Jak dojść co to za częstotliwość?

Ustawiasz częstotliwość próbkowania - czyli jak często mierzysz sygnał. Dla audio optimum ot 40kHz bo z tw. Nyquista wynika że częstotliwość próbkowania musi być minimum 2x większa od najwyższej częstotliwości w sygnale. Jeżeli będziesz mierzyć mniejsze częstotliwości, domyślam się, że jakieś superwysokie C cie nie interesuje 🙂 , to śmiało możesz uciąć ten przedział.

Czyli jak masz częstotliwość próbkowania od 40kHz, to 512 punktów FFT oznacza że w wyniku masz 256 wartości które obejmują przedział od 0 do 20kHz. Czyli dzielisz i wychodzi z tego że każdy przedział ma szerokość 78Hz. Czy to dużo? Nie wiem, trzeba zapytać speca od audio. Ale domyślam się, że może to być mało dla niższych częstotliwości. Zauważ że percepcja ma skalę logarytmiczną tj. dla niskich wartości różnice są niewielkie, dla dużych różnice są duże.

To coś jak z rezystorami - tzw. typoszereg czyli to jak wymyślono ich wartości jest ciągiem geometrycznym - im większe wartości tym większe różnice choć stosunek jest ten sam. Masz np rezystor 1R, tuż obok jest 2,2R - różnice tylko 1,2R. Ale masz tez 1k, a obok 2,2k - różnica aż 1200R, ale stosunek ten sam.

A zapomniałem, jak dojść jaka częstotliwość dominuje? Wyliczasz średnią ze swoich 256 wartości i sprawdzasz ktora wartość jest mocno powyżej średniej. Gotowe 🙂 

Edytowano przez Gieneq
  • Lubię! 2
Link do komentarza
Share on other sites

24 minuty temu, Gieneq napisał:

Popatrz na bibliotekę ArduinoFFT, może to będzie ten kierunek 🙂

Myślałem o tym, ale jak bym chciał jednak iść w kierunku DSP i użyć ADC to raczej bym przygotował sobie 6 wzorcowych przebiegów i użył autokorelacji. Wtedy uzyskam dokładność do ułamka Hz. 

24 minuty temu, Gieneq napisał:

Czyli dzielisz i wychodzi z tego że każdy przedział ma szerokość 78Hz. Czy to dużo? Nie wiem

Jeśli iść w kierunku FFT, to w innym zakresie bym musiał sygnał badać:

Screenshot_20211229_075449.thumb.jpg.21d194dabec489016f2499b3fb3ee554.jpg

Niezależnie od podejścia w pierwszej kolejności chciałbym sprawdzić czy ten obwód zadziała jak myślę. Czyli czy będę miał napięcie odniesienia dla ADC czy komparatora. 

 

Link do komentarza
Share on other sites

A ja bym sprawdził jak się ma gitara nastrojona w ten sposób do gitary nastrojonej tradycyjnym sposobem 😉

Oczywiście zakładam, że to nie ma być próba stworzenia rzeczywistego realnego urządzenia tylko chęć sprawdzenia, jaka metoda nadaje się do pomiaru częstotliwości z dokładnością nie gorszą niż 10 centów.

Link do komentarza
Share on other sites

17 minut temu, Gieneq napisał:

@pmochocki ciekawe, chętnie bym zobaczył projekt na DSP. Masz ambicje nauczyć się programować jakiś konkretny układ?

Ja raczej myślałem o użyciu technik Digital Signal Processing na zwykłym mikrokontrolerze. Przyjdzie czas na DSP, ale zaraz po STM32 i FPGA 😉

17 minut temu, ethanak napisał:

A ja bym sprawdził jak się ma gitara nastrojona w ten sposób do gitary nastrojonej tradycyjnym sposobem 😉

Bardzo fajny pomysł... Ja nie nastroję tradycyjnie. Mój syn pewnie dał by radę, że bo on słyszy kiedy się rozstroiła. Ale musimy się tego nauczyć, bo wiesz gramy dopiero niecałe dwa miesiące... 

21 minut temu, ethanak napisał:

Oczywiście zakładam, że to nie ma być próba stworzenia rzeczywistego realnego urządzenia tylko chęć sprawdzenia, jaka metoda nadaje się do pomiaru częstotliwości z dokładnością nie gorszą niż 10 centów.

Czemu uważasz, że z tego nie może powstać urządzenie, które moglibyśmy używać? 

Link do komentarza
Share on other sites

38 minut temu, pmochocki napisał:

Czemu uważasz, że z tego nie może powstać urządzenie, które moglibyśmy używać? 

Może moglibyście... ale...

39 minut temu, pmochocki napisał:

on słyszy kiedy się rozstroiła.

Zestrojenia strun nie robisz na jakichś wymyślnych urządzeniach, tylko najpierw stroisz E a do niej dostrajasz na słuch pozostałe. Techniki takiego dostrajania są różne tak że nie będę tu opisywał. Ważne, aby struny współgrały ze sobą.

41 minut temu, pmochocki napisał:

gramy dopiero niecałe dwa miesiące

Tym bardziej nie polecam żadnych fikuśnych ustrojstw. Zrób lepiej generator na 659.2 Hz i używaj w charakterze kamertonu.

Poza tym jakoś nie wyobrażam sobie używania czegoś takiego przy ognisku po trzeciej... no tej, wiesz... kiełbasce 😉 Szczególnie że przy ognisku nawet odstrojenie całości o półton niespecjalnie przeszkadza.

Co do samego ustrojstwa... pamiętaj, że minimalna dokładność prawidłowego stroju to 10 centów (czyli mniej więcej 1.006) - nie wiem jaką dokładność osiągniesz.

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)
58 minut temu, ethanak napisał:

Zestrojenia strun nie robisz na jakichś wymyślnych urządzeniach, tylko najpierw stroisz E a do niej dostrajasz na słuch pozostałe. Techniki takiego dostrajania są różne tak że nie będę tu opisywał. Ważne, aby struny współgrały ze sobą.

Rozumiem, ale jak nastroję dobrze każdą strunę z osobna, to też będą współgrały prawda? 

58 minut temu, ethanak napisał:

Tym bardziej nie polecam żadnych fikuśnych ustrojstw. Zrób lepiej generator na 659.2 Hz i używaj w charakterze kamertonu.

Pewnie najpierw kupię kamerton 🙂

58 minut temu, ethanak napisał:

Ważne, aby struny współgrały ze sobą.

No wiesz... Trzeba się nauczyć rozróżniania kiedy współgrają a kiedy nie. Synowi idzie to lepiej z lekcji na lekcje. W konkursie: "Czy te dźwięki ładnie brzmią razem?" syn zawsze wygrywa, ale nie zdobywa jesze wszystkich punktów. 

58 minut temu, ethanak napisał:

Poza tym jakoś nie wyobrażam sobie używania czegoś takiego przy ognisku po trzeciej... no tej, wiesz... kiełbasce 😉 Szczególnie że przy ognisku nawet odstrojenie całości o półton niespecjalnie przeszkadza.

Po trzeciej kiełbasce, to ja dopiero odważę się coś zagrać. Mojemu synowi na razie kiełbaski nie grożą. A w przyszlosci po trzeciej kiełbasce przy ognisku, to chyba raczej będzie miał coś innego w głowie niż strojenie gitary... 

58 minut temu, ethanak napisał:

Co do samego ustrojstwa... pamiętaj, że minimalna dokładność prawidłowego stroju to 10 centów (czyli mniej więcej 1.006) - nie wiem jaką dokładność osiągniesz.

Stosując najprostrzy opisany sposób, mierząc okres ilością impulsów z jakiegoś kwarcu zegarkowego... Kurcze... Mam nadzieję że dam radę. 

PS: Czemu nie aplikacja na telefon? No bo chciałbym aby syn stroił sam. I właśnie poszliśmy uczycz się grać na gitarze, aby odciągnąć go od telefonu.

Edytowano przez pmochocki
Link do komentarza
Share on other sites

4 godziny temu, Gieneq napisał:

@pmochocki

Popatrz na bibliotekę ArduinoFFT, może to będzie ten kierunek 🙂 Jeżeli przeprowadzisz transformację Fouriera (FFT) np dla 512 punków, to uzyskasz z tego tablicę 256 (tak, połowa) wartości, które odpowiadają udziałowi częstotliwości w sygnale (im większa wartość w danym elemencie tablicy, tym więcej tej częstotliwości w sygnale. W moim projekcie są one zawężane do 19 pasów ale np pasek po lewej stronie tyczy się basów i jego przedział wartości to tylko 1 wartość z wynikowego FFT.

Cześć @Gieneq,

nie przypuszczałem, że biblioteka do obliczania FFT jest dostępna dla najprostszych MCU (ATMega328). Muszę się jej przyjrzeć i porównać czas liczenia FFT dla takich samych danych wejściowych na Arduino i kilku zestawach FPGA(wyposażonych w rożne ilości bloków DSP). To może być bardzo ciekawe porównanie. Jak będę miał jakieś wyniki to napiszę o tym na forum.

Pozdrawiam

  • Lubię! 2
Link do komentarza
Share on other sites

1 godzinę temu, Gieneq napisał:

@pmochocki Może ten układ programowalnego generatora Ci się przyda. Możesz wytworzyć dość dokładny przebieg, zrównać fazy i sprawdzać czy się nałożą. Albo odwrócić fazę i sprawdzić czy się wygłuszy. 

Używałem tego generatora (razem z Arduino UNO) - według mnie bardzo fajnie i stabilnie działa.

Pozdrawiam

  • Lubię! 1
Link do komentarza
Share on other sites

49 minut temu, pmochocki napisał:

Rozumiem, ale jak nastroję dobrze każdą strunę z osobna, to też będą współgrały prawda? 

Tyle mówi teoria...

49 minut temu, pmochocki napisał:

Trzeba się nauczyć rozróżniania kiedy współgrają a kiedy nie.

Nie przesadzaj. Pierwsza struna (najwyższa) pusta i druga na piątym progu mają brzmieć tak samo. I nie obraź się - ale jeśli ktoś nie potrafi stwierdzić czy dwa dźwięki grane jednocześnie są takie same czy nie - powinien jak najszybciej sprawdzić, czy może ładnie rysuje 🙂

 

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.