Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega - generacja fali sinus

trkmajor 19 Lis 2013 14:57 4245 30
  • #1 19 Lis 2013 14:57
    trkmajor
    Poziom 10  

    Koledzy
    Czy przy pomocy Atmegi328 z zegarem 4MHz można wygenerować na wyj. analogowaym sygnał sinus 1.8MHz?

    0 29
  • #2 19 Lis 2013 16:25
    elektryk101
    Warunkowo odblokowany

    Na pewno nie wygenerujesz sinusa o częstotliwością 1.8MHz z jakiegokolwiek ATmega.
    Do wygenerowania sinusa potrzebny byłby PWM z filtrem RC, ale PWM nie osiągnie tak wysokiej częstotliwości w AVR.

    0
  • #3 19 Lis 2013 16:50
    tmf
    Moderator Mikrokontrolery Projektowanie

    A niby czemu nie? Osiągnie, a w przypadku AVR z PLL osiągnie nawet znacznie większą, jednak sinus z tego będzie kiepski bo PWM będzie miał rozdzielczość zaledwie paru bitów. Pytanie więc jak dokładny ma to być sinus?

    0
  • #4 19 Lis 2013 17:14
    elektryk101
    Warunkowo odblokowany

    tmf napisał:
    A niby czemu nie? Osiągnie, a w przypadku AVR z PLL osiągnie nawet znacznie większą, jednak sinus z tego będzie kiepski bo PWM będzie miał rozdzielczość zaledwie paru bitów. Pytanie więc jak dokładny ma to być sinus?

    Ale pytanie było o ATmega328, a to nie ma PLL.

    0
  • #5 19 Lis 2013 18:54
    excray
    Poziom 39  

    Teoretycznie zależy jak ładny to ma być sinus. Sinusa można sobie z prostokątnego przebiegu zrobić analogowo. Może lepiej niech kolega rozwinie temat i opisze do czego ten sinus jest potrzebny i jakie są założenia.

    0
  • #6 19 Lis 2013 20:34
    piotrva
    Moderator Mikrokontrolery

    Z zegarem 4MHz nie ma nawet szans na 1,8MHz o jakim takim wyglądzie.
    Na pewno musisz dobić sobie do 16MHz, przy tych częstotliwościach rzeczywiście największy sens miałby układ generujący sinus z prostokąta.

    Ale jak pisali przedmówcy - powiedz do czego ma być podany taki sinus.

    Innym wyjściem jest zastosowanie gotowego scalonego generatora DDS - takowe są dostępne na pewnym serwisie aukcyjnym na gotowych płytkach w cenach poniżej 40zł. Podpinamy toto do procesora i możemy generować dowolną częstotliwość, zwykle w tych tanich układach na AD9850 mamy dostępne 2 rodzaje wyjść - sinus oraz prostokąt.

    0
  • #7 20 Lis 2013 07:47
    94075
    Użytkownik usunął konto  
  • #8 20 Lis 2013 10:16
    BlueDraco
    Specjalista - Mikrokontrolery

    Przesadzasz, Albercie. Można wygenerować b. przywoity sinus 1.8 MHz na DAC działającym na np. 20 MHz, oczywiście z filtrem z tyłu. Tylko trzeba umieć... ;)

    0
  • #9 20 Lis 2013 12:57
    94075
    Użytkownik usunął konto  
  • #10 20 Lis 2013 14:18
    deus.ex.machina
    Poziom 31  

    Oczywiscie możesz wygenerować sinus przy pomocy uC - wystarczy ze zasilisz przebiegiem prostokątnym obwód rezonansowy LC.

    Jeśli szukasz metody cyfrowej to z trudem ale dałoby się wyprodukować 1.8MHz z LUT z próbkami odgrywanymi z prędkością 4MHz - wymagania na filtr rekonstrukcyjny jednak będą już znaczne.

    Inne metody generacji sinusoidy to np:
    CORDIC, generator w oparciu filtr IIR, DAC z wagami sinusoidalnymi (sine-weighted DAC) - w jednej z popularnych książek opisany był generator w którym sinusoidalnie ważona siec rezystorów była przełączana przy pomocy multipleksera analogowego z rodziny CD4000 - jeśli dobrze pamiętam 4067.

    LUT okresu dla sinusa 1.8MHz przy próbkowaniu 4MHz - skwantyzuj go sobie do zadanej rozdzielczości bitowej (policz dokładnie cykle i ewentualnie powiel okresy tak by ograniczyć liczbę skoków.

    Code:

    0.0000000000
    0.3090169940
    -0.5877852520
    0.8090169940
    -0.9510565160
    1.0000000000
    -0.9510565160
    0.8090169940
    -0.5877852520
    0.3090169940
    0.0000000000
    -0.3090169940
    0.5877852520
    -0.8090169940
    0.9510565160
    -1.0000000000
    0.9510565160
    -0.8090169940
    0.5877852520
    -0.3090169940


    Możesz pomyśleć o ewentualnie "bit angle modulation" bo zwykle PWM jest niewystarczające przy tak malej częstotliwości...

    0
  • #11 20 Lis 2013 14:54
    94075
    Użytkownik usunął konto  
  • #12 20 Lis 2013 15:13
    deus.ex.machina
    Poziom 31  

    albertb napisał:
    deus.ex.machina napisał:
    wystarczy ze zasilisz przebiegiem prostokątnym obwód rezonansowy LC.

    Nie wystarczy, Prostokąt musi jeszcze mieć częstotliwość będącą podwielokrotnością 1,8MHz ;-)
    Wszystkie pozostałe metody wymagają jednak czegoś więcej niż zegar 4MHz.
    Ale fajnie, że zostały wymienione, odświeża to trochę spojrzenie na całość tematu.

    Albert


    A tu bym polemizował - proponuje sprawdzić jak zachowuje się selektywny obwód rezonansowy w obecności impulsu Diraca (tak wiem ze przebieg prostokątny to nie impuls Diraca).

    Tak czy siak biorąc poprawki na autora tematu (czy wspomniany uC ma jakiekolwiek wyjście analogowe?) 20 próbek zmieści się w rejestrach AVR skąd można wyprowadzać je na port, pamięć ma pojemność ok 400 kilku us przebiegu.

    0
  • #13 20 Lis 2013 17:33
    94075
    Użytkownik usunął konto  
  • #14 21 Lis 2013 16:18
    deus.ex.machina
    Poziom 31  

    albertb napisał:
    deus.ex.machina napisał:
    A tu bym polemizował

    Zamiast polemizować podaj mechanizm, który mógłby dać na wyjściu układu liniowego (takim jest układ LC)
    częstotliwość niewystępującą w sygnale wejściowym (takowa nie występuje w widmie sygnału prostokątnego).


    Jeszcze raz sugeruje by kolega przeanalizował odpowiedź układu LC na skok jednostkowy (Funkcja skokowa Heaviside'a) i impuls Diraca (delta Diraca)

    albertb napisał:

    Z grubsza to tak jakbyś sugerował, że źle zestrojony obwód antenowy nadajnika spowoduje zmianę częstotliwości nadawania przy stałej częstotliwości generatora.

    Albert


    Niefortunne porownanie...

    0
  • #15 21 Lis 2013 16:53
    tronics
    Poziom 36  

    Cytat:
    Jeszcze raz sugeruje by kolega przeanalizował odpowiedź układu LC na skok jednostkowy (Funkcja skokowa Heaviside'a) i impuls Diraca (delta Diraca)

    Ależ albert ma rację, z sygnału prostokątnego o stałej częstotliwości f i wypełnieniu D nie otrzymasz przez żaden filtr LC sinusa np. 0.1f. Cały ów selektywny obwód rezonansowy LC to filtr pasmowoprzepustowy mający za zadanie wyłuskać jakiegoś sinusa z przebiegu prostokątnego - a jakie tam masz sinusy? Oprócz podstawowej harmonicznej masz wyższe harmoniczne, nieparzyste z odpowiednio niższymi amplitudami więc nijak nie uzyskasz 2f, 4f, 0.5f, 0.2f itp. itd.

    0
  • #16 21 Lis 2013 20:32
    piotrva
    Moderator Mikrokontrolery

    Panowie drodzy, polemizujemy, dyskutujemy, a nadal nie wiemy do czego Autor tego potrzebuje...
    Może niefortunnie poszukuje sinusa, a wystarczy mu trójkąt/prostokąt, a może potrzebuje sinusa wysokiej jakości i wtedy AVR nijak nie da rady przy tych parametrach...

    0
  • #17 22 Lis 2013 14:22
    94075
    Użytkownik usunął konto  
  • #18 29 Lis 2013 00:30
    deus.ex.machina
    Poziom 31  

    albertb napisał:
    deus.ex.machina napisał:
    Niefortunne porownanie...


    To nie porównanie.
    To logiczna konsekwencja przyjęcia Twoich założeń za prawdziwe.

    Albert


    Ja jedna apeluje by kolega zadał sobie trud i sprawdził odpowiedz układu rezonansowego na pobudzenie impulsowe.

    0
  • #20 29 Lis 2013 11:13
    deus.ex.machina
    Poziom 31  

    tronics napisał:
    http://www.fourier-series.com/RLC-Circuit/Flash%20Programs/RLC-impulse.html
    Niech kolega deus.ex.machina udowodni, że z dowolnego prostokąta selektywnym obwodem LC jest w stanie wyłuskać dowolny sinus - bo to jest akurat tematem ostatnich kilku wpisów.


    Kolego, ja pisze o pobudzeniu równoległego układu rezonansowego seria skoków jednostkowych - nie o zasilaniu układu rezonansowego 1.8MHz przebiegiem prostokątnym o częstotliwości 2MHz i oczekiwaniu magicznej konwersji na 1.8MHz - myślę ze od początku skupiliście się obaj na określonym aspekcie problemu i ignorowaliście inne strony (bo autor nie określił co dokładnie go interesuje a z opisu problemu wygląda to na jakiś dziwaczny "zakład o rzodkiewkę" ).
    Tyle ode mnie a chętni mogą sobie poeksperymentować z odpowiedzią równoległego układu LC na pobudzenie skokiem jednostkowym na http://www.cvel.clemson.edu/emc/calculators/RLC_Calculator/index.html .

    Taks obie jeszcze myślę ze można byłoby użyć układ modulatora zrównoważonego do powielenia przebiegu sinusoidalnego o niższej częstotliwości generowanego przez uC (by uniknąć niedomówień - sygnał sinusoidalny jest generowany przez uC). Autor po prostu nie określił warunków brzegowych ani dla przebiegu (poza tym ze ma to być sinusoida) ani dla technik (czyli może wystarczy uC jako źródło i trochę elektroniki na zewnątrz do konwersji a może uC kontrolujący VCO a może inne techniki generacji - brak warunków brzegowych).

    0
  • #21 29 Lis 2013 12:37
    94075
    Użytkownik usunął konto  
  • #22 29 Lis 2013 16:09
    tronics
    Poziom 36  

    @albert - wątpię by dotarło
    @deus.ex.machina - najpierw piszesz o rzuceniu prostokąta na selektywny filtr LC, później o sprawdzeniu odpowiedzi impulsowej/skokowej filtru LC, gdy i to okazuje się ślepym zaułkiem piszesz o serii impulsów. Zdecyduj się wreszcie na coś i sam pokaż o co dokładnie Ci chodzi, bo w żadnym wypadku wrzucanie prostokąta o małym wypełnieniu na równoległy filtr LC nie spowoduje generacji sinusoidy o dowolnej częstotliwości.

    0
  • #23 29 Lis 2013 17:07
    atom1477
    Poziom 43  

    Jemu chodzi o zasilanie równoległego obwodu LC impulsami o czasie trwania 0,25us (bo tylko takie się da wytworzyć przy zegarze 4MHz), ale występującymi z częstotliwością nie 2MHz, lecz z jakąś niższą będącą podwielokrotnością częstotliwości 1,8MHz.
    Czyli np. co 11,25us (99 cykli przerwy i 1 cykl impulsu).
    I wtedy te impulsy będą miały 1,8MHz w swoim widmie.
    Tyle że to aż 45-ta harmoniczna. Obwód LC musiał by być bardzo dokładnie dostrojony żeby po tych 99 impulsach przerwy dokładnie trafić z fazą w nowo przychodzący z procesora impuls. Więc akurat tutaj rozwiązanie się niespecjalnie sprawdzi. Przy innym stosunku częstotliwości taktowania do częstotliwości docelowej mogło było by lepiej.

    0
  • #24 29 Lis 2013 18:07
    deus.ex.machina
    Poziom 31  

    atom1477 napisał:
    Jemu chodzi o zasilanie równoległego obwodu LC impulsami o czasie trwania 0,25us (bo tylko takie się da wytworzyć przy zegarze 4MHz), ale występującymi z częstotliwością nie 2MHz, lecz z jakąś niższą będącą podwielokrotnością częstotliwości 1,8MHz.
    Czyli np. co 11,25us (99 cykli przerwy i 1 cykl impulsu).
    I wtedy te impulsy będą miały 1,8MHz w swoim widmie.
    Tyle że to aż 45-ta harmoniczna. Obwód LC musiał by być bardzo dokładnie dostrojony żeby po tych 99 impulsach przerwy dokładnie trafić z fazą w nowo przychodzący z procesora impuls. Więc akurat tutaj rozwiązanie się niespecjalnie sprawdzi. Przy innym stosunku częstotliwości taktowania do częstotliwości docelowej mogło było by lepiej.


    Nie żebym był wredny ale możemy wygenerować impulsy o względnie dowolnej szerokości (będącej tak wielokrotnością jak i podwielokrotnością 4/2MHz).
    Jak - niech to znów będzie dla kolegów okazja do odświeżenia sobie czasów politechniki.

    I nigdzie nie napisałem ze podaje na wejście układu LC przebieg prostokątny o wypełnieniu 50/50 i częstotliwości 2/4MHz - to wyłącznie (nad)interpretacja kolegów.
    Co do sinusoidy to jak już napisałem autor nie określił warunków brzegowych wiec zaproponowałem takie a nie inne rozwiązania - każde z nich spełnia bardzo ogólne warunki autora tematu - po szczegóły odsyłam do samego autora.
    Ja twierdze ze mając uC AVR i zegar 4MHz możemy wygenerować sinusoidę 1.8MHz i sposobów na to jest co najmniej kilka.

    PS
    wydaje mi się ze dla 200kHz, 9 harmoniczna będzie miała 1.8MHz a 200kHz można uzyskać dzieląc 4MHz/20... Nie wiem skąd się wzięła ta 45 harmoniczna...

    0
  • #25 29 Lis 2013 18:21
    tronics
    Poziom 36  

    Cytat:
    I nigdzie nie napisałem ze podaje na wejście układu LC przebieg prostokątny o wypełnieniu 50/50 i częstotliwości 2/4MHz - to wyłącznie (nad)interpretacja kolegów.

    Nie. Najpierw pisałeś o prostokącie, później impulsach, teraz wracasz do prostokąta o innym niż 50% wypełnieniu. Proszę zdecyduj się wreszcie - jaki prostokąt MOŻESZ uzyskać na 4MHz atmedze 328 by wygenerować 1.8MHz sinusa. Dodam tylko, że cbi/sbi wg noty atmela zajmuje 2 cykle dla zwykłych avr (1 dla tiny).

    0
  • #26 29 Lis 2013 18:34
    deus.ex.machina
    Poziom 31  

    tronics napisał:
    Cytat:
    I nigdzie nie napisałem ze podaje na wejście układu LC przebieg prostokątny o wypełnieniu 50/50 i częstotliwości 2/4MHz - to wyłącznie (nad)interpretacja kolegów.

    Nie. Najpierw pisałeś o prostokącie, później impulsach, teraz wracasz do prostokąta o innym niż 50% wypełnieniu. Proszę zdecyduj się wreszcie - jaki prostokąt MOŻESZ uzyskać na 4MHz atmedze 328 by wygenerować 1.8MHz sinusa. Dodam tylko, że cbi/sbi wg noty atmela zajmuje 2 cykle dla zwykłych avr (1 dla tiny).


    A czym jest fala prostokątna o wypełnieniu np 0.001% jak nie seria impulsów?
    Rozumiem ze 328 nie posiada generatora/timera który mógłby być źródłem fali prostokątnej i dlatego konieczna jest programowa generacja przebiegu?

    Proponuje jednak wyjść poza myślenie w pudełku zwłaszcza ze moim zdaniem cały temat jest wynikiem zakładu...

    0
  • #27 29 Lis 2013 19:12
    tronics
    Poziom 36  

    @deus.ex.machina - oczywiście, że jest układ czasowo-licznikowy, kwestia tego jakie tryby obsługuje i w jaki sposób można wykorzystując go otrzymać 1.8MHz sinusa. Jestem ciekaw tego jak Twoim zdaniem to ma wyglądać, bo ciągle rzucasz ogólnikami a dowodów na "działanie" ciągle brak. Więc zamiast zarzucać adwersarzom dyletanctwo bądź szablonowe myślenie może skup się na udowodnieniu swoich racji.

    0
  • #28 29 Lis 2013 19:16
    94075
    Użytkownik usunął konto  
  • #29 29 Lis 2013 19:27
    atom1477
    Poziom 43  

    deus.ex.machina napisał:
    Nie żebym był wredny ale możemy wygenerować impulsy o względnie dowolnej szerokości (będącej tak wielokrotnością jak i podwielokrotnością 4/2MHz).

    Chodziło mi o wygenerowanie ich samym procesorem (czyli bez użycia zewnętrznych elementów takich jak różniczkujący obwód RC).

    deus.ex.machina napisał:
    Jak - niech to znów będzie dla kolegów okazja do odświeżenia sobie czasów politechniki.

    Nie każdy skończył politechnikę (ja nie skończyłem).
    W związku z tym co ja tam mogę wiedzieć.
    Ciekaw więc jestem jak chcesz wygenerować impulsy np. o szerokości 0,05us (0,25us / 5 = 0,05us)? Oczywiście przy założeniu że procesor ma takt równy właśnie 0,25us (taktowanie 4MHz).

    deus.ex.machina napisał:
    Nie wiem skąd się wzięła ta 45 harmoniczna...

    No z mojego przykładu. A nigdzie też przecież nie napisałem że jest to jedyny przypadek który pozwoli uzyskać harmoniczną 1,8MHz.
    Po prosu się pomyliłem. Mi wyszło że minimalnie to będzie 40kHz.
    Jak może być 200kHz to tym lepiej.

    0
  • #30 30 Lis 2013 17:23
    deus.ex.machina
    Poziom 31  

    tronics napisał:
    @deus.ex.machina - oczywiście, że jest układ czasowo-licznikowy, kwestia tego jakie tryby obsługuje i w jaki sposób można wykorzystując go otrzymać 1.8MHz sinusa. Jestem ciekaw tego jak Twoim zdaniem to ma wyglądać, bo ciągle rzucasz ogólnikami a dowodów na "działanie" ciągle brak. Więc zamiast zarzucać adwersarzom dyletanctwo bądź szablonowe myślenie może skup się na udowodnieniu swoich racji.


    Ale teraz napisz o które wykorzystanie chodzi...
    Podział fclk (4MHz) przez 20, obwód rezonansowy 1.8MHz?
    Nie zarzucaj mi ogólników bo jak już napisałem - problem sformułowany ogólnie.
    Osobiście wybrałbym wariant z odgrywaniem próbek sinusa z tablicy.
    I ja naprawdę nie czuje się zobowiązany do udowadniania czegoś co z powodzeniem wykorzystywane jest w elektronice od lat bez mala 100.
    A zarzuty szablonowego myślenia - argumentów dostarczacie sami definiując sztuczne ograniczenia których nie sformułował autor wątku.

    albertb napisał:
    deus.ex.machina napisał:
    I nigdzie nie napisałem ze podaje na wejście układu LC przebieg prostokątny o wypełnieniu 50/50 i częstotliwości 2/4MHz - to wyłącznie (nad)interpretacja kolegów.

    Nikt Ci tego nie zarzuca. Podaj dowolny przykład, byle by nie był podwielokrotnością.


    Skad to graniczenie? Jest określone przez autora wątku? Czy może chodzi o udowodnienie z góry założonej tezy - niechęć do zaakceptowania tego ze adwersarz może jednak mieć racje?

    albertb napisał:

    deus.ex.machina napisał:
    zwłaszcza ze moim zdaniem cały temat jest wynikiem zakładu

    A moim zdaniem rakiem wycofujesz się ze stwierdzenia że częstotliwość prostokąta nie musi być podwielekrotnością częstotliwości sinusa. Musi.
    I nie zmieni tego analiza pojedynczego impulsu.
    Bo odpowiedź na serię impulsów nie musi zawierać (i nie zawiera) tego co odpowiedź na impuls pojedynczy. I tutaj tkwi błąd w Twoim rozumowaniu.
    Bo ciąg impulsów lub skoków to już przebieg prostokątny.

    Albert


    Ja się z niczego nie wycofuje - za to doskonale rozumiem ze kolega chce żebym przyjął jego kryteria bo to umożliwi mu udowodnienie z góry założonej tezy - nie, dziękuje - nie będę grał tak jak chce kolega.

    PS
    Mam nadzieje ze kolega zdaje sobie sprawę z absurdalności swoich oczekiwań...
    Nigdzie nie twierdziłem ze obwód rezonansowy np 1.8MHz zasilony przebiegiem prostokątnym np 100MHz będzie wytwarzał sinusoidę 1.8MHz a zdaje się ze tego oczekuje kolega.

    atom1477 napisał:
    deus.ex.machina napisał:
    Nie żebym był wredny ale możemy wygenerować impulsy o względnie dowolnej szerokości (będącej tak wielokrotnością jak i podwielokrotnością 4/2MHz).





    Chodziło mi o wygenerowanie ich samym procesorem (czyli bez użycia zewnętrznych elementów takich jak różniczkujący obwód RC).


    Coz... autor wyraźnie mówi o wyjściu analogowym a zdaje się ze 328 takiego wyjścia nie ma - rozumiem wiec ze problem jest dość ogólny, autor nie zgłębił możliwości 328 i generalnie zainteresowany jest "sztuka dla sztuki (wspomniałem już ze wyglądało mi to na rodzaj zakładu) - nie widzę wiec powodu by się ograniczać w "fantazjowaniu na temat". Akurat w kontekście formowania krótkich impulsów myślałem o czymś bardziej cyfrowym np bramka XOR (szybki wariant 7486 np ALVC) na której wejścia podawany jest ten sam sygnał produkowany przez generator uC z tym ze jedno sygnał na jednym z wejść przesunięty jest w czasie (np dłuższa ścieżka na PCB).

    atom1477 napisał:

    deus.ex.machina napisał:
    Jak - niech to znów będzie dla kolegów okazja do odświeżenia sobie czasów politechniki.

    Nie każdy skończył politechnikę (ja nie skończyłem).
    W związku z tym co ja tam mogę wiedzieć.
    Ciekaw więc jestem jak chcesz wygenerować impulsy np. o szerokości 0,05us (0,25us / 5 = 0,05us)? Oczywiście przy założeniu że procesor ma takt równy właśnie 0,25us (taktowanie 4MHz).


    Niech się kolega nie obraza - dyskusja potoczyła się dość niefortunnie w kierunku kwadratury kola wiec stad moje sformułowanie - nie ma dla mnie znaczenia czy ktoś skończył czy nie politechnikę - proszę przyjąć moje przeprosiny (szczere) jeśli poczuł się kolega dotknięty - nie było to moja intencja.


    atom1477 napisał:

    deus.ex.machina napisał:
    Nie wiem skąd się wzięła ta 45 harmoniczna...

    No z mojego przykładu. A nigdzie też przecież nie napisałem że jest to jedyny przypadek który pozwoli uzyskać harmoniczną 1,8MHz.
    Po prosu się pomyliłem. Mi wyszło że minimalnie to będzie 40kHz.
    Jak może być 200kHz to tym lepiej.


    Zdziwiłem się trochę bo 1.8MHz nie jest tu specjalnie "trudna" częstotliwością w relacji do źródła 4MHz.

    0