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



Teraz jest 19 kwi 2024, o 00:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 18 sie 2017, o 13:04 
Offline
Nowy

Dołączył(a): 18 sie 2017
Posty: 2
Pomógł: 0

Witam wszystkich,

Chciałbym dowiedzieć się jak generowane są sygnały PWM, krok po kroku. Wiem czym dany sygnał jest, wykorzystuje go w praktyce na przykładzie arduino.

Jednak bardzo interesuje mnie jak jest on generowany wewnątrz procesora? Co takiego tam zachodzi? Wiem, że w Atmedze poprzez komparator porównywane są ze sobą rejestry TCNT1 i OCR1A/B. Cały czas nie wiem, jaka zachodzi te porówywanie w jaki sposób te wartości się zmieniają, co się dzieje gdy ich wartości zrównają się podczas porównywania przez komparator... nie mogę nigdzie znaleźć wytłumaczenia tego wszystkiego.

Jest ktoś w stanie opisać mi jakie kolejne zachodzą tam procesy? (może jakaś lista kroków - tym sposobem najszybciej idzie zrozumieć) Załóżmy że od podania wartości przez przetwornik ADC do wygenerowania sygnału PWM na wyjściu.

Z góry bardzo dziękuje za pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sie 2017, o 19:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

lobuzp napisał(a):
Załóżmy że od podania wartości przez przetwornik ADC do wygenerowania sygnału PWM na wyjściu.
Nie za bardzo rozumiem co do generowania sygnały PWM ma przetwornik ADC?

Co do zasady generowania samego sygnału PWM to jest to dosyć proste.
Zasada generowania opiera się o licznik który liczy w pętli czyli jak doliczy do końca to się "przekręca" i znów liczy od zera do przepełnienia - i tak cały czas.
Załóżmy że chcemy wygenerować sygnał PWM o wypełnieniu ok 50%, a licznik który generuje ten sygnał jest 8-bitowy.
Po uruchomieniu procka ładujemy do rejestru porównania wartość 128, a licznik startuje od zera. I teraz w momencie gdy wartość zliczona przez licznik jest mniejsza od wartości w rejestrze porównania na wyjściu sygnału PWM mamy stan wysoki "1" (w zależności od konfiguracji można odwrócić by było "0")
Co każde tyknięcie licznika jego wartość jest porównywana z rejestrem porównania. W momencie gdy wartość zliczonych tyknięć zrówna się z rejestrem porównania wyjście sygnału PWM zmienia stan na "0". Licznik liczy dalej aż do przepełnienia ale na wyjściu PWM jest ciągle "0" bo wartość zliczona przez licznik jest większa od wartości w rejestrze porównania. W momencie gdy licznik dobije do 255 a następnie przeskoczy na 0 które jest mniejsze od wartości w rejestrze porównania znów na wyjściu PWM mamy "1" do czasu aż licznik doliczy do 128 kiedy to znów wyjście PWM zmieni stan na "0"
I tak w kółko na wyjściu PWM stan jest zmieniany zgodnie z wynikiem porównania. Okres przebiegu PWM jest jednocześnie czasem potrzebnym do zapełnienia licznika (256 tyknięć) czyli jeśli chcemy mieć sygnał PWM o częstotliwości 10kHz (czyli okres=100us) to taktowanie licznika musi być 10000*256 = 2,56MHz (czyli okres wejściowy licznika 0,39us).
Powyższy opis tyczy się generowania przebiegu metodą FastPWM, generowanie sygnału metodą PhaseCorrect jest nieco bardziej skomplikowane i niestety sygnał taktujący licznik musi być dwa razy szybszy aby uzyskać sygnał PWM o takiej samej częstotliwości co przy Fast, jednakże sygnał taki jest lepszy dla np. silników.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2017, o 08:03 
Offline
Nowy

Dołączył(a): 18 sie 2017
Posty: 2
Pomógł: 0

Dziękuję za pomoc, wszystko świetne wyjaśnione. Link od dambo wiele mi wyjaśnił a odpowiedź od xentis rozwiała wszelkie wątpliwości jakie miałem.

A co dobre przetwornika, chodziło mi o to że potencjometrem przez ADC można sterować wypełnieniem.

Dzięki jeszcze raz, post na pewno przyda się dla potomnych :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2017, o 09:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

lobuzp napisał(a):
A co dobre przetwornika, chodziło mi o to że potencjometrem przez ADC można sterować wypełnieniem.
A no to teraz wszystko się rozjaśniło ;)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO