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()
o 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
El Arduino DUE es compatible
No es necesario llamar
La
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
analogWrite
función no tiene nada que ver con los pines analógicos o la analogRead
funció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: intDevoluciones
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()
y 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