Arduino Nano PWM frekvencia

Arduino Nano-t használtam PWM vezérlőként egy fűtőelemhez.

Jelenleg a D11 (PB3). Megváltoztathatnám, bár az összes PWM-es pin van használatban, és újraírást és újracsatlakozást igényelne.

Ez ~ 490Hz-en hoz létre jelet, de szeretnék kísérletezni ennek megváltoztatására: magasabb frekvenciát.

Összegyűjtem, hogy a frekvencia megváltoztatható úgy, hogy megváltoztatom az osztót az alapértelmezett 64-ből.

A vázlatom a http://playground.arduino.cc/Main/SevenSegmentLibrary és meghívja a millist () – hatással lesz-e ezek egyikére a változó PWM osztó?

MEGJEGYZÉS Elolvastam a setPwmFrequency dokumentációt, de a find “megzavarja a normál működést” haszontalan – valójában a konkrét hatás magyarázatát követem. Csak a millis() -et használom időzítésre és egy LED villogására, amelyek nem kritikusak az időnek.

Ne feledje, hogy a PWM frekvencia megváltoztatása megváltoztatja a Az Atmega időzítői, és megzavarják az idő függvényében működő sok funkció (késleltetés (), millis (), Servo könyvtár) normál működését.

További tanulmányokat folytattam. http://playground.arduino.cc/Code/PwmFrequency állapot A 3., 5., 6. vagy 11. érintkező változásai késleltetést () és millis ( ) funkciók a működés leállításához.

Más hivatkozások szerint a 3., 11. a timer 2 szóval do hatással vannak a millis() -re, vagy nem a -re, mivel ezekre más hivatkozásokat hivatkoznak. / p>

megjegyzések

  • igen és nem, a használt pwm időzítőtől függően.

válasz

Nem tudom, honnan származik ez a félretájékoztatás … A válasz no , a 2. időzítő újrakonfigurálása nem befolyásolja millis() és delay(), mivel ezek a funkciók a 0-as időzítőre támaszkodnak. De vegye figyelembe, hogy lehetnek más Arduino vagy harmadik fél könyvtárai, amelyek a Timer 2-re támaszkodnak.

Itt láthatja a és delay() .

Ahogy MITU RAJ helyesen állítja válaszában, a PWM jelet a 11. tűn a 2. időzítő, így biztonságosan használhatja.

Megjegyzések

Válasz

A válasz NO , a 11. érintkező PWM osztójának megváltoztatása nem befolyásolja a millis() függvényt (sem a delay()).


Magyarázat:
Az Arduino Nano az ATMega328P mikrovezérlőt használja, ugyanaz, mint az Arduino Uno .

A 11-es érintkező PWM-jét a 2-es időzítő vezérli. Alapértelmezés szerint a 2-es időzítő előskálája 64 (azaz 0x04 beállítás). A 2. időzítő alapfrekvenciája 31372,55 Hz, ami 490,2 Hz (azaz. 31372.55 / 64 = 490.1961).

Másrészt a mikroszekundumos időzítő (vagyis az, amelyet millis(), micros(), delay() és delayMicroseconds()) a 0 időzítő vezérli.

Tehát A 2. időzítő előmérőjének megváltoztatása nem érinti a millis() elemeket.

Ez azonban megváltoztatja a 3. tű PWM frekvenciáját.


Vissza a kérdésedre:
A 11. érintkező lehetséges PWM frekvenciái (488 Hz felett):

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

Ahol 32, 8, 1 az előmérő.
Ami egyenlő 0x03, 0x02 & 0x01 beállítási értékre.

Adja hozzá ezt a kódsort:

TCCR2B = TCCR2B & 0b11111000 | setting; 

Ahol setting az adott preskaler beállításának értéke.

============================================ || 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 || ============================================ 

Forráskód : https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/wiring.c

Megjegyzések

  • Csak szúrás, de … az időzítő ' alapfrekvenciája a fázis helyes PWM módban F_CPU / 510 (31373 Hz), nem F_CPU / 512: 255 ciklus szükséges a számláláshoz f rom 0-tól 255-ig, majd még 255-vel visszaszámlálás nullára. C.f. az adatlapon szereplő PWM frekvencia egyenlete.
  • @EdgarBonet Jó pont. A választ most kijavították.
  • lehetséges-e lassabban lemenni 15,31 HZ-ig?

Válasz

A PWM-hez használt PIN-kódtól függ.

Arduino UNO / NANO specifikációi a következőket mondják:

A 3., 9., 10. és 11. érintkezők alapfrekvenciája 31250 Hz.

Az 5. és 6. érintkezők alapfrekvenciája 62500 Hz.

A rendelkezésre álló osztók az 5., 6., 9. és 10. érintkezőkön: 1, 8, 64, 256 és 1024.

A 3. és 11. érintkezőkön elérhető osztók: 1, 8, 32, 64, 128, 256 és 1024.

A PWM frekvenciák csappárokba vannak kötve. Ha az egyik párban megváltozik, akkor a másik is megváltozik, hogy megfeleljen.

Az 5. és 6. érintkező párosítva van a timer0-on.

A 9. és 10. érintkező párosítva van az 1. időzítőn. p>

A 3. és a 11. érintkező párosítva van a 2. időzítőn.

A 3., 5., 6. vagy 11. érintkező változásai késleltetést okozhatnak () és millis () függvények a működés leállításához. Egyéb időzítéssel kapcsolatos funkciók is érintettek lehetnek.

Megjegyzések

  • Mivel Ön ' újból idézve a specifikációkat, ' jó lenne, ha linkelni is tudnál rájuk? 🙂

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük