Señal PWM para LED

Cómo hacer colores con LED en su Raspberry Pi

Hagamos algunas cosas divertidas con los LED de su Raspberry Pi: mezclar colores. Sí, puede encender solo un LED a la vez, y eso le dará uno de los tres colores: rojo, azul o verde. Sin embargo, encienda dos y los colores se mezclarán de una manera conocida como mezcla aditiva .

Los colores primarios son rojo, verde y azul. Mezclarlos te da otros colores, los llamados colores secundarios . Entonces, una luz roja y verde juntas forman una amarilla. Una luz verde y azul crea un color cian, y una luz roja y azul crea un magenta. Encienda los tres LED a la vez y obtendrá un color blanco o, más precisamente, harán un tinte blanco.

En teoría, los tres LED encendidos juntos harán blanco, pero en la práctica esto depende del brillo exacto de las tres luces separadas. Tienen que ser idénticos para hacer un blanco puro; de lo contrario, el blanco se ve teñido, lo que no es del todo malo. No es una tarea fácil hacer esto, porque cada color tiene una caída de voltaje directa diferente; necesita diferentes resistencias para garantizar la misma corriente a través de cada LED. No solo eso, cada color de LED convierte la corriente en brillo con una eficiencia diferente, lo que complica enormemente las cosas.

Es posible que esté acostumbrado a mezclar pintura de colores, pero tenga en cuenta que obtiene resultados diferentes al hacer esto que al mezclar luz. La mezcla de pintura se conoce como mezcla sustractiva porque cada color de pintura que pones en la mezcla quita (o resta) algún otro color. Así es como funciona su impresora a color. Para la mezcla sustractiva, los colores primarios son cian, magenta y amarillo; rojo, verde y azul son los colores secundarios.

Usando difusores

La luz de tres LED en el mismo paquete aún se verá como tres puntos de luz separados, a menos que haya algún tipo de difusor, que permita que la luz se mezcle de manera uniforme. Para los LED RGB individuales, esto a veces lo proporciona el paquete o el cuerpo del LED en sí. La distancia de visión por sí sola puede proporcionar suficiente difusión para mezclar los colores, pero a menudo un difusor de algún tipo ayudará. Los difusores también reducen el brillo por unidad de área del LED, lo que hace que sea mucho más fácil tomar una buena fotografía en color.

LEER  Cómo configurar carpetas en su Raspberry Pi

Puede usar cualquier cosa que sea translúcida como difusor. Nuestro favorito es una hoja de estireno muy fina; un grosor de aproximadamente 0,5 mm está bien y es fácil de trabajar porque se puede cortar con tijeras. (Una buena alternativa es una simple hoja de papel). Si tiene varios LED y desea ver la luz de cada uno de manera distinta, entonces debe tener cada uno rodeado por un deflector de luz, a veces conocido como caja de huevos o gofre. caja.

Sin el deflector, la luz de cada LED se mezcla con las adyacentes y da un efecto de enfoque suave que no es nada desagradable. El grado de difusión que obtiene es proporcional no solo al material de difusión, sino también a la distancia de ese material al LED. En la mayoría de los casos, unos pocos milímetros están bien.

Puede convertir el LED de la carcasa de plástico transparente en un difusor frotándolo suavemente con papel de lija muy fino o lana de alambre. Aún mejor es usar un bloque de lijado con respaldo de espuma, ya que se adapta a las curvas mucho mejor que el papel. Estas carcasas de LED están hechas de resina, por lo que los disolventes como la acetona no afectan la superficie.

Creando más colores en tu Raspberry Pi

El truco para hacer más colores que los colores primarios y secundarios simples es tener un brillo diferente de cada uno de los tres colores. De esa forma, se pueden realizar muchos colores más sutiles. Entonces, ¿cómo se puede controlar el brillo de un LED? Bueno, es posible que la respuesta no sea evidente de inmediato, pero lo que debe hacer es encender y apagar el LED muy rápidamente. Si hace esto lo suficientemente rápido, es decir, más rápido que unas 30 veces por segundo, entonces el ojo / cerebro ve esto como una luz que está constantemente encendida y no parpadea.

