Forum elektroda.pl

Regulamin  | Punkty  | Dodaj...  | Ostatnie  | Szukaj  | Rejestracja  | Zaloguj

Ta strona używa cookie. Dowiedz się więcej o celu ich używania i zmianie ustawień cookie w przeglądarce.
Korzystając ze strony wyrażasz zgodę na używanie cookie, zgodnie z aktualnymi ustawieniami przeglądarki.

Tuner gitarowy


Napisz nowy temat  Temat zablokowany      Strona Główna -> Forum elektroda.pl -> Mikrokontrolery Ogólne -> Tuner gitarowy
Autor
Wiadomość
Intel
Poziom 13
Poziom 13


Dołączył: 01 Kwi 2003
Posty: 112
Miasto: Bydgoszcz

Post#1 Post autora tematu 22 Lis 2004 22:44   

Tuner gitarowy


Mam ogromny problem ze skompilowaniem pewnego pliku w C próbowałem już długo ale nadal nic czy ktoś może mi powiedzieć czy ten kod jest w porządku ??

Kod:

/*

   Simple Digital Guitar Tuner
   ---------------------------
   version 1.0      2001-02-12   jesper
   


   PIN assignements on the 2323
   
   PB0      High LED
   
   PB1      Input pin
   
   PB2      Low Led

*/


#include <io.h>
#include <signal.h>




#define F_CPU            11059200         // CPU clock frequency
#define PRESCALER         64               // CPU prescaler value



#define BASE_FREQUENCY      (F_CPU/PRESCALER)   // counter frequency   

#define TUNING_FORK_A      440.0            // "base" A
#define NOTE_DIFF         1.05946309436      // the 12'th root of 2


#define E_STRING   164.81                  // top string (1)
#define A_STRING   220.00
#define D_STRING   293.66
#define G_STRING   391.99
#define B_STRING   493.88            
#define EH_STRING   659.26                  // bottom string (6)


// The guitar note span
//  # # #  # #  # # #  # #
//EF G A BC D EF G A BC D E
//1    2    3    4 * 5    6
//

unsigned int Center_Count[] =
{
   BASE_FREQUENCY/EH_STRING,         // High E
   BASE_FREQUENCY/B_STRING,         // B
   BASE_FREQUENCY/G_STRING,         // G
   BASE_FREQUENCY/D_STRING,         // D
   BASE_FREQUENCY/A_STRING,         // A
   BASE_FREQUENCY/E_STRING,         // Low E
};

unsigned int Transition_Count[] =
{
   BASE_FREQUENCY/(B_STRING+(EH_STRING-B_STRING)/2),   // E to B
   BASE_FREQUENCY/(G_STRING+(B_STRING-G_STRING)/2),      // B to G
   BASE_FREQUENCY/(D_STRING+(G_STRING-D_STRING)/2),      // G to D
   BASE_FREQUENCY/(A_STRING+(D_STRING-A_STRING)/2),      // D to A
   BASE_FREQUENCY/(E_STRING+(A_STRING-E_STRING)/2),      // A to E
};




volatile unsigned char count_hi;   // overflow accumulator

//
//timer 0 overflow interrupt
//
SIGNAL(SIG_OVERFLOW0)   
{
   count_hi++;                  // increment overflow count
}


//----------------------------------------------------------------------------
// Main Lupe
//----------------------------------------------------------------------------


