eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Fast PWM - trójkąt zamiast sinusa na wyjściu
Ilość wypowiedzi w tym wątku: 16

  • 1. Data: 2013-02-16 16:27:53
    Temat: Fast PWM - trójkąt zamiast sinusa na wyjściu
    Od: Atlantis <m...@w...pl>

    Eksperymentuję właśnie z generowaniem przebiegu sinusoidalnego za pomocą
    Atmegi8. Oparłem się na drugim przykładzie z tej strony:

    http://tinyurl.com/d3tyvex

    Przebieg ma być dialtonem o częstotliwości około 425 Hz.

    Wzór przebiegu znajduje się w tabeli, wypełnionej w następujący sposób:

    for (i=0; i<256; i++) sinus_buffer[i]=128+126*sin(6.26/256*1);

    PWM generowany jest za pomocą TIMER1 ustawionego na Fast PWM (tryb 14).
    Funkcja włączająca generowanie przebiegu wygląda następująco:

    void StartDialtone (void)
    {
    TCCR1A |= _BV(COM1A1) | _BV(WGM11);
    TCCR1B |= _BV(WGM13) | _BV(WGM12) | _BV(CS10);
    ICR1 = 255;
    OCR1A = 0;

    sinus_ind = 0;
    TCNT0 = 182;
    TCCR0 |= _BV(CS00);
    TIMSK |= _BV(TOIE0);
    }

    Z kolei wyłączająca wygląda następująco:

    void StopDialtone (void)
    {
    TCCR0 &= ~_BV(CS00);
    TIMSK &= ~_BV(TOIE0);

    TCCR1A &= ~(_BV(COM1A1) | _BV(WGM11));
    TCCR1B &= ~(_BV(WGM13) | _BV(WGM12) | _BV(CS10));
    ICR1 = 0;

    PORTB &= ~_BV(1);
    }

    Zmiana współczynnika wypełnienia odbywa się w przerwaniu, po
    przepełnieniu TIMER0:

    ISR (TIMER0_OVF_vect)
    {
    OCR1A = sinus_buffer[sinus_ind];

    if (sinus_ind < 255) sinus_ind++;
    else sinus_ind=0;

    TCNT0 = 182;
    }

    Za wyjściem PB1/OC1A znajduje się filtr dolnoprzepustowy RC złożony z
    rezystora 330 omów oraz kondensatora 1uF do masy. Za filtrem nie mam
    jednak sinusoidy, a coś przypominające trójkąt:

    http://imageshack.us/photo/my-images/4/img8927kj.jpg
    /

    Gdzie mogłem popełnić błąd? Problem będzie leżał raczej po stronie softu
    czy sprzętu?


  • 2. Data: 2013-02-16 16:36:50
    Temat: Re: Fast PWM - trójkąt zamiast sinusa na wyjściu
    Od: Atlantis <m...@w...pl>

    Ok, niemal godzinie patrzenia w kod dostrzegłem błąd - nie wiedzieć
    czemu w funkcji wypełniającej tabelę z wzorem sinusoidy nazwę zmiennej
    zastąpiła jedynka...


  • 3. Data: 2013-02-16 17:41:31
    Temat: Re: Fast PWM - trójkąt zamiast sinusa na wyjściu
    Od: "Anerys" <s...@s...pl>


    Użytkownik "Atlantis" <m...@w...pl> napisał w wiadomości
    news:kfo8i2$v93$1@portraits.wsisiz.edu.pl...
    > Za wyjściem PB1/OC1A znajduje się filtr dolnoprzepustowy RC złożony z
    > rezystora 330 omów oraz kondensatora 1uF do masy. Za filtrem nie mam
    > jednak sinusoidy, a coś przypominające trójkąt:
    >
    > http://imageshack.us/photo/my-images/4/img8927kj.jpg
    /

    W sieciach tf widzialem gorsze przebiegi... Z czystym sumieniem możesz dać
    taki sygnał, chyba, że chcesz dopiąć swego i mieć sinus, lub obawiasz się,
    że filterkiem tniesz coś znacznie gorszego.

    --
    Pod żadnym pozorem nie zezwalam na wysyłanie mi jakichkolwiek reklam,
    ogłoszeń, mailingów, itd., ani nawet zapytań o możliwość ich wysyłki.
    Nie przyjmuję ŻADNYCH tłumaczeń, że mój adres e-mail jest ogólnodostępny
    i nie został ukryty. Wszelkie próby takich wysyłek potraktuję jako stalking.


  • 4. Data: 2013-02-16 17:46:29
    Temat: Re: Fast PWM - trójkąt zamiast sinusa na wyjściu
    Od: Atlantis <m...@w...pl>

    W dniu 2013-02-16 17:41, Anerys pisze:

    > W sieciach tf widzialem gorsze przebiegi... Z czystym sumieniem możesz
    > dać taki sygnał, chyba, że chcesz dopiąć swego i mieć sinus, lub
    > obawiasz się, że filterkiem tniesz coś znacznie gorszego.

    Jak napisałem - wszystkiemu winny był błąd w instrukcji wypełniającej
    tabelę wzorem sinusoidy.

    Teraz przebieg na oscyloskopie jest o wiele ładniejszy - sinus o lekko
    postrzępionych brzegach (widoczne przy mocno zmniejszonej podstawie
    czasu na oscyloskopie).

    Zastanawiam się jeszcze tylko nad sposobem, w jaki mam to podać na
    słuchawkę. Rozumiem, że nie powinienem tego wyjścia za filtrem obciążać
    bezpośrednio słuchawką 150 omów? Jak powinien wyglądać odpowiedni interfejs?


  • 5. Data: 2013-02-16 17:52:01
    Temat: Re: Fast PWM - trójkąt zamiast sinusa na wyjściu
    Od: AlexY <a...@i...pl>

    Atlantis wrote:
    [..]
    > Teraz przebieg na oscyloskopie jest o wiele ładniejszy - sinus o lekko
    > postrzępionych brzegach (widoczne przy mocno zmniejszonej podstawie
    > czasu na oscyloskopie).
    >
    > Zastanawiam się jeszcze tylko nad sposobem, w jaki mam to podać na
    > słuchawkę. Rozumiem, że nie powinienem tego wyjścia za filtrem obciążać
    > bezpośrednio słuchawką 150 omów? Jak powinien wyglądać odpowiedni
    > interfejs?

    Filtr dolnoprzepustowy (wygładzi przebieg) i wtórnik emiterowy.

    --
    AlexY
    http://nadzieja.pl/inne/spam.html
    http://www.pg.gda.pl/~agatek/netq.html


  • 6. Data: 2013-02-16 18:08:15
    Temat: Re: Fast PWM - trójkąt zamiast sinusa na wyjściu
    Od: "J.F." <j...@p...onet.pl>

    Dnia Sat, 16 Feb 2013 16:27:53 +0100, Atlantis napisał(a):
    > Eksperymentuję właśnie z generowaniem przebiegu sinusoidalnego za pomocą
    > Atmegi8. Oparłem się na drugim przykładzie z tej strony:
    > http://tinyurl.com/d3tyvex
    >
    > Za wyjściem PB1/OC1A znajduje się filtr dolnoprzepustowy RC złożony z
    > rezystora 330 omów oraz kondensatora 1uF do masy. Za filtrem nie mam
    > jednak sinusoidy, a coś przypominające trójkąt:
    > http://imageshack.us/photo/my-images/4/img8927kj.jpg
    /

    Niezaleznie od bledu - cos tu chyba nie tak.
    Skad takie strome zbocza ?
    Filtr ma stala 0.33ms

    J.


  • 7. Data: 2013-02-17 10:07:33
    Temat: Re: Fast PWM - trójkąt zamiast sinusa na wyjściu
    Od: Atlantis <m...@w...pl>

    W dniu 2013-02-16 17:52, AlexY pisze:

    > Filtr dolnoprzepustowy (wygładzi przebieg)

    Filtr oczywiście już jest, złożony z jednego rezystora i jednego
    kondensatora. Mam rozumieć, że powinienem dać jeszcze drugi taki zestaw?


    > i wtórnik emiterowy.

    Jak wygląda kwestia dobierania elementów wtórnika do konkretnych
    warunków pracy? Szczególnie chodzi mi o rezystor w emiterze i dzielnik w
    obwodzie bazy. Co decyduje o ich wartościach?


  • 8. Data: 2013-02-17 17:46:53
    Temat: Re: Fast PWM - trójkąt zamiast sinusa na wyjściu
    Od: AlexY <a...@i...pl>

    Atlantis wrote:
    > W dniu 2013-02-16 17:52, AlexY pisze:
    >
    >> Filtr dolnoprzepustowy (wygładzi przebieg)
    >
    > Filtr oczywiście już jest, złożony z jednego rezystora i jednego
    > kondensatora. Mam rozumieć, że powinienem dać jeszcze drugi taki zestaw?

    Jeżeli filtrowanie jest niewystarczające to wartości elementów trzeba
    zmienić lub użyć innego filtra.

    >> i wtórnik emiterowy.
    >
    > Jak wygląda kwestia dobierania elementów wtórnika do konkretnych
    > warunków pracy? Szczególnie chodzi mi o rezystor w emiterze i dzielnik w
    > obwodzie bazy. Co decyduje o ich wartościach?

    Ja tam dobieram wartości przypadkowe, jeśli to nie ma być generator
    wzorcowy do kalibracji to poeksperymentuj z wartościami 1k i 10k, a w
    emiterze coś w okolicy obciążenia.

    --
    AlexY
    http://nadzieja.pl/inne/spam.html
    http://www.pg.gda.pl/~agatek/netq.html


  • 9. Data: 2013-02-18 16:02:44
    Temat: Re: Fast PWM - trójkąt zamiast sinusa na wyjściu
    Od: "J.F" <j...@p...onet.pl>

    Użytkownik "Atlantis" napisał w wiadomości
    >> Filtr dolnoprzepustowy (wygładzi przebieg)
    >Filtr oczywiście już jest, złożony z jednego rezystora i jednego
    >kondensatora. Mam rozumieć, że powinienem dać jeszcze drugi taki
    >zestaw?

    Generalnie dokladanie kolejnych czlonow RC to nie jest najlpeszy
    pomysl - filtr wychodzi z tego kiepski. Bieguny nie tam gdzie trzeba.
    Ale moze do prostych celow wystarczy.

    J.



  • 10. Data: 2013-02-18 21:15:24
    Temat: Re: Fast PWM - trójkąt zamiast sinusa na wyjściu
    Od: Jakub Rakus <s...@o...pl>

    W dniu 16.02.2013 16:27, Atlantis pisze:

    > Wzór przebiegu znajduje się w tabeli, wypełnionej w następujący sposób:
    >
    > for (i=0; i<256; i++) sinus_buffer[i]=128+126*sin(6.26/256*1);

    Skoro wypełniasz tablice stałymi wartościami to po co do tego zaprzęgać
    biednego avr i męczyć go liczeniem funkcji sinus? Policz sobie to w
    jakimś arkuszu i wrzuć samą tablice gotowych wartości - będziesz miał
    znacznie krótszy kod.

    --
    Pozdrawiam
    Jakub Rakus

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: