1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

controlo de Power LED

Discussão em 'Electrónica' iniciada por Sumerset, 12 de Fevereiro de 2008. (Respostas: 19; Visualizações: 4663)

  1. Sumerset

    Sumerset Power Member

    Viva alguém tem experiencia em circuitos de controlo para Powerleds através de PWM ou microcontrolador?
     
  2. Mortymore

    Mortymore Power Member

    A experiência basta tê-la com o funcionamento do PWM em si. Se depois é para controlar LED com mais ou menos power, um motor, ou outra coisa qualquer controlável por essa via, é uma questão de se fazer o ajuste na saída do circuito adequado á potência e ao dispositivo que se vai querer controlar.

    Gerar PWM com microcontrolador exige mais conhecimentos, pois vais ter que lidar também para além do hardware com a programação do dito. Mas há alternativas mais simples como por exemplo recorrer a um integrado temporizador como o 555.
    O que depois vais ter que ver é quais os consumos dos LEDs que queres controlar, pois powerleds há muitos e com consumos muito diversos. Depois tens que multiplicar o resultado pela quantidade de LEDs que queres controlar.
    Se queres fazer uns efeitos malucos com variações de luminusidade nos LEDs, então pensa logo em recorrer a um microcontrolador adequado. Dependendo do que queres fazer, podes ter que optar por um microcontrolador com mais ou menos portas, entre outras eventuais considerações.

    Abraço
     
  3. Sumerset

    Sumerset Power Member

    O objectivo é controlar a luminosidade dos LED através de um micro (atmega8 ou 8051).

    Circuitos até se arranja bastantes mas queria saber se alguém tinha 1 que já tivesse experimentado e que compravasse o funcionamento.

    A programação do micro não me assusta sei perfeitamente o que fazer com os temporizadores internos dele, o que procurava era mesmo o circuito de interface entre a fonte externa (algo de 12v continuo), os LED e o micro.
     
  4. Mortymore

    Mortymore Power Member

    O interface entre o microcontrolador e o LED, pode ser feito de uma forma tradicional recorrendo a um transístor, uma vez que a corrente de consumo do LED pode ser excessiva para ser suportada por um pino de saída de uma porta do microcontrolador.
    Um LED normal, poderia ser ligado directamente ao pino apenas com um resistência limitadora série.

    Fica aqui a ideia de como podes fazê-lo: http://www.electronics-lab.com/projects/games/005/index.html

    Não é necessário usar uma alimentação secundária de 12v, pois os 5 volts que já terás que usar para alimentar o microcontrolador, servem perfeitamente para excitar o LED, desde que a corrente que a alimentação de 5v for capaz de fornecer dê para alimentar tudo.

    Abraço
     
  5. Sumerset

    Sumerset Power Member

    No circuito que tu referes só é utilizado um transistor. Isto apenas dá controlo para ligar ou desligar. O objectivo era controlar a luminosidade dos leds.

    Eu encontrei este esquema aqui que nao parece mau mas nao tem valores para nada e além disso pensava ter que fazer o controlo de outra forma, com um circuito com triac e diac, por exemplo.
     
  6. Mortymore

    Mortymore Power Member

    Pensei que a questão do PWM para efectuar o controlo da luminusidade fosse ponto assente e entendido.
    Se manténs o pino do microcontrolador permanentemente a 1 ou 0, então claro que só fazes ON ou OFF. É melhor veres bem o que é a modulação por largura de pulso (PWM) e o que podes fazer com isso.

    Triacs para controlar um LED??? Essa agora passou-me ao lado. :wow:
    Nesse site, no esquema do "step 8", não usam o PWM directamente para controlo da tensão fornecida ao LED, mas usam-no para controlar uma fonte de corrente constante, daí que o circuito seja um pouco mais complexo. Em vez de se alterar a tensão aplicada ao LED, altera-se a corrente que circula através dele. É outra forma de fazer as coisas e até será melhor. É uma questão de equacionar se a complexidade e custo extra compensa a eventual diferênça no resultado obtido.

    Abraço

    Vê isto: http://www.youtube.com/watch?v=yFKitXM1cow
    Repara no sinal PWM que está no osciloscópio, e como isso faz variar a luminusidade do LED.
    Mais um: http://www.youtube.com/watch?v=kFj5ANamGfk
     
    Última edição: 13 de Fevereiro de 2008
  7. Sumerset

    Sumerset Power Member

    Sei perfeitamente o que é um PWM. A questão é que o sinal de controlo do PWM pode ser dado por um micro ou então fazes o PWM no micro directamente.

    O circuito com triac e diac é usado para fazer o controlo de luz com fontes de 230V alternado. Para o usar teria que adaptar o sinal aplicado a um transformador, etc...

    A questão de controlar a corrente é a que faz mais sentido em circuitos com bastantes leds identicos... que é o que procuro fazer mas a controlar a luminosidade de leds individualmente numa matriz de leds ou no geral...
     
  8. Mortymore

    Mortymore Power Member

    Na minha modesta opinião, vai aí uma grande confusão, ou eu não estou a perceber nada do que queres fazer.

    Se o microcontrolador não tiver como função gerar o, ou os sinais PWM, então para que é que o queres no circuito. Só para estipular que LED vai acender na matriz? E de onde viria o controlo PWM para a luminusidade? Porque é que não haveria logo o microcontrolador de fazer tudo isso?

    Triacs com diacs, podem servir para controlar lâmpadas (entre outras coisas) como bem dizes.
    Há muitos anos fiz a minha caixinha de psicadélicas e os meus reguladores de luz... tal como provavelmente muitos adolescentes que se iniciam na electrónica gostam de fazer.
    Mas para que raio queres tu a alimentação da rede com transformadores á mistura para controlar LEDs? Muito provavelmente vais com isso introduzir ruídos na componente digital e vai-te ser complicado suprimi-los. Ou estás a projectar um painel luminoso gigante ou estás a dar aí voltas que para mim não fazem sentido.

    De qualquer forma porque não compreendo o que efectivamente pretendes, vou abster-me de emitir mais opiniões, pois controlar LEDs com triacs é algo que nunca fiz, nunca vi fazer, nem me parace á priori fazer sentido, por isso não tenho nada mais a acrescentar por não me considerar capaz de te ajudar, se esse é o caminho que pretendes seguir.

    Boa sorte com o projecto.

    Abraço

    PS: Se fosse para complicar as coisas preferia após o PWM gerado pelo microcontrolador, colocar uma filtro RC associado a um ampop seguidor de tensão e fazer um conversor PWM-DC para então aplicar o resultado ao circuito de potência. Mas claro que isso é um preciosismo para controlar uns LEDs, porque para todos os efeitos o LED vai assumir o sinal PWM de frequência relativamente elevada, como um sinal DC equivalente, até pela inércia do próprio LED ou da nossa capacidade de visão, a variações extremente rápidas.
    Podes ver aqui um exemplo do resultado: http://www.youtube.com/watch?v=5lWds9VjJpI
     
    Última edição: 14 de Fevereiro de 2008
  9. Sumerset

    Sumerset Power Member

    o objectivo não é controlar todos os leds com um pwm generico mas sim ter pwm individuais para um painel luminoso que poderá ser enorme, o objectivo é tornar o circuito teoricamente infinito controlados por um micro a fazer interface com um pc que poderá ou não controlar o sistema também.

    O que dizes é fazer um pwm generico no micro. O que está completamente fora do pretendido.

    Ir buscar a energia à rede e fazer andares de alimentação e 1 de rectificação, é o caminho mais provavel para ir buscar a corrente que pretendo (total)
     
  10. Mortymore

    Mortymore Power Member

    Não, não foi isso que disse, embora me pareça que, agora que esclareces pretender uma matrix teoricamente infinita, seja na prática e na razão inversa da dimensão teórica do circuito, improvável que consigas gerar um sinal PWM por cada LED que integre a matriz.

    Em todo o caso parece ser necessário esclarecer que, em qualquer microcontrolador podem perfeitamente gerar-se vários sinais PWM por software dirigidos a distintos pinos das suas portas IO.
    Depois, há inclusivamente microcontroladores com geradores de PWM integrados para facilitar o serviço de programação dos mesmos. Deixo aqui o link para um exemplo de um 8051 com 6 geradores PWM integrados: http://www.winbond-usa.com/products/winbond_products/pdfs/8-bit/W79E201h.pdf (ver pag 55)

    Quanto ao que é pretendido, era conveniente que se queres ser ajudado, expusesses de forma clara o teu problema, porque a cada intervenção aparece um dado novo ou mudança de rumo, e assim não há quem consiga saber o que pretendes, quanto mais saber como ajudar.
     
  11. Sumerset

    Sumerset Power Member

    eu disse desde o inicio que o objectivo era controlar 1 led pois o que pretendo é efectivamente o controlo de 1 led individualmente. O meu problema é efectivamente o circuito de controlo (não se pretende on-off) de 1.

    Eu é que referi que o objectivo final é fazer pwm a um quadro matricial de leds que seria controlado por micro ou por um pc.
     
  12. |[-BooT-]|

    |[-BooT-]| Folding Member

    ainda não percebi muito bem o teu problema, mas do que percebi tu essencialmente queres controlar a luminusidade de um led com pwm... então como o Mortymore disse, usas o sinal pwm da saida do micro, metes um transistor e alimentas o led com o transistor... se queres controlar vários leds com luminusidades diferentes ao mesmo tempo, ou usas mais sinais pwm, ou fazes multiplexagem
     
  13. Jorge Candeias

    Jorge Candeias Power Member

    Multiplexagem faz perder brilho agravando à medida que se pendura mais carga no mesmo fio... Pode-se subir a tensão instantânea mas isso pode provocar diminuição do tempo de vida, no caso do LED.



    PWM com uC é muito simples:

    arranjas 2 timers (T0 e T1)

    Carregas T0 com um valor (que é aumentado se queres mais luminosidade ou o contrário...)
    Carregas T1 com outro valor, sempre fixo, > ou = a T0 (se for menor a duty será de 100%)

    Colocas os 2 timers a decrementar/clock

    Quando T0 != 0 tens uma saída a High
    Quando T0 = 0 metes a tal saída a Low

    Quando T1 = 0 geras uma interrupção voltas a carregar T1 com o mesmo valor inicial e carregas T0 com o valor inicial deste...

    Pronto tens PWM num pino à tua escolha desde 0 a 100%


    Para pores um led a aumentar/reduzir/aumentar... por aí fora arranjas uma tabela de valores a subir e depois a descer, percorres essa tabela indefinidamente e vais carregando T0 com os valores dela...


    ^^ Pseudo codigo em 3 minutos LOL :009:


    Cumprimentos
     
    Última edição: 17 de Fevereiro de 2008
  14. Mortymore

    Mortymore Power Member

    Código ASM feito para [email protected] (DS89C420) para [email protected]

    Extraí isto assim de repente de um programa mais vasto que fiz, pelo que espero ter feito correctamente a transposição e funcione bem tal como está exposto, mas basta 1 timer (usei o T0) para gerar um sinal PWM. O mesmo timer é carregado para o nível alto e recarregado para o nível baixo do PWM a gerar.
    O sinal PWM estará presente no pino P1.0.

    Código:
        org 00h
        ljmp init
        org 0Bh        ;rsi do timer0
        ljmp rsi0
        org 30h
    
    init: mov TMOD,#00000001b
        mov P1,#0FFh
        setb TR0
        mov IE,#10000010b
        ljmp $
    
    ;-------inicio da rsi timer0-------------------
    
    PWM: jb P1.0,low
    high: setb P1.0
        mov TH0,#0FDh    ;80% high
        mov TL0,#20h
        clr TF0
        reti
    low: clr P1.0
        mov TH0,#0FFh    ;20% low
        mov TL0,#48h
        clr TF0
        reti
    Mas se bem entendi a dificuldade não está em gerar o PWM, por isso receio que isto também não vá ser de grande préstimo. Foi só mais numa de dizer que um só timer é suficiente, mas posso fazer o teste para ver se isto está mesmo a funcionar, quando tiver oportunidade.

    Abraço
     
  15. Jorge Candeias

    Jorge Candeias Power Member

    O problema do assembly é que eu não percebo quase nada desse que aí puseste :confused:... só percebo assembly do ARM e do 68000, por isso não posso verificar esse código, enquanto que em pseudo-código todos percebem e facilmente é adptado ao CPU que se quiser...


    Agora num momento de aperfeiçoamento basta um timer como tinhas dito, pode-se colocá-lo a contar livremente e vai-se comparando com um valor arbitrário (variável): se for menor mete a saida a Lo, se for maior mete a saida a Hi... (mas a precisão não é muito boa e só piora com a complexidade, a não ser que se possa gerar uma interrupção automaticamente com um valor qualquer do timer -> depende do MCU)


    Exacto a dificulade parece que é mais no exterior... mas ligar um led au um MCU é do mais simples que há, muitas vezes ligo directamente ao porto através duma resistência e tá feito...



    Cumps
     
    Última edição: 17 de Fevereiro de 2008
  16. Mortymore

    Mortymore Power Member

    Bem... o código que coloquei aqui também é uma coisa simples pois gera apenas um PWM fixo com factor de trabalho de 80%.

    Não vou entrar em detalhes, mas apenas dizer que a interrupção do timer ocorrerá automaticamente pela forma foi programado o seu funcionamento.

    Se quizesse-mos um PWM variável continuamente sem intervenção externa, então recorrer-se-ia eventualmente a um 2º timer. Mas o carregamento do timer usado pode ser feito por outras vias, como por exemplo estar dependente de uma conversão AD proveniente de uma célula fotovoltaica, que faria variar a luminusidade no LED de acordo com a luminusidade detectada pela célula, e para tal creio que não será necessário usar mais do que 1 timer, que servirá apenas para o PWM.
    Até a frequência do PWM que uso no exemplo, não sei se funcionaria bem no caso pretenso, pois foi feito para controlo de velocidade de um motor.

    Mas para mim o problema não está no estágio de potência para ligar meia dúzia de powerleds (embora a minha bordagem fosse diferente da porposta) , ou em gerar os PWM para controlar cada um desses powerleds, que ainda assim não será uma tarefa fácil. O problema está em pretender-se uma matrix com um nº considerável de powerleds, cada um deles com luminusidade controlável de forma independente. Se fosse para controlar por exemplo uma matrix 8x8, e depois os LEDs das matrizes homólogas (tipo 10 matrizes 8x8) fossem controladas pelo mesmo PWM da matriz mãe, então ainda veria isso como praticável e expansível a matrizes clones, embora já não fosse fácil gerar 64 sinais PWM independentes. Mas criar uma matriz 8000x8 com controlo independente por LED, não será tarefa fácil, e não estou a ver como será conseguido e por isso em reconhecimento do limite das minhas capacidades, creio não poder ser de maior ajuda.

    A aplicação onde normalmente vemos estas matrizes de LEDs são os paineis de informação corrediços, mas nesse caso os LEDs limitam-se a acender ou apagar, e se o brilho dos mesmos é controlável, o ajuste é feito para todo o painel de uma só vez, não LED a LED.

    Abraço

    PS: Com um PWM e gerar varrimento pela matriz, com o PWM certo a aplicar num dado momento no LED, e com um dispositivo de memória que fixasse esse valor no LED o tempo suficiente até que novo PWM lhe fosse aplicado, evitando dessa forma 64 PWMs para 64 LEDs... será? Isso também poderia ser feito por blocos. Bem... mais um bocado o controi-se uma espécie de ecrã TFT com powerleds. LOL
     
    Última edição: 17 de Fevereiro de 2008
  17. AlmaMater

    AlmaMater Power Member

    é possivel fazer um programa em c/vb/etc pwm? por exemplo, para controlar a luminusidade de um led basta escrever um programa apropriado ou para fazer PWM é necessário algo mais?

    [isto através do PC e nao de PICs]
     
  18. |[-BooT-]|

    |[-BooT-]| Folding Member

    dá... é só fazeres um programa para alternar o estado de uma saida de x em x tempo... básicamente é isso o pwm

    por exemplo, um ciclo tipo isto:

    saida A ligado
    pausa X ms
    saida A desligado
    pausa X ms


    é um bocado à trolha mas funciona :P se o tempo for muito alto vais ver o led a piscar
     
  19. AlmaMater

    AlmaMater Power Member

    ora aí está a resposta que queria ouvir :) (ler )
     

Partilhar esta Página