-
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