Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 27 kwi 2026, o 16:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 37 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 20 lis 2014, o 20:28 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

Cześć,

Piszę właśnie, a właściwie to próbuję uruchomić programowe PWM na atmega8 z wewnątrznie ustawionym oscylatorem na 8MHz wykorzystując do tego celu timer1.

Jednak napotykam na problem ciągle święcącej diody, którą chce sterować programowym PWM. Dla testów podpiąłem diodę do portu PC4, którą zapalam i gaszę w celu sprawdzenia czy program jakoś w ogóle działa.

Dioda zapala się i gasi na porcie PC4.
Dioda, która jest sterowana PWM PC5 świeci ciągle. Brak oznak rozjaśniania i gaszenia. Nawet jak zmieniam na różne sposoby czasy.

Obie diody katodą są podłączone do GND.

Przerabiałem na różne sposoby program, jednak ciągle nie otrzymuję żadnej poprawy. Brakuje mi pomysłów, gdzie może być błąd.
Za wszelkie podpowiedzi będę bardzo wdzięczny ;)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 20:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Konfigurację masz dla Timera1 a obsługę przerwania dla Timera2.
Poza tym nigdzie w kodzie nie odblokowałeś przerwań dla trybu CTC
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I to przesuwanie zera jest bez sensu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
.
Tak się nie zeruje bitów rejestrów.

------------------------ [ Dodano po: 2 minutach ]

I bity CS10, CS11, CS12 znajdują się w rejestrze TCCR1B a nie TCCR1A.

Kolego nota w łapki i konfiguracja Timera do poprawy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 21:28 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

Dzięki, muszę zdecydowanie lepiej zapoznawać się z datasheetami.

Część ustawienia timera1:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie widzę w dokumentacji, by można było wybrać prescaler dla TCCR1A :oops: Trochę zwątpiłem...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 21:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Bo preskaler ustawia się w rejestrze TCCR1B.

Timer1 ma tak dużo trybów pracy i tyle bitów konfiguracyjnych, że nie zmieściły się w jednym bajcie tylko dwóch. Dlatego rejestr Konfiguracyjny ma dwa bajty TCCR1A i TCCR1B. I pewne bity znajdują się w jednym a inne w drugim. Bity preskalera są w TCCR1B i dotyczą one całego Timer1 i wszystkich jego trybów pracy.

Twoja konfiguracja powinna wyglądać tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I po resecie procesora bity rejestrów są wyzerowane więc nie musisz ich ponownie zerować. Warto sprawdzić w nocie jaką wartość przyjmują bity rejestrów po resecie. Spójrz na wartości w linijce "Initial value"
Obrazek



Ostatnio edytowano 27 lis 2014, o 22:44 przez jacekk232, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 22:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

...i nie używaj w delay_ms() zmiennych bo Ci tyle pamięci zeżre, że się zdziwisz. Zrób sobie najlepiej w to miejsce timer programowy.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 23:27 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

Dzięki jacekk232! Coś zaczyna się klarować, jednak nie do końca ten program działa jak powinien.

Przy pętli od 1-255 brak płynnego rozświetlania i gaszenia. Dioda po prostu zapala się i gaśnie po czasie, który wynika z pętli.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Sądziłem, że uda mi się z tym wygrać jak stworzę tablicę, na podstawie 'korekcji gamma' z programu mkAVR Calculator. Nic się jednak nie zmieniło, nawet przy zmianie częstotliwości oscylatora czy przy zmianach czasów.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



SylwekK, nie sądziłem, że używanie zmiennych w _delay zajmuje tyle pamięci.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2014, o 05:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Zmniejsz preskaler z 1024 do 1 ewentualnie 8. Takie duże wartości podziału nie nadają się do programowego PWM.

Napisane z telefonu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2014, o 22:19 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

Zmiana preskalera, czy dzielnika częstotliwości niewiele wnosi. Dalej otrzymuję efekt lampy stroboskopowej na diodzie PWM.

Dodatkowo przed pętla for wstawiłem gaszenie dodatkowej diody PC4, a za pętlą for ją zapalam.

Otrzymuję jak dla mnie dziwne świecenie ledów. Bo w trakcie trwania pętli for, dioda na PC4 ciągle mruga.
Czyż nie powinna ona zaświecić się na chwilę po skończeniu pętli for?
PWM przedstawiam 0-1, bo nie jestem w stanie zauważyć przy migotaniu czy rozjaśnia się.


[ obrazki na forum atnel - mirekk36 ]

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Gdzie mogę szukać przyczyn migotania tej diody PWM? Preskaler zmieniam, podział częstotliwości również, częstotliwość taktowania mikrokontrolera również. I dalej brak efektów. Ciągle mryga, czy to w któtkich odstępach czasu, czy to większych, ale nie mogę natrafić na płynne przechodzenie od 0-255. :roll:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2014, o 22:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
To dziwne, że Ci coś w ogóle chodzi ponieważ WGM12 znajduje się w TCCR1B.
...a gdzie inicjalizacja TIMER'a 2?
OK - machnąłeś się ini - Tim1 a ISR od Tim2.

