• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino uno PWM generator częstotliwości
#1
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?
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#2
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?
 
Odpowiedź
#3
Taki co 5Hz już jest zadowalający dla mnie.
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#4
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.
 
Odpowiedź
#5
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.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#6
(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?
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości