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



Teraz jest 8 gru 2024, o 00:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
 Tytuł: PWM
PostNapisane: 7 paź 2023, o 11:02 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

Witam,
Używam kontrolera m328P
Mam ustawione 6 kanałów PWM
Jakie są możliwości obniżenia częstotliwości?
Jak skonfigurować żeby częstotliwość wynosiła 100- 300Hz na każdym kanale
Wiem że można dzielić przez 8, zmniejszyć wartość rezonatora, ale to ciągle jest za szybko.
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  
 Tytuł: Re: PWM
PostNapisane: 7 paź 2023, o 11:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1164
Lokalizacja: Kraków
Pomógł: 93

Ustaw timer w najprostszym trybie.
Stwórz dla każdego kanału trzy zmienne: wartośc aktualną, okres i wypełnienie.
Na początku wusteruj wszystkie wyjścia.
W obsłudze przepełnienia zwiększaj wartość aktualną każdego kanału.
Jak przekroczysz wypełnienie, zeruj wyjście (dla każdego kanału osobno).
Jak przekroszysz okres, zeruj wartość aktualną i wysteruj wyjście.

To taki najszybszy, ręczny PWM, jeśli ten domyślny ma za dużą częstotliwość.
Tylko pamiętaj, zmienną okres ustalasz rozdzielczość PWM (jeśli dasz okres 10, to wypełnienie masz co 10%, jak ustawisz 100 to już co 1% itd.).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 7 paź 2023, o 19:01 
Offline
Użytkownik

Dołączył(a): 09 lip 2019
Posty: 110
Pomógł: 11

Lu_let napisał(a):
Witam,
Używam kontrolera m328P
Mam ustawione 6 kanałów PWM
Jakie są możliwości obniżenia częstotliwości?
Jak skonfigurować żeby częstotliwość wynosiła 100- 300Hz na każdym kanale
[...]

Prescaler Twoim przyjacielem.
Na przykład na stronach Datasheeta 133-134 tego procka są wzory odnośnie uzyskiwanych częstotliwości
fOCnxPWM = fclk_I/O/(N * (1 + TOP))
gdzie N to wartość prescalera - 1, 8, 64, 256 lub 1024

Częstotliwości takie jakie potrzebujesz bez problemu da się uzyskać nawet na procku przetaktowanym do 25MHz.

Jak ustawisz prescaler na 1 to faktycznie przy taktowanym 16MHz dostaniesz minimalną częstotliwość dla timera 8-bit na poziomie 62.5kHz lub 31.25kHz. Przy Timerach 16-bitowych można zejść z tym prescalerem do 244Hz przy tej prędkości taktowania.

Ale jak już użyjesz prescalera o wartości 256, to na start dostajesz częstotliwości - w zaleśności od trybu i typu timera - dla taktowania 16MHz - 8 bit - Fast PWM 244Hz, Phase Accurate - 122Hz. Dla 16-bitowych liczników z Fast PWM można zejść do 1Hz.

Przy 16MHz taktowania, prescalerze 1024 i timerze 16 bit można uzyskać częstotliwości na poziomie 0.12Hz. Nic nie trzeba kombinować programowo :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 7 paź 2023, o 19:28 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

Czy da się ustawić PWM np. 244Hz na wszystkich sześciu wyjściach,
i sterować każdym kanałem z osobna przez 6 wejść ADC?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 7 paź 2023, o 20:19 
Offline
Użytkownik

Dołączył(a): 09 lip 2019
Posty: 110
Pomógł: 11

Lu_let napisał(a):
Czy da się ustawić PWM np. 244Hz na wszystkich sześciu wyjściach,
i sterować każdym kanałem z osobna przez 6 wejść ADC?

W tej chwili akurat nie sprawdzę, ale w teorii powinno dać się coś takiego zrobić.
Jakiś czas temu klepnąłem sobię funkcje do obsługi timerów - np. dla Timer0 interfejs wyglądał następująco:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

gdzie pierwszy paramtr to wartość prescalera, dutyA i dutyB to współczynniki wypełnienia i dodatkowo boole umożliwiające odwrócenie fazy

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

dostawałem takie przebiegi (tutaj akurat przykład dla ATmega256, dodatkowo pokazane zostały momenty wywołania poszczególnych przerwań na PB1/5/6 - każde przerwanie to zmiana stanu):
Obrazek

Osobny temat to oczywiście odczyt ADC i przepisywanie w odpowiedni sposób do rejestrów timera :-)

PS. I jeszcze tabelka z przeliczonymi dla Timer0 minimalnymi częstotliwościami w zależności od częstotliwości zegara (odpowiada do prescalerowi ustawionemu na 1024, dla Timerów 16 bit wszystko trzeba podzielić pomnożyć przez 256)
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 8 paź 2023, o 20:09 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

Witam
Podłączyłem analizator stanów logicznych 6 przebiegów PWM

Obrazek

Wydaje się że działa dobrze, ale co dzieje się po odłączeniu programatora?

Obrazek

Jaki może być tego powód?
Niestety nie mam oscyloskopu, może coś nie tak z analizatorem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 9 paź 2023, o 05:30 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27315
Lokalizacja: Szczecin
Pomógł: 1041

pewnie masy masz niepołączone analizatora i swojego układu

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 9 paź 2023, o 16:55 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

Tak odpięła się masa, i obwód zamykał się przez programator.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 13 paź 2023, o 18:25 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

W poszukiwaniu mniejszej częstotliwości PWM
zamieniłem kwarc na rezonator ceramiczny 480kHz
Wcześniej używałem rezonatora kwarcowego 18432000Hz
Zmieniłem źródło taktowania na "rezonator ceramiczny"

Obrazek
I przelutowałem rezonator ceramiczny 480kHz
Teraz niestety nie mogę nic odczytać.

Obrazek

Co z tym zrobić? Powrót do poprzedniego kwarcu pewnie nic nie da.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 13 paź 2023, o 22:02 
Offline
Użytkownik

Dołączył(a): 13 lut 2012
Posty: 173
Pomógł: 10

Próbowałeś metody Mirka?:
https://www.youtube.com/watch?v=27GfQu66kjc&t=4s



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 14 paź 2023, o 09:12 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27315
Lokalizacja: Szczecin
Pomógł: 1041

Cytuj:
Co z tym zrobić?

zacznij od wylutowania tych kondensatorów co były przy kwarcu

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 14 paź 2023, o 18:18 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

Wylutowałem kondensatory, niestety nie ma komunikacji z procesorem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 15 paź 2023, o 12:58 
Offline
Użytkownik

Dołączył(a): 13 lut 2012
Posty: 173
Pomógł: 10

Może na próbę warto podmienić rezonator ceramiczny na inny lub zrobić układ RC np. R=33K, C=22pF lub większy C=27pF.
https://microchipdeveloper.com/8bit:extrc
Przykład podłaczenia podany jest w datasheet do atmega 8 lub atmega 32 (External RC Oscillator).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PWM
PostNapisane: 15 paź 2023, o 15:55 
Offline
Użytkownik

Dołączył(a): 13 lut 2012
Posty: 173
Pomógł: 10

Można też pomyśleć o dołączeniu równolegle do obecnego rezonatora ceramicznego rezystora 1 M Ohm oraz kondensatorów C1 i C2 po 100 pF.


Chyba, że jest coś nie tak z atmega328p i jest jakaś analogia do wątku:
post236308.html#p236308


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



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: 14 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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