Frekvence PWM Arduino Nano

Používám Arduino Nano jako PWM ovladač pro topné těleso.

V současné době používám D11 (PB3). Mohl bych se změnit, i když se používají všechny piny s PWM, a vyžadoval by přepis a opětovné připojení.

Tím se vytvoří signál při ~ 490 Hz, ale chtěl bych experimentovat se změnou na vyšší frekvenci.

Shrnul jsem, že je možné měnit frekvenci změnou dělitele z výchozí 64.

Můj náčrt používá Používá http://playground.arduino.cc/Main/SevenSegmentLibrary a volá millis () – bude mít změna dělitele PWM dopad na některou z nich?

POZNÁMKA Četl jsem dokumentaci setPwmFrequency, ale najít „narušuje normální provoz“ neužitečné – vlastně jsem po nějakém vysvětlení konkrétního efektu. Používám pouze millis() k časovému stisknutí tlačítka a blikání LED, které nejsou časově kritické

Mějte prosím na paměti, že změna frekvence PWM změní Atmega časovače a narušuje normální provoz mnoha funkcí, které se spoléhají na čas (delay (), millis (), servo knihovna).

Dělám nějaké další studie. http://playground.arduino.cc/Code/PwmFrequency stavy Změny na pinech 3, 5, 6 nebo 11 mohou způsobit delay () a millis ( ) funkce přestat fungovat.

Jiné reference říkají 3, 11 použijte timer 2 takže do ovlivňují millis() nebo ne , jak tvrdí ostatní odkazy timer 0. / p>

Komentáře

  • Ano a ne, v závislosti na použitém časovači pwm.

Odpověď

Nevím, odkud tato dezinformace pochází … Odpověď je no , změna konfigurace časovače 2 ne ovlivnit millis() ani delay(), protože tyto funkce se spoléhají na časovač 0. AFAIK jádro Arduina časovač 2 vůbec nepoužívá. Mějte však na paměti, že mohou existovat i jiné knihovny Arduina nebo třetích stran, které spoléhají na časovač 2.

Zde můžete vidět zdrojový kód millis() a delay() .

Jak správně uvádí MITU RAJ ve své odpovědi, signál PWM na kolíku 11 poskytuje Časovač 2, abyste jej mohli bezpečně používat.

Komentáře

Odpověď

Odpověď je NO změna děliče PWM pro pin 11 neovlivní funkci millis() (ani delay()).


Vysvětlení:
Arduino Nano používá mikrokontrolér ATMega328P, stejně jako Arduino Uno .

PWM pinu 11 je řízen časovačem 2. Ve výchozím nastavení má časovač 2 předvolbu 64 (tj. nastavení 0x04). Základní frekvence časovače 2 je 31372,55 Hz, což vede k frekvenci 490,2 Hz (tj. 31372.55 / 64 = 490.1961).

Na druhou stranu mikrosekundový časovač (tj. Ten, který používá millis(), micros(), delay() a delayMicroseconds()) je řízen časovačem 0.

Takže změna předvolby časovače 2 neovlivní millis().

Změní se však frekvence PWM kolíku 3.


Zpět na vaši otázku:
Možné frekvence PWM Pin 11 (vyšší než 488 Hz) jsou:

31373/32 = 980,4 Hz
31373/8 = 3921,6 Hz
31373/1 = 31373 Hz

Kde 32, 8, 1 je předvolba.
Což se rovná na hodnotu nastavení 0x03, 0x02 & 0x01.

Přidejte tento řádek kódu:

TCCR2B = TCCR2B & 0b11111000 | setting; 

Kde setting je hodnota nastavení pro příslušný předvolič.

============================================ || Frequency [Hz] || Prescaler || Setting || ============================================ || 31373.55 || 1 || 0x01 || || 3921.57 || 8 || 0x02 || || 980.39 || 32 || 0x03 || || 490.20 || 64 || 0x04 || || 245.10 || 128 || 0x05 || || 122.55 || 256 || 0x06 || || 30.64 || 1024 || 0x07 || ============================================ 

Zdrojový kód : https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/wiring.c

Komentáře

  • Jen nitpicking ale … časovač ' s základní frekvence v režimu PWM správného fáze je F_CPU / 510 (31373 Hz), ne F_CPU / 512: počítání trvá 255 cyklů F od 0 do 255, poté dalších 255, aby se počítalo zpět na nulu. Srov. rovnice pro frekvenci PWM v datovém listu.
  • @EdgarBonet Dobrý bod. Odpověď byla nyní opravena.
  • Bylo by možné sestoupit o krok pomaleji na 15,31 HZ?

Odpověď

Závisí na kolíku, který jste použili pro PWM.

Specifikace Arduino UNO / NANO říkají následující věci:

Základní frekvence pro piny 3, 9, 10 a 11 je 31250 Hz.

Základní frekvence pro piny 5 a 6 je 62500 Hz.

Dělitele k dispozici na pinech 5, 6, 9 a 10 jsou: 1, 8, 64, 256 a 1024.

Dělitele dostupné na pinech 3 a 11 jsou: 1, 8, 32, 64, 128, 256 a 1024.

Frekvence PWM jsou spojeny dohromady v párech kolíků. Pokud je jeden v páru změněn, druhý je také změněn tak, aby odpovídal.

Kolíky 5 a 6 jsou spárovány na časovači0.

Kolíky 9 a 10 jsou spárovány na časovači1.

Kolíky 3 a 11 jsou spárovány na časovači 2.

Změny na kolících 3, 5, 6 nebo 11 mohou způsobit zpoždění () a funkce millis (), aby přestala fungovat. Mohou být ovlivněny i další funkce související s časováním.

Komentáře

  • Protože ' když cituji specifikace, je ' d hezké, pokud na ně můžete také odkazovat? 🙂

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *