Skocz do zawartości

Regulacja częstotliwości enkoderem STM32F0


Pomocna odpowiedź

Napisano

Cześć,

załóżmy, że wygenerowałem przebieg sinusoidalny(składający się z 1000 próbek) przy użyciu DAC wyzwalanego Timerem6 w STM32F303VCTx. Przebieg ten ma częstotliwość równą Freq = 72MHz/1000(próbek)/3(prescaler)/1(counter period) = 24 kHz. Czy jest możliwość płynnej regulacji częstotliwości w zakresie od 0 do 24 kHz programowo?(myślałem nad wrzucaniem liczby zmiennoprzecinkowej np do counter period ale niestety, timer przyjmuje tylko liczby całkowite). Czy lepiej regulować ją jakimś układem elektronicznym? 

  • Lubię! 1

Tego nie robi się w ten sposób. Po pierwsze napisz do czego to ma być. Po drugie zastanów się jakie pasmo analogowe Cię interesuje. Po trzecie koniecznie przeczytaj (dowolną liczbę razy, aż dobrze zrozumiesz) o idei DDS (tzw. Direct Digital Synthesis). Poniżej masz link na coś na początek. Analog pisze tak by wyszło na to, że jego scalaki DDS są najlepsze i niezastąpione - w pewnych przypadkach tak jest i możesz tak postąpić, ale możesz też zrobić taki generator czysto programowo na procesorze i stałej częstotliwości przerwań od timera (który nota bene tylko wyzwala transfer kolejnej próbki z RAMu do DACa przez DMA, bo sam program to jednak jitter i dodatkowe szumy - od tego masz mocny procesor by z niego korzystać). Przecież CD-audio czy radio DAB czy komputer odtwarzający muzyczkę ze Spotify nie zmieniają częstotliwości próbkowania wysyłając do głośnika różne dźwięki, prawda? Ty też nie musisz.

https://www.analog.com/en/analog-dialogue/articles/all-about-direct-digital-synthesis.html

 

  • Lubię! 1

Chciałbym zrobić generator funkcyjny nie używając scalonego układu generatora ADXXXX. Offset mogę regulować programowo, napięcie potencjometrem, tylko zastanawiam się jak regulować częstotliwość(tu mam trochę chaos w głowie). 

(edytowany)

Acha, wciąż się zastanawiasz? A nad czym? Bo przecież dostałeś na talerzu rozwiązanie. Może tak: jeszcze raz przeczytaj powoli cały mój post a potem artykuł który podlinkowałem. Tam jest napisane jak masz to zrobić. W razie wątpliwości pytaj o szczegóły, ale tylko wtedy gdy zrozumiesz jak działa DDS - przecież to nie jest nazwa jakiegoś magicznego bloku sprzętowego w konkretnym scalaku tylko pewnej ogólnej metody syntezy częstotliwości, a jej właśnie potrzebujesz. Nie ma sensu żeby po raz któryś na łamach Forum to tłumaczyć skoro jest tyle dobrej literatury. To nie jest żaden rocket science tylko proste dodawanie modulo, które STM32 zrobi z palcem w.. nosie. Jeśli skończyłeś podstawówkę albo gimnazjum to zrozumiesz. Do roboty.

Edytowano przez marek1707

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...