Publicaciones

Cómo cambiar la frecuencia en los pines PWM de Arduino UNO

Cómo cambiar la frecuencia en los pines PWM de Arduino UNO


Arduino Uno es uno de los tableros de desarrollo más utilizados en estos días. Se puede utilizar para casi cualquier aplicación. Una de esas aplicaciones es en circuitos de alta frecuencia.

analogwrite ()

[E / S analógica]

Descripción

Escribe un valor analógico ( onda PWM ) en un pin. Se puede usar para encender un LED a diferentes niveles de brillo o para conducir un motor a varias velocidades. Después de una llamada a analogWrite(), el pin generará una onda cuadrada constante del ciclo de trabajo especificado hasta la próxima llamada a analogWrite()(o una llamada a digitalRead()digitalWrite()) en el mismo pin. La frecuencia de la señal PWM en la mayoría de los pines es de aproximadamente 490 Hz. En los tableros Uno y similares, los pines 5 y 6 tienen una frecuencia de aproximadamente 980 Hz.
En la mayoría de las placas Arduino (aquellas con el ATmega168 o ATmega328P), esta función funciona en los pines 3, 5, 6, 9, 10 y 11. En el Arduino Mega, funciona en los pines 2 - 13 y 44 - 46. Arduino más antiguo Las placas con un soporte ATmega8 solo analogWrite()en los pines 9, 10 y 11. 
El Arduino DUE es compatible analogWrite()con los pines 2 a 13, más los pines DAC0 y DAC1. A diferencia de los pines PWM, DAC0 y DAC1 son convertidores de digital a analógico, y actúan como verdaderas salidas analógicas. 
No es necesario llamar pinMode()para establecer el pin como una salida antes de llamar analogWrite()
La analogWritefunción no tiene nada que ver con los pines analógicos o la analogReadfunción.

Sintaxis

analogWrite(pin, value)

Parámetros

pin: el pin para escribir. Tipos de datos permitidos: int. 
value: el ciclo de trabajo: entre 0 (siempre desactivado) y 255 (siempre activado). Tipos de datos permitidos: int

Devoluciones

Nada

Código de ejemplo

Establece la salida al LED proporcional al valor leído del potenciómetro.
int ledPin = 9;      // LED connected to digital pin 9
int analogPin = 3;   // potentiometer connected to analog pin 3
int val = 0;         // variable to store the read value

void setup() {
  pinMode(ledPin, OUTPUT);  // sets the pin as output
}

void loop() {
  val = analogRead(analogPin);  // read the input pin
  analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}

Notas y advertencias

Las salidas PWM generadas en los pines 5 y 6 tendrán ciclos de trabajo superiores a los esperados. Esto se debe a las interacciones con las funciones millis()delay(), que comparten el mismo temporizador interno utilizado para generar esas salidas PWM. Esto se notará principalmente en las configuraciones de ciclo de trabajo bajo (por ejemplo, 0-10) y puede resultar en un valor de 0 que no apaga completamente la salida en los pines 5 y 6.


Es decir el arduino tiene una frecuencia predeterminada pero se puede cambiar a un valor tan alto como 65Khz y tan bajo como 30Hz usando solo un código de línea ”.

Frecuencias

Frecuencia PWM para D3 y D11: 490.20 Hz (El DEFAULT)
Frecuencia PWM máximo para D3 y D11: 62500.00 Hz

Frecuencia PWM para D5 y D6: 976.56 Hz (El DEFAULT)
Frecuencia PWM máximo para D5 y D6: 31372.55 Hz

Frecuencia PWM para D9 y D10: 490.20 Hz (El DEFAULT)
Frecuencia PWM máximo para D9 y D10: 31372.55 Hz

Video sobre frecuencia de PWM  en arduino


Teodría y códigos: Ir a Este LINK

Tambien tiene los detalles en arduino: Ir al link de arduino


Share this Article on :
 
d Copyright Electrónica Net Andino 2006 | Design by Net Andino | Published by Editor de Templates | Powered by Net Andino .