En este proyecto de electrónica en el que se utiliza un rotary encoder para controlar la intensidad de una tira de luces LED mediante una señal de modulación de ancho de pulso (PWM, por sus siglas en inglés).
Un rotary encoder es un dispositivo de entrada que se utiliza para medir el movimiento y la dirección de rotación de un eje. En este caso, se utiliza para ajustar la intensidad de la luz LED, permitiendo al usuario aumentar o disminuir el brillo de la tira LED según sus necesidades.
Por otro lado, la modulación de ancho de pulso (PWM) es una técnica que se utiliza para controlar la cantidad de energía que se envía a un dispositivo eléctrico, como una tira de LED. Al variar el ancho del pulso de la señal PWM, se puede ajustar la cantidad de energía que se envía a la tira de LED y, por lo tanto, su brillo.
Este proyecto utiliza un rotary encoder para permitir al usuario controlar la intensidad de una tira de LED mediante la técnica de modulación de ancho de pulso (PWM).
No te pierdas ningún video más suscríbete a nuestro canal de telegram https://t.me/carlosvolt_electronica_robotica
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Componentes electrónicos
Arduino mini pro
El Arduino Pro Mini es una placa de microcontrolador basada en el ATmega328 .
Tiene 14 pines de entrada / salida digital (de los cuales 6 se pueden usar como salidas PWM), 6 entradas analógicas, un resonador integrado, un botón de reinicio y orificios para montar encabezados de pines. Se puede conectar un encabezado de seis pines a un cable FTDI o una placa de conexión Sparkfun para proporcionar alimentación USB y comunicación a la placa.
El Arduino Pro Mini está diseñado para su instalación semipermanente en objetos o exposiciones. La placa viene sin encabezados pre montados, lo que permite el uso de varios tipos de conectores o la soldadura directa de cables. El diseño del pin es compatible con el Arduino Mini.
Hay dos versiones del Pro Mini. Uno corre a 3.3V y 8 MHz, el otro a 5V y 16 MHz.
Microcontrolador | ATmega328 * |
Fuente de alimentación de la placa | 3,35-12 V (modelo de 3,3 V) o 5-12 V (modelo de 5 V) |
Voltaje de funcionamiento del circuito | 3.3V o 5V (dependiendo del modelo) |
Pines de E / S digitales | 14 |
Pines PWM | 6 6 |
UART | 1 |
SPI | 1 |
I2C | 1 |
Pines de entrada analógica | 6 6 |
Interrupciones externas | 2 |
Corriente CC por pin de E / S | 40 mA |
Memoria flash | 32 KB de los cuales 2 KB utilizados por el gestor de arranque * |
SRAM | 2 KB * |
EEPROM | 1 KB * |
Velocidad de reloj | 8 MHz (versiones de 3.3V) o 16 MHz (versiones de 5V) |
Pines hembra
Zócalo para arduino nano
PCB
Descargar archivo gerber –> pcb motor paso a paso bluetooth
Una tira de led de 12 voltios
Transistor TIP31C NPN
El transistor TIP31C hace parte de la familia de semiconductores de potencia en encapsulado plástico TO-220 de muy alto desempeño que puede usarse en diseños relacionados con aplicaciones de audio y conmutación rápida. Su complemento es el TIP32C.
Caracteristicas:
- Transistor tipo: NPN
- Corriente máxima de colector: 3A
- Voltaje máximo Colector-Emisor: 100V
- Voltaje de saturación colector-emisor (Max) @,Ib,Ic: 1.2V @ 375mA, 3A
- Máxima potencia: 2W
- Temperatura de operación máxima: 150°C
- Encapsulado TO-220
Un resistor de 1KOhm
Cables dupont
Rotary Encoder Ambas Direcciones Pulsador ky-040
Este encoder giratorio Infinito tiene un número fijo de posiciones por revolución (Giro completo). Estas posiciones son medidas fácilmente por pequeños “clicks” cuando gira el encoder. Éste módulo posee veinte de estas posiciones. Lo que significa una resolución de 18 grados, además detecta cuando es presionado como si toda la perilla fuera un botón.
Voltaje de funcionamiento 3.3V ~ 5V
Número de Posiciones 20
Grados que puede medir por posición 18
Detección de dirección de giro Si
Detección de frecuencia de giro y velocidad Si
Deteccion de presión del Sensor Si
Dimensiones 27 x 19 x 30mm
Peso 8g
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
// Definimos los pines que vamos a utilizar para el encoder rotatorio y la salida PWM const int encoderPin2CLK = 2; //Pin CLK del encoder const int encoderPin3DT = 3; //Pin DT del rotary encoder const int pwmPin9 = 9; //Pin para generar la salida PWM // Definimos las variables necesarias para el rotary encoder y el control de la intensidad volatile int encoderPosicion = 0; // Posición actual del encoder //int lastencoderPosicion = 0; // Última posición registrada del encoder int intensidadLed = 0; // Valor actual de la variable intentencidadLed // Función que se ejecuta cuando se produce una interrupción en el encoder void handleEncoderInterrupt() { int valorEncoder = digitalRead(encoderPin2CLK); if (valorEncoder != digitalRead(encoderPin3DT)) { encoderPosicion++; intensidadLed = map(encoderPosicion, 0, 255, 0, 255); } else { encoderPosicion--; intensidadLed = map(encoderPosicion, 0, -255, 0, -255); } } void setup() { // Configuramos los pines de entrada/salida pinMode(encoderPin2CLK, INPUT); pinMode(encoderPin3DT, INPUT); pinMode(pwmPin9, OUTPUT); // Configuramos el encoder rotatorio para utilizar interrupciones attachInterrupt(digitalPinToInterrupt(encoderPin2CLK), handleEncoderInterrupt, CHANGE); // Configuramos el puerto serial a 9600 bps Serial.begin(9600); } void loop() { // Limitamos los valores de intensidadLed y encoderPosición a un valor entre 0 a 255 intensidadLed = constrain(intensidadLed, 0, 255); encoderPosicion = constrain(encoderPosicion, 0, 255); // Mostramos los valores de intensidadLed y encoderPosición Serial.print("Encoder: "); Serial.print(encoderPosicion); Serial.print(", Intesidad tira led: "); Serial.println(intensidadLed); // Enviamos el valor de intensidadLed a la salida PWM del pin 9 analogWrite(pwmPin9, intensidadLed); delay(200); } |
No te pierdas ningún video más suscríbete a nuestro canal de telegram https://t.me/carlosvolt_electronica_robotica
PROYECTO RECOMENDADO