jak używać PWM ?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

jak używać PWM ?

Post autor: matrix » 10 lis 2009, 17:21

przeszukałem polski plik pomocuy bascoma ale nieznalazłem niczego mnie satysfakcjonującego.
pytania są następujące:

jak używać polecenia PWM ?
jak je skonfigurować?
jak wpisywać zadaną wartość do PWM ?
jaki stan ma PWM (niski czy wysoki) ?
jak sterować nim tranzystor ?
jakie min i max wartości można wpisać do PWM ?

Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Post autor: mariusz256 » 10 lis 2009, 18:25

Zobacz TU

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 10 lis 2009, 18:59

Te pytania są dość specyficzne. Większość z nich wynika z małej wiedzy na temat budowy mikrokontrolerów i tego na jakiej zasadzie działa tam PWM, stąd trudno w necie znaleźć dokładnie na takie pytania odpowiedzi. Mogę się mylić, ale jak jeszcze w bascomie grzebałem to nie było chyba polecenia PWM. Tą funkcję włączało się i konfigurowało bezpośrednio przez odpowiednie wpisy w rejestrach. A jak sterować tranzystor? Tak jak zwykle: podpinasz jego bazę do pinu mikrokontrolera przez rezystor.

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 10 lis 2009, 23:25

C4r0 chodzi o to ze on niema jeszcze programatora i wszytko co robi, robi w symulatorze i uczy się tego od postaw więc pytania sa jak najbardziej na miejscu.

Madik
-
Posty: 9
Rejestracja: 07 paź 2009, 17:36
Lokalizacja: Częstochowa
Kontakt:

Post autor: Madik » 11 lis 2009, 8:20

Do czego chciałbyś to wykorzystać? Zakładam że do silników.

Kod: Zaznacz cały

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
Te polecenie ustawia ci (konfiguruje) PWM
Określ jeszcze do jakiej atmegi to zastosujesz (powiedzmy że atmege 8)
W niej znajdziesz dwa interesujące nas porty do sterowania pwm1a i pwm1b (nie pamiętam czy jeszcze jest pwm2 ale chyba nie)
I teraz ustawimy te dwa porty przykładowo,

Kod: Zaznacz cały

Pwm1a = 50
Pwm1b = 100
W atmedze przy sterowaniu silników przez pwm przedziały będą wynosić od 50 do 200

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 11 lis 2009, 9:34

Madik pisze:Do czego chciałbyś to wykorzystać? Zakładam że do silników.
w atmega16 do sterowania wentylatorem samochodowym od nadmuchu powietrza ciepło/zimno. wystarczy że skorzystam z jednego PWM1 ?

jeszcze jedno pytanie (a w zasadzie dwa):
- z jaką częstotliwością pracuje PWM ?
- jest ona zalezna od kwarcu ?
Pikczu pisze:chodzi o to ze on niema jeszcze programatora i wszytko co robi, robi w symulatorze
podziękował Pikczu, Ty chłopaku wiesz ocb.

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 11 lis 2009, 10:16

matrix pisze:w atmega16 do sterowania wentylatorem samochodowym od nadmuchu powietrza ciepło/zimno. wystarczy że skorzystam z jednego PWM1 ?
Wystarczy, będziesz sterował w takim przypadku jego prędkość.
matrix pisze:- z jaką częstotliwością pracuje PWM ?
Zależy od tego jaki kwarc dasz, jaki prescaler i ilobitowy PWM chcesz uzyskać.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 11 lis 2009, 11:24

snow pisze:będziesz sterował w takim przypadku jego prędkość.
- a co się dzieje przy wykorzystaniu również PWM1b ?
- jak wtedy steruje się wentylatorem?
- co się wtedy dzieje ?

Madik
-
Posty: 9
Rejestracja: 07 paź 2009, 17:36
Lokalizacja: Częstochowa
Kontakt:

Post autor: Madik » 11 lis 2009, 11:45

Ale jak chcesz sterować dwoma pwm'ami jeden silnik? Wydaje mi się że to tylko komplikacja przedsięwzięcia.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 11 lis 2009, 11:50

Madik pisze:Ale jak chcesz sterować dwoma pwm'ami jeden silnik?
nie, nie. myslałem że do prawidłowego sterownia silnikiem trzeba użyć obu PWM'ów. ogólnie znam zasadę pracy sterowania PWM na przykład na nieśmiertelnej kostce NE555, lecz myślałem że w procesorach jakoś inaczej jest. stąd moje (może wydawać się głupie) pytanie.

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 11 lis 2009, 11:53

Timer 1 ma dwa wyjścia PWM więc PWM1a i PWM1b odpowiadają za wypełnienie sygnałów na poszczególnych wyjściach OC1A i OC1B.

Madik
-
Posty: 9
Rejestracja: 07 paź 2009, 17:36
Lokalizacja: Częstochowa
Kontakt:

Post autor: Madik » 11 lis 2009, 11:54

Aha źle zrozumiałem ;-) Wystarczy jedno pwm i jeden mocny tranzystor o strukturze n-p-n.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 11 lis 2009, 11:55

Madik pisze:Wystarczy jedno pwm i jeden mocny tranzystor o strukturze n-p-n.
a nie przypadkiem p-n-p ?
przeciez tranzystory w procesorach steruje się z poziomu niskiego. (czy się mylę?)

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 11 lis 2009, 11:57

Czy pnp czy npn to obojętne. Jak chcesz mieć logikę odwróconą to dajesz PNP, jak prostą to NPN.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 11 lis 2009, 11:57

snow pisze:Timer 1 ma dwa wyjścia PWM więc PWM1a i PWM1b odpowiadają za wypełnienie sygnałów na poszczególnych wyjściach OC1A i OC1B.
a jak to wygląda w praktyce? na jednym wyjściu jest sygnał odwrócony względem tego pierwszego?
i proszę, nie zbesztajcie mnie za takie pytania. gdybym miał programator to juz dawno poznał bym to od strony praktycznej. na razie na niego czekam.

ODPOWIEDZ