- Material Necessário
- Diagrama de circuito
- Código e Explicação
- Como ele controla a intensidade da luz automaticamente:
“Seja uma faísca brilhante, luzes apagadas até escurecer!” às vezes esquecemos de desligar as luzes e desperdiçar eletricidade e você também deve ter visto a luz da rua acesa durante o dia. Já construímos alguns circuitos no detector de escuridão onde as luzes desligam automaticamente se estiver claro do lado de fora e acendem se estiver escuro do lado de fora. Mas desta vez, neste circuito não estamos apenas ligando e desligando as luzes com base nas condições de luz, mas também variando a intensidade da luz de acordo com as condições de luz externa. Aqui, usamos o conceito LDR e PWM com Arduino para diminuir ou aumentar o brilho do LED de energia de 1 watt automaticamente.
Basicamente, PWM se refere à modulação por largura de pulso, o sinal de saída através de um pino PWM será um sinal analógico e adquirido como um sinal digital do Arduino. Ele usa o ciclo de trabalho da onda digital para gerar o valor analógico sequencial para o sinal. E esse sinal é usado posteriormente para controlar o brilho do LED de energia.
Material Necessário
- Arduino UNO
- LDR
- Resistor (510, 100k ohm)
- Capacitor (0,1uF)
- Transistor 2N2222
- LED de alimentação de 1 watt
- Fios de conexão
- Tábua de pão
Diagrama de circuito
Código e Explicação
O código Arduino completo para dimmer LED automático é fornecido no final.
No código abaixo, estamos definindo o pino PWM e as variáveis a serem usadas no código.
int pwmPin = 2; // atribui o pino 12 à variável pwm int LDR = A0; // atribui a entrada analógica A0 ao potenciômetro variável int c1 = 0; // declara a variável c1 int c2 = 0; // declara a variável c2
Agora, no loop, estamos primeiro lendo o valor usando o comando “analogRead (LDR)” e depois salvando a entrada analógica em uma variável chamada “valor” . Fazendo alguns cálculos matemáticos, estamos gerando o sinal PWM. Aqui, estamos controlando a intensidade da luz usando PWM apenas se o valor analógico for inferior a 500 e, se for superior a 500, desligamos completamente as luzes.
valor int = analogRead (LDR); Serial.println (valor); c1 = valor; c2 = 500-c1; // subtrai c2 de 1000 ans salva o resultado em c1 if (valor <500) { digitalWrite (pwmPin, HIGH); delayMicroseconds (c2); digitalWrite (pwmPin, LOW); delayMicroseconds (c1); } if (valor> 500) { digitalWrite (2, LOW); } }
Você pode aprender mais sobre PWM no Arduino aqui.
Como ele controla a intensidade da luz automaticamente:
Conforme o diagrama de circuito, fizemos um circuito divisor de tensão usando LDR e resistor de 100k. A saída do divisor de tensão é alimentada para o pino analógico do Arduino. O pino analógico detecta a tensão e fornece algum valor analógico ao Arduino. O valor analógico muda de acordo com a resistência de LDR. Portanto, se estiver escuro sobre o LDR, sua resistência aumenta e, portanto, o valor da tensão (valor analógico) diminui. Portanto, o valor analógico varia a saída PWM ou o ciclo de trabalho, e o ciclo de trabalho é ainda mais proporcional à intensidade da luz do LED de energia. Portanto, a luz sobre o LDR controlará automaticamente a intensidade do LED de energia. Abaixo está o diagrama de fluxo de como isso funcionará, o sinal de seta para cima está indicando "aumentando" e o sinal de seta para baixo está indicando "diminuindo".
Intensidade de luz (no LDR) ↓ - Resistência ↑ - Tensão no pino analógico ↓ - Ciclo de trabalho (PWM) ↑ - Brilho do LED de energia ↑
Se estiver totalmente brilhante do lado de fora (quando o valor analógico aumenta mais de 500), o LED de energia apaga.
É assim que você pode controlar a intensidade da luz automaticamente usando LDR.
Verifique mais detalhadamente todos os nossos circuitos relacionados a LDR aqui.