Índice:

Calibrando o brilho do LED: 5 etapas
Calibrando o brilho do LED: 5 etapas

Vídeo: Calibrando o brilho do LED: 5 etapas

Vídeo: Calibrando o brilho do LED: 5 etapas
Vídeo: Nem pense em calibrar seu monitor... É melhor fazer o seguinte... 2024, Novembro
Anonim
Calibrando o brilho do LED
Calibrando o brilho do LED

Enquanto fazia uma luz de fada, percebi que o valor PWM é não linearmente proporcional ao brilho do LED. Simplesmente falando, se o valor PWM for o dobro, o brilho não é o dobro; especialmente quando o PWM está próximo do máximo, qualquer mudança não é reconhecível pelos meus olhos. Achei que deveria ser um problema de calibração simples! e foi assim que fiz esse projeto! A ideia é medir o brilho de um LED com algum dispositivo (sensor de luminosidade ou fotoresistor) e encontrar uma correlação entre o valor PWM e o brilho. Então, mais tarde, se eu definir o brilho para 50%, o Arduino calculará o PWM correspondente e diminuirá o LED de acordo.

Portanto, preciso de um sensor de luminosidade e um LED para medir o brilho. Usando um cartão SD, salvarei os dados para procedimento de adaptação posterior. A adaptação será feita em Excel (ou qualquer outro programa). A saída será usada no código do Arduino, e é isso! Deve ser feito uma vez. Então você pode usar o parâmetro de calibração para sempre!

Etapa 1: Peças

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (sensor de luminosidade): Aliexpress 3 €

3- Módulo de cartão SD: Aliexpress 1 €

4- LED

5- Resistor 220 ohm

6 fios

custo total: 8 -10 €

Etapa 2: Fiação

Fiação
Fiação
Fiação
Fiação
Fiação
Fiação

O módulo do cartão SD e os fios do sensor de luminosidade não devem ser trocados (a maioria deles). O Led deve ser conectado a um pino PWM.

Etapa 3: Código

Código
Código

Combinei três códigos:

Cartão SD: exemplo usado> SD> ReadWrite no Arduino IDE

TSL 2561: exemplo de biblioteca Adafruit TSL2561 usado (sensorapi); você o encontrará em exemplos, se instalar a biblioteca (presumo que você saiba como instalar uma biblioteca no IDE do Arduino).

Desbotamento de LED: exemplos usados> Analógico> desbotamento

O código, após inicializar os módulos, vai escurecer o led e ler o brilho e salvá-lo no cartão SD. desta forma, irei coletar alguns dados para calibração.

Mudei cada um dos códigos de acordo com minhas necessidades. o código final anexado.

O sinal deve ser semelhante à imagem anexada. Infelizmente esqueci de tirar uma foto, então replanei no excel para mostrar como deveria ser.

NOTA: Estou usando o wemo mini D1 em vez do Arduino. por algum motivo que não conheço, o PWM está entre 0 e 1023. No Arduino deve estar entre 0-255. Se você deseja usar o código para o arduino, deve cuidar dele (linha 90).

Etapa 4: encaixando e usando

Ajustando e usando
Ajustando e usando
Ajustando e usando
Ajustando e usando

após coletar os dados, abri o arquivo no excel e plotei os dados (veja a foto). a primeira coluna é o valor PWM e a segunda é lux (leitura do sensor, a unidade não importa muito). Portanto, plote o lux (eixo y) vs. PWM (eixo x). Como você pode ver, o brilho é linearmente proporcional ao valor PWM. Eu coloquei uma linha nele.

Para ajustar uma linha siga como:

1- plotar os dados (inserir> gráfico de dispersão) Presumo que você saiba.

2- clique com o botão direito nos dados plotados

3- clique na linha de tendência.

4- (no excel 2013) no lado direito um painel aparece. Escolha linear. Na parte inferior, escolha "exibir equação no gráfico".

A relação linear é diferente da minha percepção. Portanto, acho que deve haver relação logarítmica entre minha percepção e o brilho (esta é a maneira mais simples que me veio à mente!). Então peguei a inclinação do ajuste. A interceptação não é importante, pois depende da poluição luminosa circundante! em vez disso, adicionei 1. Porque Log10 (0) é infinito. Preciso de uma interceptação para resolver o problema. No meu caso, a equação se parece com esta:

y = Log10 (0,08 x +1), y é o brilho ex é o valor PWM (0-1023)

Normalizei a equação para o valor máximo. então a saída tocada está sempre entre 0-100. assim posso pedir ao arduino um certo brilho relativo, sem me preocupar com o brilho máximo absoluto.

y = Log10 (0,08 x +1) * 100 / 1,914

Como no Arduino minha entrada é o brilho relativo, preciso reorganizar a equação para x (PWM):

x = (10 ^ (y * 1,914 / 100) - 1) / 0,08

usando esta equação no código, podemos obter uma mudança linear de brilho. Então, você pede ao arduino um brilho (y) entre 0-100 e o arduino calcula o valor PWM correspondente. desta forma, se dobrar o brilho, sua percepção também é a mesma.

se você quiser usá-lo em seu código, é melhor adicionar estas linhas:

brilho = 50; // em porcentagem

PWM = pow (10, brilho * 1,914 / 100) -1) / 0,0793;

analogWrite (ledpin, PWM);

NOTA: a normalização é feita para um PWM máximo de 1023 (para Wemos mini D1). Para Arduino, o PWM está entre 0-255. você precisa calculá-lo de acordo.

NOTA 2: Eu adicionei um gráfico log-linear para mostrar como a nossa percepção e o valor PWM estão relacionados. você não deve usá-lo para encaixe!

Etapa 5: Conclusão

a calibração funciona bem para mim. Quando os valores de PWM são grandes, posso ver a diferença. Antes como os grandes valores eu não conseguia ver o efeito do escurecimento. Basicamente, a maioria das mudanças foi feita em uma pequena faixa de PWM. agora está calibrado!

cada LED, especialmente em cores diferentes, deve ter seus próprios parâmetros de calibração. Porém calibrei um LED azul e usei o parâmetro para um LED branco e o resultado foi aceitável. então talvez você possa usar meu parâmetro de calibração sem se preocupar !!

Recomendado: