Generator sinusoidy od 0 do 400Hz na uC

Loading thread data ...

Robbo pisze:

To czego szukasz to DDS:

formatting link

Reply to
Zbych

On Mon, 31 Aug 2009 22:08:03 +0200, Robbo wrote: [ciach]

Wystarczy zrobić tablicę dla 1/4 i potem odpowiednio czytać wartości (w przód/w tył), ale jeśli pamięci w zapasie to można wrzucić 1/2.

Chyba bardziej poprawnie "400 Hz * 256" dla 256 próbek :) .

Hmm... ciężko. Przyszło mi do głowy żeby generować sinusoidę ze zmienną liczbą próbek na okres. Tę liczbę próbek tak dobierać aby pojedynczy kwant czasu był wielokrotnością możliwego kwantu uzyskiwanego z przerwania od timera. Np. dla 400 Hz i 100 próbek (na okres) musisz wysyłać próbkę co 25 us. Ustalasz sobie tick zegara na np. 2,5 us (4 MHz,

8 MHz i prescaler na 2, itd.) i co dziesiąty tik timera wysyłasz próbkę (korzystając z trybu CTC). Dla 399 Hz dobieramy ilość próbek tak alby przerwanie generowało się co wielokrotność 2,5 us, np. dla 125 wychodzi że trzeba wystawiać próbkę co 20,05 us czyli co ok. 8 taktów zegara timera. Dla 398 Hz i 84 próbek generujesz przerwanie co 29,91 us ~= 30 us => 12 taktów zegara i tak dalej. Lepiej zastosować szybkie taktowanie procesora, powinno być więcej rezerwy, można zejść niżej z tym kwantem (dla 10 MHz masz cykl 0,1 us, czyli 20 us to 200 instrukcji /realnie ze 140/). Do policzenia optymalnej liczby próbek dla danego kwantu i częstotliwości lepiej użyć stacjonarny komputer i zrobić z tego tabelkę - obliczenia raczej proste ale sinus by się musiał wstrzymać na trochę. Przy tej metodzie zawsze będziesz miał jakąś odchyłkę od całkowitej liczby Hz (błąd łatwo policzyć). Przy wyższych częstotliwościach CPU będzie i czas na inne rzeczy (np. miganie diodą).

Inne rozwiązanie to generator sterowany napięciem + precyzyjny przetwornik D/A - ładny sinus, łatwe sterowanie.

Reply to
Łukasz Góralczyk
Reply to
Sylwester Łazar

I otrzymamy nieladny prostokat :-) No chyba ze transformator bedzie za maly, to wtedy otrzymamy cos zupelnie innego.

J.

Reply to
J.F.

Że co?

Reply to
RoMan Mandziejewicz

Bo te komplikacje w pewnych sytuacjach moga być najłatwiejszym i najtańszym rozwiązaniem problemu. Juz się nawet nie opłaca mrygałki robic na tranzystorach kiedy obok leży uC za $1.

Reply to
Sebastian Biały

Witam,

marko1a pisze:

Podstawowa wada tego rozwiązania to cena. :) Po ile stoją teraz te układy w detalu? Kiedyś to chyba ponad 50zł na coś takiego chcieli, choć ten co podałeś to zdaje się staroć...

Reply to
Dykus

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.