Índice:

Várias velas eletrônicas: 3 etapas
Várias velas eletrônicas: 3 etapas

Vídeo: Várias velas eletrônicas: 3 etapas

Vídeo: Várias velas eletrônicas: 3 etapas
Vídeo: SÓ FAÇO ASSIM AGORA! NÃO FALHA MAIS! MAIOR ECONOMIA DE COMBUSTÍVEL (Entenda) 2024, Novembro
Anonim
Velas eletrônicas múltiplas
Velas eletrônicas múltiplas

Velas eletrônicas foram postadas muitas vezes no Instructables, então por que esta?

Em casa eu tenho essas pequenas casas de Natal semitransparentes que têm um LED insight e uma pequena bateria. Algumas casas têm LEDs com efeito de vela e outras têm LEDs recém-acesos. As pequenas baterias se esgotam relativamente rápido e como eu queria ter um efeito de vela em todas as casas, decidi fazer um projeto PIC. Claro que você também pode transformá-lo em um projeto Arduino.

Então, o que torna esta vela eletrônica especial? PIC e Arduino têm hardware de modulação por largura de pulso (PWM) a bordo que pode ser usado para criar um efeito de vela usando um LED, mas no meu caso eu queria ter 5 velas eletrônicas independentes usando um controlador e que não está presente, pelo menos não que eu conheço. A solução que usei foi fazer esses cinco sinais PWM independentes totalmente em software.

Etapa 1: Modulação de largura de pulso no software

A modulação da largura de pulso foi descrita várias vezes, por ex. neste artigo do Arduino:

O PIC e o Arduino têm hardware PWM especial integrado que torna simples a geração desse sinal PWM. Se quisermos fazer um ou mais sinais PWM no software, precisamos de dois temporizadores:

  1. Um temporizador que é usado para gerar a frequência PWM
  2. Um temporizador que é usado para gerar o ciclo de trabalho PWM

Ambos os temporizadores geram e interrompem quando concluídos e, portanto, o tratamento do sinal PWM é feito totalmente controlado por interrupção. Para a frequência PWM, uso o temporizador 0 do PIC e o deixo transbordar. Com um relógio oscilador interno de 8 MHz e uma pré-escala de 64, a fórmula é: Fosc / 4/256/64 = 2.000.000 / 256/64 = 122 Hz ou 8,2 ms. A frequência deve ser alta o suficiente para que o olho humano não consiga detectá-la. Uma frequência de 122 Hz é suficiente para isso. A única coisa que esta rotina de interrupção do temporizador faz é copiar o ciclo de trabalho para um novo ciclo PWM e ligar todos os LEDs. Ele faz isso para todos os 5 LEDs de forma independente.

O valor do temporizador para lidar com o ciclo de trabalho PWM depende de como fazemos o efeito da vela. Na minha abordagem, eu simulo esse efeito aumentando o ciclo de trabalho com um valor de 3 para aumentar o brilho do LED e diminuindo com um valor de 25 para diminuir o brilho do LED. Desta forma, você obtém o efeito de uma vela. Como eu uso um valor mínimo de 3, o número de etapas para controlar o ciclo de trabalho completo com um byte é 255/3 = 85. Isso significa que o cronômetro de ciclo de trabalho PWM deve funcionar com uma frequência de 85 vezes a frequência do Temporizador de frequência PWM que é 85 * 122 = 10,370 Hz.

Para o ciclo de trabalho PWM, eu uso o temporizador 2 do PIC. Este é um cronômetro com recarga automática e usa a seguinte fórmula: Período = (Recarregar + 1) * 4 * Tosc * Valor predefinido do cronômetro2. Com uma recarga de 191 e uma pré-escala de 1, obtemos um período de (191 + 1) * 4 * 1 / 8.000.000 * 1 = 96 us ou 10.416 Hz. A rotina de interrupção do ciclo de trabalho PWM verifica se o ciclo de trabalho passou e desliga o LED para o qual o ciclo de trabalho foi concluído. Se o ciclo de serviço não for passado, ele diminui um contador de ciclo de serviço com 3 e termina a rotina. Ele faz isso para todos os LEDs de forma independente. No meu caso, essa rotina de interrupção leva cerca de 25 us e, como é chamada a cada 96 us, já 26% da CPU é usada para gerenciar o ciclo de trabalho PWM no software.

Etapa 2: o hardware e os componentes necessários

O Hardware e os Componentes Necessários
O Hardware e os Componentes Necessários

O diagrama esquemático mostra o resultado final. Embora eu controle apenas 5 LEDs independentemente, adicionei um 6º LED que funciona junto com um dos outros 5 LEDs. Como o PIC não pode acionar dois LEDs em um pino de porta, adicionei um transistor. A eletrônica é alimentada por um adaptador CC de 6 volts / 100 mA e usa um regulador de baixa queda de tensão para formar 5 volts estáveis.

Você precisa dos seguintes componentes para este projeto:

  • 1 microcontrolador PIC 12F615
  • 2 capacitores cerâmicos: 2 * 100nF
  • Resistores: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
  • 6 LEDs laranja ou amarelo, alto brilho
  • 1 transistor BC557 ou equivalente
  • 1 capacitor eletrolítico 100 uF / 16 V
  • 1 regulador de baixa queda de tensão LP2950Z

Você pode construir o circuito em uma placa de ensaio e não requer muito espaço, como pode ser visto na foto.

Etapa 3: o software restante e o resultado

A parte restante do software é o loop principal. O loop principal aumenta ou diminui o brilho dos LEDs ajustando o ciclo de trabalho aleatoriamente. Uma vez que apenas incrementamos com um valor de 3 e decrementamos com um valor de 25, temos que nos certificar de que os decrementos não aconteçam tão freqüentemente quanto os incrementos.

Como não usei nenhuma biblioteca, tive que fazer um gerador aleatório usando um registrador de deslocamento de feedback linear, consulte:

en.wikipedia.org/wiki/Linear-feedback_shif…

O efeito da vela é influenciado pela rapidez com que o ciclo de trabalho do PWM é alterado, de modo que o loop principal usa um atraso de cerca de 10 ms. Você pode ajustar esse tempo para alterar o efeito da vela de acordo com suas necessidades.

O vídeo em anexo mostra o resultado final onde usei uma tampa sobre o LED para melhorar o efeito.

Usei JAL como linguagem de programação para este projeto e anexei o arquivo fonte.

Divirta-se tornando-o instrutível e aguardando suas reações e resultados.

Recomendado: