julio 26, 2018

PWM – analogWrite()

Capitulo anterior: Hello World                                                                                                 Próximo capitulo: Variables – Tipo de datos

Entre los pines digitales encontramos unos pines con el símbolo de la “Ñ” “~”, estos pines tienen un característica especial pueden generar señales PWM, pulse width modulation, y en español Modulación por ancho de pulso, son señales en las que se modifican el ciclo de trabajo, osea en un periodo de tiempo cuanto dura la señal positiva, esto significa que podemos ajustar en cuanto tiempo durara positiva (HIGH) la señal en el periodo de tiempo de su ciclo de trabajo, comúnmente se puede observar en un osciloscopio como un tren de pulsos. en arduino podemos generar este tipo de señal mediante la función analogWrite();

analogWrite(arg 1,arg2); esta función tiene dos argumentos:

  • arg1, este sera el pin por el cual generaremos la señal pwm, debe ser alguno de los pines que posee el símbolo “~”.
  • arg2, sera el valor del ancho del pulso, estará entre 0 y 255, donde 255 sera el 100% del ciclo de trabajo osea la señal en todo el ciclo de trabajo sera HIGH (Valor logico positivo) y cero es LOW, voltaje cero en todo el ciclo de trabajo.

Las tarjetas arduino para esta señal tienen un frecuencia de 490 Hz en los pines “~”. Las tarjeta como lo las Arduino UNO tienen una frecuencia de 980 Hz en los pines 5 y 6, en el resto siguen teniendo los 490 Hz. Esto significa que en un 1 segundo tenemos 490 ciclos de trabajo, y cada ciclo de trabajo dura 0,0020408 segundos. Es importante conocer esto ya que así podemos saber cuanto durara el ciclo en HIGH o en LOW.

Con esta señal la usamos para variar la intensidad de luz en un LED, hacer sonar un buzzer, variar la velocidad de un motor y es usado por algunas librerías por ejemplo  Servo.h, con el se usa para generar los pulso para mover los servo. En la siguiente imagen podemos observar un ejemplo de como seria un ciclo de trabajo variando el valor en 0 para 0% ,77 para 30% ,128 para 50% y 255 para 100%, activando el pin 6.

 

Esto se puede apreciar cuando variamos la intensidad de luz de un LED, cuando tenemos el 100% (255), el led brillara con su máxima intensidad, si utilizamos un valor del 50% (128), el LED brillara con la mitad de la intensidad y si aplicamos un valor de 0% (0) el LED se apagara.

la señal pwm generada cambiara hasta que se vuelva a llamar la función cambiándole el valor, entonces si queremos llevarla a cero, debemos llamarla nuevamente especificando el argumento 2 en cero y por supuesto el pin donde la estemos generando como el argumento 1.

Es muy importante tener en cuenta que los pines 5 y 6, no darán LOW en 0 voltios ya que estos pines comparten el mismo timer que las funciones millis() y delay(), por esta razón no llegara nunca a cero. Los timers son contadores por decirlo así que permite ejecutar acciones en cierto tiempo al microcontrolador.

Bueno ahora a la practica implementaremos un circuito sencillo como el hello world con un led variando la intensidad de luz y usaremos tambien un RGB para variar su colores.

Entonces que se necesita.

  • arduino UNO o la que tengas, esto se hará con la arduino uno.
  • 1 x LED cualquier color,
  • 1 x LED RGB Cátodo común.
  • 1 x Resistencia 220 Ohmios
  • Cables de conexión rápida.

Diagrama de conexión:

Código Arduino:

como se pudo observar se generaron 4 salidas como pwm y se puede ver como varia la intensidad de luz del LED y los colores del LED RGB.

Capitulo anterior: Hello World                                                                                                 Próximo capitulo: Variables – Tipo de datos