int main(void)
{
   unsigned int i;
   unsigned int count;
   

 //------------------------------
 // Initialize
 //------------------------------

   cbi(DDRB, 1);         // PB1 is input
   cbi(PORTB, 1);         // no pullups active

   
   sbi(DDRB, 0);         // PB0 is ouput, High LED
   sbi(DDRB, 2);         // PB2 is ouput, Low LED


   outp(0x03,TCCR0);      // set prescaler to f/64 (172.8 kHz @ 11.0592 MHz)

   sbi(TIMSK,TOIE0);      // enable interrupt on timer overflow
   asm volatile ("sei");   // global interrupt enable

 

 //----------------------------------------------------------------------------
 // Let things loose
 //----------------------------------------------------------------------------                       


   while (1)                        // loop forever
   {
      count = 0;                     // clear sample count
      loop_until_bit_is_set(PINB,1);      // wait for something to happen

      // got a high edge
      // start sampling
      
      outp(0,TCNT0);                  // clear counter      
      count_hi = 0;                  // clear hi count

      
      // sample loop
      
      for (i=0;i<32;i++)
      {
         while (bit_is_set(PINB,1))      // ignore hi->lo edge transitions
            if (count_hi > 80)         // skip if no edge is seen within
               break;               // a reasonable time

         while (bit_is_clear(PINB,1))   // wait for lo->hi edge
            if (count_hi > 80)         // skip if no edge is seen within
               break;               // a reasonable time

         count += (count_hi << 8) + inp(TCNT0); // get counter value
         outp(0,TCNT0);               // clear counter      

         if (count_hi > 80)            // skip if counter has accumulated a
            break;                  // too high value

         count_hi = 0;               // clear hi count
      }




      // initially turn off both leds
      sbi(PORTB,0);
      sbi(PORTB,2);

      if (count_hi <= 80)               // if count is reasonable
      {

         count = count >> 5;            // average accumulated count by dividing with 32
   
         // now we have to find the correct string
                  
         // go through transition frequencies
         
         for (i=0;i<sizeof(Transition_Count)/sizeof(Transition_Count[0]);i++)
         {
            if (count < Transition_Count[i])   // stop if lower than this transition count
               break;
         }            
         
         // i now holds the string index
         
         // check the count for a match, allowing
         // 1 extra count "hysteresis" to avoid too
         // much LED flickering
         
         if (count-1 <= Center_Count[i])         // if count <= this string count
            cbi(PORTB,0);                  // light "Too High" LED
   
         if (count+1 >= Center_Count[i])         // if count >= this string count
            cbi(PORTB,2);                  // light "Too Low" LED
      }
   }


}


Aha i jeszcze jedno czy da rade to wcisnąć na 2313 ?? (program rzekomo pisany na 2323) i czy bedzie to działac na tym klocku ??
Prosze o szybką odpowiedz a najlepiej skompilowany plik rzeby to mógł wrzycić przez programator.

P.S u mnie podczas kompilacji cvavr-em wyskakują jakieś błędy dot. #include <io.h>
#include <signal.h> :(
Powrót do góry
   
LordBlick
Zasłużony dla elektroda
Zasłużony dla elektroda


Dołączył: 31 Sie 2004
Posty: 5476
Miasto: Słupsk

Post#2 22 Lis 2004 22:48   

Tuner gitarowy


Kod:
#include <2313io.h>
Może tak ?
Pozdrawiam, LightI
Powrót do góry
   
Intel
Poziom 13
Poziom 13


Dołączył: 01 Kwi 2003
Posty: 112
Miasto: Bydgoszcz

Post#3 Post autora tematu 23 Lis 2004 00:34   

Tuner gitarowy


No dobra powiedzmy że tak :) ale teraz jest zasadnicze moje pytanie ! czy to pójdzie na 2313 skoro było pisane na 2323 ?? (duża jest różnica w tych klockach ??). Zakładając że działa to nasuwa mi sie drugie pytanie co z biblioteką singal.h ?? nie mam jej w CVAVR !!! :(
Powrót do góry
   
Google


Google Adsense


Post# 23 Lis 2004 00:34   





Powrót do góry
   
LordBlick
Zasłużony dla elektroda
Zasłużony dla elektroda


Dołączył: 31 Sie 2004
Posty: 5476
Miasto: Słupsk

Post#4 23 Lis 2004 04:34   

Re: Tuner gitarowy


AT90S2313 to procesorek o większych możliwościach, posiada wszystko to samo co AT90S2323, więc nie powinno byc problemów, ma nawet więcej pin - mozna się pokusić o dorobienie obsługi linijki świetlnej pokazującej dostrojenie, a może nawet jakiś LCD...
Ta biblioteka <signal.h>, to może część programu również napisana przez autora ? Co się dzieje, jak "#include <signal.h>" zakomentujesz ? Gdzie można coś takiego dostać, łączne ze schematem ? (też mam gitarę... :)).
Pozdrawiam, LightI
Powrót do góry
   