LEER  Cómo mover un Sprite en Scratch en Raspberry Pi

Además, percibe el brillo del LED según la duración relativa de los tiempos de encendido y apagado. Es decir, si el LED está encendido y apagado durante el mismo tiempo, el LED parece tener solo la mitad de brillo. Esta técnica de cambio rápido se conoce como PWM (abreviatura de P ulse- W idth M odulation) y es la forma en que se controla el brillo del LED. Las formas de onda se muestran aquí.

Señal PWM para LED
Una señal PWM que controla el brillo de los LED.

Puede ver que las tres señales PWM se encienden y apagan a la misma velocidad; sin embargo, el que pasa más tiempo encendido es más brillante que el que pasa solo la mitad del tiempo encendido. Finalmente, la última forma de onda tiene un poco de tiempo encendida pero mucho tiempo apagada y produce un LED tenue. La relación entre el tiempo de encendido y el tiempo de apagado se conoce como ciclo de trabajo de la forma de onda. Tenga en cuenta que la frecuencia de esta señal PWM no importa una vez que esté por encima de la velocidad en la que ve que parpadea.

La biblioteca RPi.GPIO tiene la capacidad de hacer que los pines GPIO emitan una señal PWM, y la biblioteca puede establecer tanto la frecuencia como el ciclo de trabajo. Si conecta un LED RGB de acuerdo con la imagen de arriba, puede probar los colores que un LED RGB puede producir con este código.

#!/usr/bin/python3

import time

import RPi.GPIO as io

io.setmode(io.BCM)

io.setup(17,io.OUT) # make pins into an output

io.setup(27,io.OUT)

io.setup(22,io.OUT)

ledR = io.PWM(17,60) # Set up outputs as PWM @ 60Hz

ledG = io.PWM(27,60)

ledB = io.PWM(22,60)

ledR.start(0) # start off the PWM

ledG.start(0)

ledB.start(0)

print("RGB color cycle an LED using RPi.GPIO - By Mike Cook")

print("Ctrl C to quit")

try:

while(1):

print("Start cycle")

time.sleep(2.0)

for stepR in range(0,100,5):

for stepG in range(0,100,5):

for stepB in range(0,100,5):

ledR.ChangeDutyCycle(stepR)

ledG.ChangeDutyCycle(stepG)

ledB.ChangeDutyCycle(stepB)

time.sleep(0.1) # Whole cycle 8000 times this

ledR.ChangeDutyCycle(0)

ledG.ChangeDutyCycle(0)

ledB.ChangeDutyCycle(0)

except KeyboardInterrupt:

pass

ledR.stop(0) #stop the PWM

ledG.stop(0)

ledB.stop(0)

io.cleanup() # Restore default GPIO state

Cuando recorre esta lista, verá que lo primero que hace el código es configurar tres pines GPIO para que sean salidas y luego configurarlos para producir una señal PWM. El valor 60en estas líneas de código iniciales es la frecuencia de 60 Hz, que es la frecuencia a la que llegará la señal PWM. El ciclo de trabajo va de 0, que está apagado todo el tiempo, a 100, que está encendido todo el tiempo.

LEER  Revisiones de la placa Raspberry Pi

La parte principal del programa consta de tres forbucles anidados , que garantizan que todas las combinaciones de rojo, verde y azul se produzcan en pasos de cinco ciclos de trabajo. Se necesitan 800 segundos, poco más de 13 minutos, para realizar un ciclo completo en el que se producen 8.000 colores. Puede que no parezca tantos colores cuando prueba su salida LED ejecutando este código, pero todos están ahí.

Es solo que muchos de ellos de esta demostración podrían verse iguales. Esto tiene que ver con la forma en que las personas perciben los colores: son mucho más sensibles a la diferencia entre dos colores que a los colores en sí.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *