Skocz do zawartości

PWM - nie rozumiem


michal9797

Pomocna odpowiedź

Cześć! Dopiero zaczynam drogę z elektroniką. Chciałem zrobić robota (w podobie do walliego). Tylko, że nie rozumiem o co chodzi z tym PWM (ponieważ chcę użyć go w moim robocie). Czytam i czytam, ale nic dalej nie rozumiem. Wiem że to jest to regulator szerokości impulsów. Znalazłem kod do PWM do Bascoma, ale nie wiem co oznacza:

"Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down"

Czy ktoś by mógł mi to wytłumacyć dobrze i po chłopsku te PWM, compare a i b Pwm?

Link do komentarza
Share on other sites

Ale nie mogę z tego nic wywnioskować (czytałem ten temat kilka razy). Wiem, że częstotliwość zmienia się przez preskala. A i chciałbym, żeby ktoś mi wytłumaczył jak to się ustawia w Bascom (bardziej po co jest te compare a i b i jak je obsługiwać)?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

W configu timera parametr PWM może mieć tylko wartości 8,9,10, z tego co się orientuję. Odpowiada to za rozdzielczość tego PWM - 8bit, 9bit i 10bit. Wypełnieniem sterujesz potem używając PWMXY = Z, gdzie X - numerek timerka, Y literka nóżki OC, Z wypełnienie pwm. Np pwm1a = 238, czyli wypełnienie 238/rozdzielczość, pin OC1A.

Link do komentarza
Share on other sites

"Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down"

Czy ktoś by mógł mi to wytłumacyć dobrze i po chłopsku te PWM, compare a i b Pwm?

Tzn:

Timer1 będzie pracował jako generator PWM

PWM = 8 => generator PWM będzie miał rozdzielczość 8 bitów

Prescale = 1 => dzielnik częstotliwości ustawiony na 1, czyli brak podziału.

Z tego można policzyć że przy częstotliwości CPU np. 1MHz, częstotliwość przebiegu PWM wynosić będzie: 1 000 000 / (256 * 1) czyli 3906,25Hz (3,9KHz)

Argumenty Compare A i Compare B określają jak się będą zachowywać końcówki OC1A i OC1B.

Link do komentarza
Share on other sites

Z tego można policzyć że przy częstotliwości CPU np. 1MHz, częstotliwość przebiegu PWM wynosić będzie: 1 000 000 / (256 * 1) czyli 3906,25Hz (3,9KHz)

Akurat tego nie byłbym pewien, ja się kiedyś naciąłem przy sprzętowym PWMie i do dziś nie wiem gdzie był pies pogrzebany, ale u mnie dochodził jeszcze nie wiadomo skąd podział przez 2.

Link do komentarza
Share on other sites

No niestety z AVRemi jest taki knif że AVR, AVRowi nie równy. O ile w 51' niezależnie jaki proc wziąłeś to Timer był zawsze dokładnie taki sam, w sensie bitów kofiguracyjnych, ich znaczenia funkcyjnego i rozlokowania. W AVR niestety dzięki ATMELowi tak nie jest, i przyznam że mi się też już takie niespodzianki zdarzały, ale głownie dotyczyło to procesorów TINY. A z drugiej strony BASCOM był pisany pod procesory serii AT90Sxxxx i pierwsze Megi, więc na nowszych procach lub kombinowanych architekturach jak TINY, prawie zawsze jakaś niespodzianka wyskoczy.

Link do komentarza
Share on other sites

Cześć! Jestem nowy na tym forum. Zacząłem interesować się elektroniką dzięki temu forum. Ale mam pytanie (może wyda się głupie) o co chodzi z tą rozdzielczością w PWM (i co daje jeżeli zamiast 8 bitów w pisze 10 bitów) i timerem(czy to podaje długość odstępu impulsów?) i jak podam, że compare a ma być clear up (i co się stanie?)?

P.s Proszę o szybką odpowiedź.

Link do komentarza
Share on other sites

Rozdzielczość to niejako precyzja (dokładność) dokonywanych zmian wypełnienia. Dla 8 bitów masz 256 kroków czyli masz dokładność ~0,39%, dla 10bitów =>1024 czyli 0,097%, dodatkowo rozdzielczość wpływa ci na max częstotliwość jaką możesz uzyskać, bo to defakto licznik programowalny, przy czym ważna jest jego długość. Ogólnie dla Fast PWM można przyjąć następujący wzór:

F_PWM = F_CPU / (Preskaler * rozdzielczość PWM)

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.