Pozdr.


Autor postu otrzymał pochwałę


Ostatnio edytowano 27 lis 2014, o 22:45 przez kicajek, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2014, o 22:45 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

kicajek napisał(a):
Witam
To dziwne, że Ci coś w ogóle chodzi ponieważ WGM12 znajduje się w TCCR1B.
...a gdzie inicjalizacja TIMER'a 2?

Pozdr.



No jasne... :oops: :oops: :oops:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dzięki! ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 20:53 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

Chciałbym was zapytać jeszcze o dodatkową rzecz. Mianowicie, mam program PWM jak poniżej.

Zastanawia mnie, czy powinno być tak, że gdy ustawiam pwm1=255, to zamiast dioda być całkowicie wygaszoną, nadal bardzo delikatnie świeci.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 21:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

lukas25 napisał(a):
Zastanawia mnie, czy powinno być tak, że gdy ustawiam pwm1=255, to zamiast dioda być całkowicie wygaszoną, nadal bardzo delikatnie świeci.

Taki już urok trybu Fast PWM.

Poczytaj o szpilach w trybie Fast Pwm przy ustawieniu wypełnienia na zero.
topic8810.html#p105747
topic2440.html
topic1600.html#p16043


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 21:30 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

W takim razie chciałem to na 'chłopski' rozum ominąć , wrzucając do programu zwykłe włącz/wyłącz:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jednak wlącz/wyłącz w programie z PWM nie działa. Jakby instrukcja w ogóle nie była wykonywana.

To również może być urok PWM?? :|

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 21:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Wyłącz najpierw przerwania i dopiero sprawdź czy on/off działa :)


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 21:49 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

SylwekK napisał(a):
Wyłącz najpierw przerwania i dopiero sprawdź czy on/off działa :)



Krótkie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A tyle zmienia. Dzięki! ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 22:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Właściwie to CLI nie było potrzebne, wystarczyło zakomentować SEI :D ale w sumie na jedno wyszło ;)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 22:41 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

Jeszcze jedną kwestię poruszę.

Z tego co wyczytałem w Mirka książce, to nie powinno być żadnych problemów z przeniesieniem tego programu do atmegi16.
Przerwania po wgraniu programu na atmegę16 działają, jednak ani śladu po PWM. Rejestry są takie same, ustawienia w mkAVR Calculator niby prawidłowe. JTAG - wyłączony. Fusebitów nie ruszałem.

Dodatkowo wszedłem w opcje projektu i zmieniłem tam procesor na atmegę16 i częstotliwość taktowania na 8MHz. Nic to nie dało.

Czy jednak w rzeczywistości łatwe przenoszenie programów między atmegami nie jest takie łatwe, jak to Mirek opisał ? Tylko pytanie, gdzie atmega16 może widzieć problem ? :oops:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 23:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Tą linią
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

włączasz tryb Phase Correct Pwm a nie tryb CTC.

Tryb CTC w Atmedze16 włącza się ustawiając bit WGM12 w rejestrze TCCR1B
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W Atmedze8 jest tak samo więc już w poprzednim poście miałeś błąd.

Konfiguracja Timera1 dla trybu CTC powinna wyglądać tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 23:38 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

Zgadza się. Pokiełbasiłem tryby pracy.

Po Twoich poprawkach program na atmega8 działa poprawnie. W sumie wcześniej też działał, ale teraz łatwiej mogę zapanować nad tym PWM.

Jednak ten sam program wgrywam na atmega16 i PWM dalej milczy. Przerwania działają prawidłowo.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 23:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

A JTAG masz wyłączony? Jeśli go nie wyłączyłeś to kilka pinów portu C, w tym PC5, nie będzie działać jako zwykłe piny wejścia/wyjścia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 23:59 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

jacekk232 napisał(a):
A JTAG masz wyłączony? Jeśli go nie wyłączyłeś to kilka pinów portu C, w tym PC5, nie będzie działać jako zwykłe piny wejścia/wyjścia.


JTAGa to w pierwszej kolejności wyłączyłem.

Dodatkowo nadmienię, że Fuse bitów dotykałem.

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2014, o 00:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Dziwne, że to ci w ogóle działa na Atmedze8.

Konfigurujesz Timer1 a przerwanie masz dla Timera2. Kol. kicajek już o tym wspomniał w jednym z wcześniejszych postów.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2014, o 00:24 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

Jasny gwint. Nie załapałem tego na początku, skoro zaczęło działać na atmedze8.

Poprawione.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


PWM dla atmegi16 hula. Dzięki! ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2014, o 19:42 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

Próbuje dalej iść z tym PWM. Ciągle na przeszkodzie stają mi 'szpilki'.

