Arduino Polska Forum

Pełna wersja: Arduino uno PWM generator częstotliwości
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Szukam jakiś przykładów na generator częstotliwośći w arduino i nie znajduję o ile znajduję generator PWM czyli zabawy z wypełnieniem, a mi chodzi o możliwość zmiany częstotliwości w zakresie 0-300Hz na dwóch kanałach  z wypełnieniem stałym.  W ogóle czy arduinio ma możliwość wygenerowania na dwóch pinach inne częstotliwości?
AVR ma taką możliwość. Wystarczy przeczytać w nocie katalogowej układu dział poświęcony timerom. Fmax to F/ckl/2. Na Mega324 uzyskałem 10MHz http://avt.4ra.pl/viewtopic.php?id=14
Jaki krok częstotliwości Cię zadowala?
Taki co 5Hz już jest zadowalający dla mnie.
Wyszło mi, że przy preskalerze 1024, krok to ok 0,01Hz. Niestety, przy 16MHz, Fmin,to ok 15Hz. Musisz więc, połączyć timery kaskadowo. Dodatkowy podział przez 32 daje Fmin ok 0,47Hz, fmax 488Hz, krok ok 0,0005.
Zamiast łączyc timery kaskadowo, można zmniejszyć taktowanie uC.. Niestety, AVR to nie ARM (nieliczne AVR mają PLL), gdzie rdzeń można taktować inną częstotliwością niż peryferia. Zresztą w ARM nie trzeb by tego robić, tam timery są 16-bit (czasem 32) ponadto, w kaskadę można je łączyć programowo.
Wystarczy skorzystać z gotowych funkcji Arduino (i odpowiednio zapytać google - "arduino pwm frequency control"): 
https://playground.arduino.cc/Code/PwmFrequency
Kod:
// Set pin 9's PWM frequency to 3906 Hz (31250/8 = 3906)
// Note that the base frequency for pins 3, 9, 10, and 11 is 31250 Hz
setPwmFrequency(9, 8);

// Set pin 6's PWM frequency to 62500 Hz (62500/1 = 62500)
// Note that the base frequency for pins 5 and 6 is 62500 Hz
setPwmFrequency(6, 1);

// Set pin 10's PWM frequency to 31 Hz (31250/1024 = 31)
setPwmFrequency(10, 1024);
Jak widać można ustawiać częstotliwość w zakresie częstotliwości bazowych.
(11-11-2018, 20:04)kaczakat napisał(a): [ -> ]Wystarczy skorzystać z gotowych funkcji Arduino (i odpowiednio zapytać google - "arduino pwm frequency control"): 
https://playground.arduino.cc/Code/PwmFrequency
Kod:
// Set pin 9's PWM frequency to 3906 Hz (31250/8 = 3906)
// Note that the base frequency for pins 3, 9, 10, and 11 is 31250 Hz
setPwmFrequency(9, 8);

// Set pin 6's PWM frequency to 62500 Hz (62500/1 = 62500)
// Note that the base frequency for pins 5 and 6 is 62500 Hz
setPwmFrequency(6, 1);

// Set pin 10's PWM frequency to 31 Hz (31250/1024 = 31)
setPwmFrequency(10, 1024);
Jak widać można ustawiać częstotliwość w zakresie częstotliwości bazowych.


Czestotliwości mają byc od 0 do 300 z krokiem min5Hz. Jak
Kod:
setPwmFrequency(
uzyska 5Hz?