zumek
Poziom 23
Poziom 23


Dołączył: 08 Paź 2003
Posty: 3317

Post#5 23 Lis 2004 20:21   

Re: Tuner gitarowy


Intel napisał:
Mam ogromny problem ze skompilowaniem pewnego pliku w C próbowałem już długo ale nadal nic czy ktoś może mi powiedzieć czy ten kod jest w porządku ??


Jest w porzadku , ale dla kompilatora avrgcc :(

Dołączam przeróbkę dla CV. Teoretycznie działa :wink:

Pzdr.
Piotrek Sz. i tez mam gitare :wink:

PS.
Tu jest strona projektu

Załączniki:
Powrót do góry
   
LordBlick
Zasłużony dla elektroda
Zasłużony dla elektroda


Dołączył: 31 Sie 2004
Posty: 5476
Miasto: Słupsk

Post#6 23 Lis 2004 21:47   

Tuner gitarowy


No tak, signal.h, pozostałość od nagłówka od kernela linuksa... Do czego to tu może właściwie być potrzebne ? Dzięki zumek za linka i plika.
:arrow: Intel wyciąłeś licencję GPL ;)
Pozdrawiam, LightHouser
Powrót do góry
   
Intel
Poziom 13
Poziom 13


Dołączył: 01 Kwi 2003
Posty: 112
Miasto: Bydgoszcz

Post#7 Post autora tematu 23 Lis 2004 23:27   

Re: Tuner gitarowy


eh tam odrazu :) myślałem że nikt nie zauważy :P

Właśnie robie do tego projektu płytke w EAGLE jak zrobie to udostępnie :)

Pozdrawiam
Powrót do góry
   
r1pl3j
Poziom 12
Poziom 12


Dołączył: 21 Maj 2003
Posty: 103

Post#8 05 Gru 2004 18:02   

Re: Tuner gitarowy


LightHouser napisał:
No tak, signal.h, pozostałość od nagłówka od kernela linuksa... Do czego to tu może właściwie być potrzebne ?


hmm nie bardzo rozumiem..myslalem ze chodzi o signal.h z bibliotek crossavr-libc( bo przynajmniej do tego pakietu ten plik nalezy...)

Wlasnie mecze sie nad programatorem ponyproga, zaczynam watpic w sprawnosc mego LPT bo stale krzaki dostaje nawet bez zasilania programatora..:( .Jakie macie doświadczenia z tym programatorem ( wersja na LPT) pod linuxem?
pozdrawiam
Powrót do góry
   
Intel
Poziom 13
Poziom 13


Dołączył: 01 Kwi 2003
Posty: 112
Miasto: Bydgoszcz

Post#9 Post autora tematu 12 Gru 2004 16:34   

Re: Tuner gitarowy


zrobiłem taki drobny "tuning" - dodałem złącze do programatora pod LPTa i teraz pytanie czy to bedzie sprawnie działało przy takim kwarcu ?? (11.0592). Wszędzie w projektach pisze że 4 albo 6 wiec nie wiem czy tego nie usunąć - chciałem z tego zrobić 2 w 1 :). Zadziała ??

Załączniki:
Powrót do góry
   
Google


Google Adsense


Post# 12 Gru 2004 16:34   





Powrót do góry
   
LordBlick
Zasłużony dla elektroda
Zasłużony dla elektroda


Dołączył: 31 Sie 2004
Posty: 5476
Miasto: Słupsk

Post#10 12 Gru 2004 23:48   

Re: Tuner gitarowy


Możesz dać dowolny kwarc (oczywiście w zakresie zalecanym nocie katalogowej), zmieniasz tylko tą linijkę (48 linia w gtuner.c) :
Kod:
#define F_CPU            11059200         // CPU clock frequency

Pozdrawiam, LightHouser
Powrót do góry
   
Google


Google Adsense


Post# 12 Gru 2004 23:48   





Powrót do góry
   
Intel
Poziom 13
Poziom 13


Dołączył: 01 Kwi 2003
Posty: 112
Miasto: Bydgoszcz

Post#11 Post autora tematu 24 Gru 2004 23:12   

Re: Tuner gitarowy


