Arduino Polska Forum
Arduino uno PWM generator częstotliwości - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Arduino uno PWM generator częstotliwości (/watek-arduino-uno-pwm-generator-cz%C4%99stotliwo%C5%9Bci)



Arduino uno PWM generator częstotliwości - Jarewa0606 - 11-11-2018

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?


RE: Arduino uno PWM generator częstotliwości - es2 - 11-11-2018

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?


RE: Arduino uno PWM generator częstotliwości - Jarewa0606 - 11-11-2018

Taki co 5Hz już jest zadowalający dla mnie.


RE: Arduino uno PWM generator częstotliwości - es2 - 11-11-2018

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.


RE: Arduino uno PWM generator częstotliwości - kaczakat - 11-11-2018

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.


RE: Arduino uno PWM generator częstotliwości - es2 - 11-11-2018

(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?