Arduino analogWrite – uso y ejemplos

Arduino analogWrite – Introducción

La función de Arduino analogWrite permite hacer uso del módulo de PWM. Esté modulo puede generar una señal de una frecuencia de 490Hz y modular el ciclo de trabajo (CT). El propósito de esta función es generar una señal de 490Hz al CT configurado. De hecho, a señal generada se mantendrá en el pin seleccionado hasta cualquiera de las siguientes condiciones: se ejecute otra instrucción analogWrite, se utilice digitalWrite o digitalRead sobre el mismo pin.

También es importante mencionar que para usar a esta función, no es necesario haber declarado el pin a usar como una salida digital. Es importante mencionar que para los pines 5 y 6 de las tarjetas UNO, la frecuencia de salida es de 980 Hz.

Síntaxis:

analogWrite(PIN, Ciclo-de-Trabajo);

Parámetros de entrada:

  • PIN. Es un pin que sea compatible con la función. Por ejemplo, esta compatibilidad depende de la tarjeta Arduino que se utiliza. La Figura-1, muestra los pines compatibles con la función analogWrite de distintas tarjetas Arduino.
  • Ciclo-de-Trabajo -CT. Un ciclo de trabajo es la relación entre el tiempo en el que el pulso se encuentra en alto vs el tiempo en bajo. Por ejemplo, un CT del 50%, indicaría que la señal periódica (Frecuencia = 980Hz), durará la mitad del tiempo en alto y la mitad en bajo.
    • Rango: 0 a 255. 0 Significa un CT de 0, por lo tanto la señal siempre esta en bajo lógico (0). Si el valor del ciclo esta en 127, entonces se obtendrá un CT del 50%. Finalmente si vale 255, se tendrá un CT del 100%, es decir, la señal de salida siempre estará en alto (5VDC).

Parámetro de salida:

  • Ninguno

 

 

Arduino analogWrite

Figura-1. Pines disponibles para la función de Arduino, analogWrite.

Funcionamiento de la función paara Arduino analogWrite

La función analogWrite esta enlazada directamente a los pines por donde se puede utilizar el modulo PWM. Dicho modulo permite generar ondas periódicas a una frecuencia de 980Hz. Es decir que la repetición de un ciclo completo toma aproximadamente 1.02 ms. Por ejemplo, la Figura-2, muestra la señal generada al ejecutar la función analogWrite(PIN,127). Está función generará un CT de aproximadamente el 50%, lo que significa que el tiempo en alto y en bajo es de aproximadamente 510 uS.

La Figura-3, muestra el mismo ejemplo pero con un CT del 99%, si se llega al 100% (ciclo = 255), entonces la señal siempre estará activada.

Arduino analogWrite

Figura-2. Arduino analogWrite Ejemplo de la señal de salida para un CT del 50%.

Arduino analogWrite señal

Figura-3. Otro ejemplo de una señal de salida con la función analogWrite para un CT del 99%.

Vista de la salida 3 de Arduino analogWrite(3,127);

Osciloscopio Arduino analogWrite

Figura-4. Vista del osciloscopio para un CT del 50% y el pin 3 de un Arduino UNO R3.

Vista del osciloscopio para un analogWrite(6,64);

Arduino analogWrite

Figura-5. Vista del osciloscopio para un CT del 25% pero en el pin 6, a diferencia del pin 3, esté pin genera una frecuencia de 980Hz. A

Identificar pines compatibles con Arduino analogWrite

Para identificar que pines son compatibles con analogWrite, cada tarjeta tiene por lo general, una marca en forma de onda. Por ejemplo la siguiente imagen, la Figura-6, muestra dichas marcas. También se puede ver los pines compatibles en la tabla de la Figura-1.

Arduino analogWrite pines compatibles

Figura-6. Marca de los pines compatibles con la función  para Arduino analogWrite.

Otras funciones de Arduino

Ejemplos

Ejemplo-1.

Conectar un LED con una resistencia de 330 Ohms. Posteriormente se le carga el siguiente programa. Se podrá observar que el led de estar completamente apagado se encenderá cada 5 segundos con mayor intensidad hasta llegar a estar completamente prendido en 255 segundos. La variable cicloTrabajo inicialmente vale 0 y se va incrementado en una unidad cada segundo. Dado que el segundo parámetro de la función analogWrite puede tomar un rango desde 0 hasta 255, se utilizará una variable byte. Esta variable al incrementarse cada segundo, cuando se desborda (llega a 255), pasará a 0 automáticamente.

Autor:

Dr. Rubén E-Marmolejo.

Profesor Universidad de Guadalajara

Referencias:

[1] – http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf

[2] – https://es.wikipedia.org/wiki/Ciclo_de_trabajo

Escríbenos tus dudas o comentarios

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Usamos Cookies en nuestro sitio WEB

Por favor confirma, si aceptas nuestras cookies de rastreo. También puedes negar el uso de cookies de rastreo y seguir navegando sin que ninguna información sea enviada a servicios de terceros.