Wiem że moge dać dowolny kwarc - tyle że ja raczej pozostane przy tym jaki bede używał podczas korzystania z tunera (tak aby działał) .

Chodzi mi tylko o to czy bede mógł przy tym kwarcu programować inne klocki ?? metodą ISP przez LPTa.

Sądze żę to bedzie działać (bo w ISPprog jest miejsce gdzie wybieramy przy jakim kwarcu programujemy - przynajmniej tak mi sie wydaje ) ale chciałem sie upewnić.

P.S
Płytka doznała kilku małych kosmetycznych przeróbek i lada dzień zostanie złożona - jak wszystko bedzie OK to wrzuce cały projekt - pliki z opisem, schematem, płytką, skompilowanym programem itp, itd

No i złożyłem to ustrojstwo :) niby działą aje jakoś nie tak jak ma :(. Procesor poprawnie reaguje na sygnał z gitarki poprzez zapalanie diód, tyle że nie za bardzo daje cokolwiek nastroić (pisałęm do autora, tyle ze napiał mi że program był pisany tylko na 2323 :((() więc może to kwestia poprawek w programie. Był bym wdzięczny za wszelką pomoc (niech ktoś spróbuje coś zmienić i mi podesłąć to sprawdze czy działa trochę lepiej) pociesza mnie to rze chociaż programator działa jak należy :) zawsze coś hehe. Tymczasem załączam pliki z eagla.

Mam szczerą nadzieję na pomoc gduż oddaje moją pracę do oceny a aktualnie jestem w kropce :(

Pozdrawiam i wesołych..

Post był raportowany.
Pisanie postu pod postem.
Należy używać przycisku ZMIEŃ.
Scaliłem dwa posty. [hefid]


Załączniki:
Powrót do góry
   
Paweł Es.
Pomocny dla użytkowników
Pomocny dla użytkowników


Dołączył: 14 Wrz 2004
Posty: 7122
Miasto: Warszawa

Post#12 27 Gru 2004 16:29   

Re: Tuner gitarowy


A co te diody pokazują ? Migają bezładnie, migają wszystkie ?
Powrót do góry
   
Intel
Poziom 13
Poziom 13


Dołączył: 01 Kwi 2003
Posty: 112
Miasto: Bydgoszcz

Post#13 Post autora tematu 29 Gru 2004 01:54   

Re: Tuner gitarowy


wygląda to tak - jak nie uderze w strunę to nic sie nie dzieje :) (czyli OK) jak uderzam to zaczynają zapalać sie diody (głównie czerwona - czyli że za wysoko). Gdy zaczynam zbliżać sie do poprawnego stroju danej struny nie za bardzo chcą sie zapalić obie naraz :( czasem zapalają sie obie diody ale nie wtedy kiedy trzeba. Ogólnie to działa ale baaaardzo niedokładnie :(.

Tak sobie myślałem że może to wina przetaktowania procesora !! wkońcu 2313 idzie max na 10 MHz a w tym programie na 11,0592 MHz - ja sie nie znam ale może ktoś spróbuje przerobić np. na 4 MHz (z tego co wiem to trzeba nie tylko zmienić #define F_CPU - no chyba ze sie mylę to proszę sprostować).

Aha...niech ktoś mi wytłumaczy dlaczego w tym programie mamy tak zdefiniowane częstotliwości strun:
Kod:

#define E_STRING   164.81                  // top string (1)
#define A_STRING   220.00
#define D_STRING   293.66
#define G_STRING   391.99
#define B_STRING   493.88             
#define EH_STRING  659.26                  // bottom string (6)


z tego co sie orientuję to powinny być dwa razy mniejsze te wartości !!

Z góry dziękuję za wszelką pomoc.

Pozdrawiam
Powrót do góry
   
ko_rex
Poziom 15
Poziom 15


Dołączył: 29 Gru 2004
Posty: 253
Miasto: Dąbrowa Górnicza

Post#14 29 Gru 2004 13:08   

Re: Tuner gitarowy


W sygnale pochodzącym od struny gitarowej jest duża zawartość drugiej harmonicznej (czyli sygnału o dwa razy większej częstotliwości od podstawowej: 110 podstawowa - 220 druga harmoniczna), więc bezpieczniej jest mietzyć właśnie na harmonicznej.
Powrót do góry
   
Intel
Poziom 13
Poziom 13


Dołączył: 01 Kwi 2003
Posty: 112
Miasto: Bydgoszcz

Post#15 Post autora tematu 29 Gru 2004 22:40   

Re: Tuner gitarowy


ok. dziękuję za wytłumaczenie. Niestety program jak nie działał tak nie działa :(, co sądzicie o tych 11,0592 MHz ?? może to przez to przetaktowanie CPU ??
Powrót do góry
   
Paweł Es.
Pomocny dla użytkowników
Pomocny dla użytkowników


Dołączył: 14 Wrz 2004
Posty: 7122
Miasto: Warszawa

Post#16 30 Gru 2004 21:05pomocny post - solucja   

Re: Tuner gitarowy


Problemów to tu jest kilka wynikających z przyjętych niepotrzebnie uproszczeń (Jesper się nie popisał):

Teoria

Pomiaru częstotliwości struny dokonuje się przez pomiar okresu drgań. Dla uzyskania odpowiedniej rozdzielczości przy rozsądnej częstotliwości generatora wzorcowego mierzymy N okresów co daje nam daje nam taki efekt jak byśmy bramkowali okresem drgań struny przebieg N*fclock.

Druga sprawa to dokładność dostrojenia. W muzyce dokładność strojenia mierzy się w centach, przyjmując odległość między półtonami jako 100 centów. Z poprzedniego wynika, że tony różniące się o oktawę (czyli f2=2*f1) są rozstrojone o 1200 centów.

Matematycznie wyraża się to wzorem


3$Odstrojenie=1200*ln_2(\frac{f}{fwz}) [cent]

lub dla ominięcia logarytmu przy podstawie 2:

3$Odstrojenie=1731.23405*ln(\frac{f}{fwz}) [cent]

gdzie

f - częstotliwość mierzona
fwz - częstotliwość wzorcowa

Znaczy to, że dla dobrego dostrojenia wynoszącego &plusmn; 5 centów

częstotliwość mierzonego źródła musi się mieścić w zakresie

0.997116*fwz < f mierzone < 1.0028923*fwz

a dla okresu

1.0028923*twz > tmierzone > 0.997116*twz

Przy strojeniu instrumentu w skali równomiernie temperowanej naszym
fwz są częstotliwości odpowiednich tonów wynikające ich n*100 centów odstrojenia od tonu strojeniowego A=440 Hz.

Dla gitary mamy kolejno < okres >:

E = 82.407 Hz < 12.1349 ms >
A = 110.000 Hz < 9.091 ms>
D = 146.832 Hz < 6.8105 ms>
G = 184.997 Hz < 5.4055 ms>
H = 246.942 Hz < 4.0495 ms>
E1= 329.628 Hz < 3.0337 ms>

Licząc w jednostkach zegara wynikających z częstotliwości kwarcu fkw=1105920 i podzielnika N=64 uwzględniając 32 okresy mierzone otrzymujemy:

Kod:


fwz        twz  twz(-5c)    twz(+5c)               
_82,407   67101   67295   66908
110,000   50269   50414   50124
146,832   37659   37768   37551
184,997   29890   29977   29804
246,942   22392   22457   22328
329,628   16775   16824   16727



Nawet po podzieleniu przez 32 zakresy 5 centowe wynoszą od 2103 do 2091 dla struny najgrubszej do 526 do 522 dla struny najcieńszej.

Z powyższego wynika, że przyjęcie zakresu +/-1 dla włączania diod jest bez sensu ponieważ prawdopodobieństwo precyzyjnego trafienia w tak wąski przedział jest nikłe.

Praktyka

1. Przebieg drgań struny charakteryzuje się tym, że posiada w okresie podstawowym kilka przejść przez zero z powodu dominacji wyższych harmonicznych (patrz załączone przebiegi dla struny najcieńszej E i grubszej G.

2. Przebieg drgań struny może zawierać składowe szumowe przesuwające miejsca przejść przez zero przebiegu podstawowego co skutkuje błędami w pomiarze okresu.

3. Przebieg drgań struny posiada różne stany przejściowe na początku przebiegu wynikające z różnych sposobów jej pobudzenia (kostka, palec, siła naciągu).

Z powyższych wynika, że układ zastosowany przez jespera chyba nigdy nie mierzył poprawnie ponieważ wzmacniacz na jednym tranzystorze nie ukształtuje odpowiednio sygnału szczególnie dla prawidłowego pomiaru okresu (gdzie zbocza przebiegu powinny być ostre).

Dla poprawnego ukształtowania sygnału wejściowego są wymagane (w najprostszym przypadku)

1. Wstępne liniowe wzmocnienie sygnału
2. Filtracja pasmowa 70 Hz- 400 Hz co najmniej 2 rzędu (12 dB/oct)
3. Zastosowanie komparatora z histerezą i tylko dla składowej zmiennej

W bardziej rozbudowanych konstrukcjach można zastosować wzmacniacz AGC dla wyrównania amplitud przebiegu i dodatkowy układ monostabilny za komparatorem o czasie trwania impulsu większym niż połowa najkrótszego mierzonego okresu a za nim przerzutnik dzielący przebieg przez 2 co da procesorowi dopiero odpowiedni przebieg do pomiaru.

Z początkowego punktu 3 wynika, że trzeba dać opóźnienie kilku okresów przed rozpoczęciem właściwego pomiaru okresu dla ominięcia raf związanych ze stanami przejściowymi przebiegu drgań struny a także stanów przejściowych ewentualnego filtru.

Zastosowany przez jespera pomiar drugiej harmonicznej jest bez sensu przy braku filtru przycinającego pasmo.

Co do programu to operacja uśredniania 32 przebiegów:

count = count >>5

miałaby sens jeżeli count byłoby zmienną rzeczywistą, przy zmiennej całkowitej taka operacja powoduje utratę rozdzielczości pomiaru.

Z obliczeń okresu drgań poszczególnych strun wynika, że zastosowana histereza dla diod nie może być stała i zmienia się:

od +/- 194 dla najniżej brzmiącej struny do +/- 49 dla najwyżej brzmiącej struny (uwzględniając dopuszczalny zakres odstrojenia +/- 5 centów i brak dzielenia liczby impulsów przez 32).

Lepszym więc rozwiązaniem będzie rozszerzenie zawartości tablic nie tylko o wartości graniczne między nutami (nota bene +/- 50 centów nie oznacza połowy drogi między częstotliwościami użytymi przez jespera, bo skala jest logarytmiczna a nie liniowa.) ale i o wartości graniczne +/- 5 centów.

Zalecam też używanie do porównań pełnej wartości 32 okresów (lub mniej by nie stosować zmiennej 32 bitowej count. To zwiększy dokładność strojenia.

No to tyle teoretyzowania, mam nadzieję, że nie wpędziłem Kolegi w czarną rozpacz :)

Strojenie gitary tylko na ucho wydaje się proste, niestety ! (niezły "mikrokontroler" mamy w głowach)

Załączniki:
Powrót do góry
   
Paweł Es.
Pomocny dla użytkowników
Pomocny dla użytkowników


Dołączył: 14 Wrz 2004
Posty: 7122
Miasto: Warszawa

Post#17 05 Sty 2005 00:36   

Re: Tuner gitarowy


Kurdesz, nad kurdeszami i odpowiadaj tu człowieku na pytania !
Po co te ludzie pytają jak nie czytają odpowiedzi ?
Zawracanie gitary i to rozstrojonej !
Powrót do góry
   
Bielsky
Poziom 16
Poziom 16


Dołączył: 03 Wrz 2003
Posty: 315
Miasto: Bielsko-Biała / Warszawa / Wrocław

Post#18 05 Sty 2005 13:00   

Tuner gitarowy


Cóż, kolego Pawle.... trzeba się do tego przyzwyczaić albo dać sobie spokój....

Tak sobie myślę......
*W sygnale dominuje druga harmoniczna
*Druga harmonioczna to - powiedzmy taki sam dźwięk, jak pierwsza...

Proponuję zrobić tablicę dopasującą dźwięki parami różniące się o oktawę. Przekręcenie struny o oktawę jest trudne :)

Potencjalny problem, gdy pojawi się dużo trzeciej harmonicznej: 82*3=246 (trzecia harmoniczna niskiego E daje H, podobnie z A zrobi się E),
Można spróbować dać filtr korygujący o opadającej charakterystyce o np 3dB/oktawę. Takie rozwiązanie przydałoby się uzupełnić automatyczną regulacją wzmocnienia.

Gdzieś widziałem algorytm obliczający częstotliwość przebiegu odkształconego na podstawie odnajdywania powtarzających się czasów podokresów w przesterowanym przebiegu, niestety nie pamiętam gdzie.
Powrót do góry
   
Paweł Es.
Pomocny dla użytkowników
Pomocny dla użytkowników


Dołączył: 14 Wrz 2004
Posty: 7122
Miasto: Warszawa

Post#19 05 Sty 2005 13:31pomocny post - solucja   

Re: Tuner gitarowy


Bielsky napisał:
Cóż, kolego Pawle.... trzeba się do tego przyzwyczaić albo dać sobie spokój....

Tak sobie myślę......
*W sygnale dominuje druga harmoniczna
*Druga harmonioczna to - powiedzmy taki sam dźwięk, jak pierwsza...


To nie jest takie proste, proporcje harmonicznych zależą od sposobu pobudzenia struny poza tym to się zmienia w miarę wybrzmiewania struny.

Cytat:

Można spróbować dać filtr korygujący o opadającej charakterystyce o np 3dB/oktawę. Takie rozwiązanie przydałoby się uzupełnić automatyczną regulacją wzmocnienia.


Prosty filtr mało da. W znalezionym opisie patentowym tunera wynalazca stosował 2 filtru pasmowe - pierwszy obejmował 3 najniższe struny a drugi pozostałe i były analizowane dwa kanały równolegle. Chodziło o eliminację problemu harmonicznych najniższych strun.
Powrót do góry
   
Intel
Poziom 13
Poziom 13


Dołączył: 01 Kwi 2003
Posty: 112
Miasto: Bydgoszcz

Post#20 Post autora tematu 05 Sty 2005 15:21   

Re: Tuner gitarowy


Przepraszam najmocniej - jak bym mógł to bym odpowiedział wcześniej.
Bardzo dziękuję panu Pawłu za tak obszerne opisanie tematu - niestety wcale mnie to nie cieszy :( ( to że nie działa układ :(:(:(:( ).

Tak sobie pomyślałem że czy nie powino to działać lepiej gdybym to podłączył pod generator ?? np. sinus. Co też uczyniłem przez komputer (poziom sygnału ustawiłem minimalny, czyli tak żeby ATMEL zaczął reagować) no i niestety nadal jest lipa. Jest taki sam problem z dostrojeniem.
Hmm.... nie wiem ale wydale mi sie że chyba powinno teoretycznie zadziałać lepiej przy generatorze ??. Czy może ktoś ma jakiś inny pomysł ?? może coś z tym generatorem bo wydaje mi się że chyba dobrze kompinuje (chodzi mi chociaż żeby zaprezentować że układ działa, bo nie będę taszczył gitary do szkoły).

Jeszcze raz przepraszam za moją szybką odpowiedz ;)
Powrót do góry
   
Google


Google Adsense


Post# 05 Sty 2005 15:21   





Powrót do góry
   
Paweł Es.
Pomocny dla użytkowników
Pomocny dla użytkowników


Dołączył: 14 Wrz 2004
Posty: 7122
Miasto: Warszawa

Post#21 05 Sty 2005 16:12   

Re: Tuner gitarowy


Cytat:

Tak sobie pomyślałem że czy nie powino to działać lepiej gdybym to podłączył pod generator ?? np. sinus. Co też uczyniłem przez komputer (poziom sygnału ustawiłem minimalny, czyli tak żeby ATMEL zaczął reagować) no i niestety nadal jest lipa.


Tam poziom powinien być spory by na kolektorze tranzystora były w miarę ostre zbocza - ten tranzystor jest normalnie nasycony czyli ma stan niski na wyjściu i dopiero przy ujemnych półfalach sygnały wejsciowgo jest zatykany.

Cytat:


Jest taki sam problem z dostrojeniem.

Hmm.... nie wiem ale wydale mi się że chyba powinno teoretycznie zadziałać lepiej przy generatorze ??. Czy może ktoś ma jakiś inny pomysł ?? może coś z tym generatorem bo wydaje mi się że chyba dobrze kompinuje (chodzi mi chociaż żeby zaprezentować że układ działa, bo nie będę taszczył gitary do szkoły).


Rozszerz ten zakres histerezy bo +/1 jeden to strasznie ostro.

Sprawdź czy jeżeli ustawisz fwe niższe od najniższej częstotliwości struny E i wyższe od najwyższej częstotliwości struny E1 to palą się na stałe odpowiednio dioda za małe lub za duże. Tylko ustawiaj w rozsądnym zakresie.

Jeżeli nie palą się tak to znaczy, że nie działa ten fragment pomiaru okresu.

A i coś mi dziwnie wygląda ten warunek zakończenia w tej pętli for, która służy do szukania konkretnej częstotliwości.

Nie mozna tego sizeof(TransitionCount)/sizeof(TransitionCount[0]) zastapić po prostu liczbą 5 ?

W razie czego można spróbować z kwarcem o mniejszej częstotliwości.
Powrót do góry
   
gonia
Poziom 9
Poziom 9


Dołączył: 20 Gru 2003
Posty: 41

Post#22 06 Sty 2005 00:08   

Re: Tuner gitarowy


być może rozwiązanie problemu jest tutaj:

http://rab.ict.pwr.wroc.pl/dydaktyka/supwa/projects/icek/html/idea.html

hociaż opis projektu jest rzeczowy i przekonujący, to pojawiające się w nim uwagi typu:
"Ponieważ projekt nie został uruchomiony nie wiadomo... , ...ale niestety nie zostało to sprawdzone"
sugerują wątpliwy finał realizacji praktycznej stroika.

wykonałem takie urządzenie bez użycia procesora (opis w EP z przed kilku lat - dodałem mikrofon pojemnościowy, a pierścień z 10 LED)
spisuje się doskonale!!
lecz wykonanie z procesorkiem jest kuszące 8-)

pzdr gonia
Powrót do góry
   
buc
Poziom 14
Poziom 14


Dołączył: 21 Cze 2003
Posty: 165
Miasto: ruda slaska

Post#23 26 Sty 2005 17:07   

Re: Tuner gitarowy


o co tyle hałasu,,przerabiałem projekt na 2313 i ten sam problem ,,diody migają nie wiadomo co,,najprościej nagrać program fxguitar poszukać w googlach i sprawa załatwiona stroi jak lala,,jeszcze na dodatek można definiować w jakiej tonacji ma być strojona gitara.
narazie pozdro
Powrót do góry
   
Intel
Poziom 13
Poziom 13


Dołączył: 01 Kwi 2003
Posty: 112
Miasto: Bydgoszcz

Post#24 Post autora tematu 26 Sty 2005 21:57   

Re: Tuner gitarowy


wiem że najprościej to pod kompa podłączyć i jest git. Tylko że ja bede miał te pracę ocenią pod zwględen funkcjonalności :(. Moja prośba o pomoc jest nadal aktualna (choć wątpie że ktoś mi zdołą w tym wypadku pomóc :().
buc-jeśli możesz to wyśli mi skompilowany program przez ciebie (może olśli choć troszkę mój stroik ;)) intelx(malpa)o2.pl

Dziękuję z góry i pozdrawiam
Powrót do góry
   
gilong
Poziom 17
Poziom 17


Dołączył: 26 Paź 2004
Posty: 356

Post#25 03 Paź 2006 22:19   

Re: Tuner gitarowy


a robil ktos cos podobnego na atmega8 ? bo probowalem przerobic ale nie udalo mi sie
Powrót do góry
   
Napisz nowy temat  Temat zablokowany      Strona Główna -> Forum elektroda.pl -> Mikrokontrolery Ogólne -> Tuner gitarowy
Strona 1 z 1



Administrator || Moderatorzy || Regulamin forum || Regulamin ogólny || Informacja o cookies || Reklama || Kontakt

Page generation time: 0.179 seconds

elektroda.pl temat RSS