Mianowicie, mam dwie diody podpięte pod różne porty (C i B). Chce je gasić naprzemiennie i aby przy wygaszaniu jednej, druga w ogóle nie świeciła.

Np.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jednak nie do końca to wychodzi. Za cholerę w 1 kroku nie mogę wyłączyć niebieskiej.
Po kroku 2 czerwoną również nie mogę wyłączyć do 0.

Kombinuję jak koń pod górkę, używając wyłączenia globalnego przerwania cli(); .
Zwykłe wyłączenie diody wrzucam na różne sposoby, czy to przed wykonywanie PWM, czy to w samą pętle PWM.
Przy PWM dla jednej diody, bez problemu mogę.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dla dwóch diód z różnych portów już to nie działa jak powinno. Choć dla jednej diody wyłączenie globalnych przerwań wystarczy.

W sumie nie rozumiem, dlaczego mikrokontroler nie wysyła stanu niskiego 'LED_OFF_blue;', gdy przychodzi na taką komendę czas.

Cały kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2014, o 21:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Podepnij LED'y: anoda/Vcc katoda/uC; w programie odwróć komendy wł/wył, tablicę czytaj " od tyłu"
obsługi pwm_prog ( ISR... ) nie ruszaj.
Jeśli do jasności LED'ów używasz tablicy z korekcją, to zbędne jest "liczenie" tej tablicy z różnymi prędkościami.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2014, o 21:32 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

kicajek napisał(a):
Witam
Podepnij LED'y: anoda/Vcc katoda/uC; w programie odwróć komendy wł/wył, tablicę czytaj " od tyłu"
obsługi pwm_prog ( ISR... ) nie ruszaj.
Jeśli do jasności LED'ów używasz tablicy z korekcją, to zbędne jest "liczenie" tej tablicy z różnymi prędkościami.

Pozdr.



Nie zmienia to nic, oprócz tego, że po uruchomieniu programu otrzymuję zgaszoną niebieską, a PWM czerwonej działa.
Jednak już w drugiej pętli programu dalej niebieska/czerwona żarzy się przy PWM przeciwnej diody.

A poza tym, odwrotne podłączenie ledów nie urządza mnie zbytnio, na fakt, że mam zamiar wysterować pasek ledów prądowo przez tranzystor.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2014, o 22:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
lukas25 napisał(a):
dalej niebieska/czerwona żarzy się przy PWM przeciwnej diody

...to teraz zacznij tablicę od dwóch zer {0,0,1 .....}

Pozdr.

EDIT
Wywaliłem cli(), napisałem tak i ( cokolwiek to znaczy :) ) działa:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2014, o 23:21 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

kicajek napisał(a):
Witam
lukas25 napisał(a):
dalej niebieska/czerwona żarzy się przy PWM przeciwnej diody

...to teraz zacznij tablicę od dwóch zer {0,0,1 .....}

Pozdr.


Działa przy anoda/Vcc katoda/uC, dzięki ;)

Przy katoda/Vcc, anoda/uC i kończeniu tablicy [...255, 255, 255] już tego typu sposób nie działa. Jestem jednak przyzwyczajony do tranzystorów NPN :roll: :roll:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2014, o 12:19 
Offline
Nowy

Dołączył(a): 09 wrz 2014
Posty: 22
Pomógł: 0

Cześć,

PWM Kicajka działa bez problemu.
Teraz tylko zastanawiam się, czy tranzystor PNP 2N3906 da radę obsłużyć PWM dla układu poniżej.
Dodam, że maksymalny Ic przewiduję na poziomie 70-100mA.

Czy może lepszy będzie BC327 przy maksymalnym Ic=100mA ?
Istnieją jakieś ograniczenia co do stosowalności PWM w połączeniu z tranzystorami?? Częstotliwości pracy tranzystorów są większe od 8MHz uC, więc wydaje mi się, że nie powinno być z tym problemu.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Układ z tranzystorem 2N3906:

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2014, o 17:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
lukas25 napisał(a):
Istnieją jakieś ograniczenia co do stosowalności PWM w połączeniu z tranzystorami??

W.g mnie to tylko prądowe; zwykle PWM'y nieznacznie "wychodzą poza akustyczną", a dla tranzystorów to stanie w miejscu :) .
Co do schematu - ja do włączania LED'ów czy innych odbiorników nie stosuję tranzystorów jako wtórniki emiterowe, bardziej poprawny schemat to:
Obrazek.
Jako T2 możesz np. użyć BC337, ..8 lub odpowiedniki; T1 dowolny NPN.

lukas25 napisał(a):
...i kończeniu tablicy [...255, 255, 255] już tego typu sposób nie działa

...bo tu chodzi o to, że w "moim" układzie w całym widmie jedynek jednej brakuje ( niezauważalne) a u Ciebie w widmie zer dostajesz malutki pik z jedyneczki ;)
A te dwa zera na początku są po to, że ty nie dochodzisz do nr0 tablicy tylko do nr.1

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 37 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO