LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: dropes em 08 de Janeiro de 2022, 20:57

Título: Fita de LEDs RGB
Enviado por: dropes em 08 de Janeiro de 2022, 20:57
Olá a todos

Adquiri faz tempo uma fita de LEDs no Lidl, foi uma daquelas promoções que colocam num cesto á parte, quando o artigo está incompleto ou sem procura.

Só á pouco tempo é que me deu para pegar nisto, porquê, porque pretendo fazer uma retro-iluminação no monitor do pc.
Já experimentei por algumas vezes iluminar a parede atrás do monitor, a vista não cansa tanto e fica mais confortável se passar mais tempo, apenas isso.

Sou contra os moddings nos PCs, acho completamente abixanado estar a colocar iluminação na torre, teclado, ou mesmo no rato; se não tem utilidade, não tem sentido.

(https://i.imgur.com/iA4CE7J.jpg)

Pretendo ligá-lo á placa FTDI, mas não está funcionando :P

obs: quando acabar, posto algumas fotos aqui
Título: Re: Fita de LEDs RGB
Enviado por: jm_araujo em 08 de Janeiro de 2022, 22:01
Isso parece uma ftdi USB-série.
A mim pelo que se vê da fita parece-me que tem o RGB cada um com o seu contacto + comum. Precisas de uma placa que tenha 3 canais de potência (PWM se quiseres mais de 8 cores), com n=número de leds x aprox 20mA por canal, e fonte dedicada (usb só aguenta 500mA). A da foto parece que tem 12 LED's, logo 240mA por canal, fonte de 750mA mínimo.
3 convem ver se os LEDs estão em cátodo comum ou ânodo comum, para fazer/comprar um driver apropriado.
Título: Re: Fita de LEDs RGB
Enviado por: dio123 em 08 de Janeiro de 2022, 22:07
Isso não é o mesmo funcionamento das fitas leds WS2812B.
Eu uso lib Adafruit NeoPixel para as luzes  da secretaria (No meu caso vai mudando de cor e movendo ao mesmo tempo para o lado direito)
Título: Re: Fita de LEDs RGB
Enviado por: jm_araujo em 08 de Janeiro de 2022, 23:13
Exacto, as fitas neopixel e similares costumam ser 3 ligações: positivo, negativo e dados, e são mais caras que as RGB discretas.
Além disso tem a vantagem de poder controlar a cor de cada led individualmente, nas discretas são sempre todos iguais.
Título: Re: Fita de LEDs RGB
Enviado por: dropes em 09 de Janeiro de 2022, 18:16
Esta fita não tem ICs dedicados para cada LED, estão de forma nativa incorporando uma resistência limitadora para cada cor (anodo comum), tem também uma protecção tipo silicone (deve ser para evitar choques ao tocar).

Estive á procura dos dados técnicos do LED, e o limite são mesmo os 20mA /cor.

Conforme está montado, obtenho g97 r72 b79 mA, dividindo pelos 12 LEDs, dá 8.0 6.0 e 6.6 mA.
Para atingir perto de 20mA, tenho de aumentar a tensão para 8.5V.

Bem longe do limite de corrente quando alimentado a 5V (descrito na fita), desconheço qual a sua utilidade e mesmo pesquisando na net, não encontrei nada parecido.
O USB vai suportar bem 250mA.

Sim, é um FTDI série, tem também um ponto de solda para 3.3V ou 5V.
Título: Re: Fita de LEDs RGB
Enviado por: jm_araujo em 09 de Janeiro de 2022, 21:06
Um ftdi sai sinal digital série ( os 3.3v ou 5v são os níveis  do sinal digitail).
A fita led discreta precisa de 3 sinais analógicos independentes, no teu caso se for de 5V com capacidade para 100mA em cada canal.
Precisas de algo no meio a fazer a ponte do domínio digital para o analógico.
Título: Re: Fita de LEDs RGB
Enviado por: dropes em 09 de Janeiro de 2022, 22:56
Um ftdi sai sinal digital série ( os 3.3v ou 5v são os níveis  do sinal digitail).
Certo.

Nesta board a selecção é feita por um pingo se solda, no terminal VCC tenho 5V, entretanto não experimentei mudar para 3,3 para ver se a saída também se alterava.

A corrente máxima dos 3,3V é de 50mA.

Estou a tratar da placa para comunicar com o pc e escolher a cor, mais programação...
A saída é via PWM 64kHz e 33kHz modo hardware
Embora o attiny só tenha 2 saídas pwm, é possível programar um contador para funcionar em modo pwm.
A comunicação série é feita no modo software... este micro não tem hardware para isso.
(https://i.imgur.com/28FcoAr.jpg)

O MMBT3904 tem de limite 200mA, como são usados em sinais lógicos PWM(saturação), não devem aquecer.
Título: Re: Fita de LEDs RGB
Enviado por: jm_araujo em 10 de Janeiro de 2022, 10:05
Bem me parecia que estavas a esconder qualquer coisa :D
Queres ajuda no troubleshooting, ou era só para partilhar?

No esquema, podes baixar essas resistencias de gate ("472"=4.7kOhm atualmente) para os mosfets comutarem mais rápido e diminuir a dissipação (e risco que queimarem). A função da resistência da Gate é proteger o pino de saida do micro, limitar a corrente ao carregar a gate que se comporta como um condensador. Na maior parte dos casos até se pode deixar de fora (ligar direto ao micro).


Título: Re: Fita de LEDs RGB
Enviado por: dropes em 10 de Janeiro de 2022, 12:26
Bem me parecia que estavas a esconder qualquer coisa :D
Queres ajuda no troubleshooting, ou era só para partilhar?
As duas coisas  :-[

Os transistors são NPN, similares ao famoso 2n3904 mas em capsulamento sot23.
Tinha em breadboard valores de 1k, entretanto bloqueavam a programação ISP e tive de aumentar o seu valor.
Se fossem mosfets ligaria sim directamente ao micro.

Ainda na dúvida, se coloco a placa perto dos leds ou da torre.
O cabo mede cerca de 1.5m, vão ter dados usb ou pwm.

(https://i.imgur.com/RKR41n0.jpg)
ps: Desculpa se estou a abusar, ultimamente tenho tido mais tempo livre e tento manter algum ânimo aqui ao fórum.
Quando terminar partilho o código.
Título: Re: Fita de LEDs RGB
Enviado por: jm_araujo em 11 de Janeiro de 2022, 10:34
Por mim não abusas nada, o que este fórum precisa é de mais movimento!

Não prestei muita atenção, julguei que estavas a usar mosfets, erro meu  :-[

Com transistores tens mesmo de usar resistência de base, mas 4.7k é marginal para saturar os mesmos para essa carga.
Ib=(5V-Vbe)/Rb = (5-0,7)/4.7k=0,9mA = aprox 1mA (para simplificar, e estou a dar uma borla de 0,1mA)

Pela datasheet do 3904 o beta min. a Ib=1mA (e Vce =1V)  é 70.  Ic max=beta*Ib= 70*1mA=70mA. Como as cores andam pelos 70 a 100mA, estás mesmo à margem. Normalmente o beta tem margem (é minimo, né?) mas é arriscar. Se o consumo for mais que o limite Ic calculado, o que acontece é que o Vce aumenta, e vais ter maior dissipação nos transistores, que vão aquecer e em certos casos podem até queimar (não no teu caso que o consumo não é assim tanto, e com carga resistiva quanto maior o Vce, menos tensão vêm os leds e menos corrente consomem).


Sem mais dados é dificil saber onde pode estar o problema, mas confirma que o contador que estás a usar para o PWM não é usado na comunicação série. Em arduino acontece muitas vezes, os contadores não estão todos livres.
O que podes fazer é partir o código: primeiro testa comunicação série sem código dos leds, segundo só código dos leds (metes uns  contadores num loop para os ver a mudar de cor), e se funcionarem os dois testes, tem de ser conflito entre as duas partes.


E já agora uma pergunta: porque desenvolves em attiny diretamente? Pessoalmente parece-me mais rápido testar em arduino e depois portar para attiny. Em attiny até tens os digispark que pemitem também ligar diretamente por usb, e reduzir o ciclo de código-programa-testa-corrige código-programa-testa-... .O IDE Aduino é meio manhoso, mas VBStudio + PlatformIO resolve esse problema.
Título: Re: Fita de LEDs RGB
Enviado por: dropes em 11 de Janeiro de 2022, 14:28
Por mim não abusas nada, o que este fórum precisa é de mais movimento!
:)

Citar
Com transistores tens mesmo de usar resistência de base, mas 4.7k é marginal para saturar os mesmos para essa carga.
Ib=(5V-Vbe)/Rb = (5-0,7)/4.7k=0,9mA = aprox 1mA (para simplificar, e estou a dar uma borla de 0,1mA)
Estás a dar-me uma grande ajuda, por norma coloco componentes tipico 1k, se funciona então parto para a próxima, não calculei nada e fui medindo para ver se era aceitável.

Tens toda a razão, 0.9mA na base:
(https://i.imgur.com/HeubHbl.png)
Só agora verifiquei a queda de quase 1V, vou ter mesmo de alterar isto.

Citar
Pela datasheet do 3904 o beta min. a Ib=1mA (e Vce =1V)  é 70.  Ic max=beta*Ib= 70*1mA=70mA. Como as cores andam pelos 70 a 100mA, estás mesmo à margem. Normalmente o beta tem margem (é minimo, né?) mas é arriscar. Se o consumo for mais que o limite Ic calculado, o que acontece é que o Vce aumenta, e vais ter maior dissipação nos transistores, que vão aquecer e em certos casos podem até queimar (não no teu caso que o consumo não é assim tanto, e com carga resistiva quanto maior o Vce, menos tensão vêm os leds e menos corrente consomem).
No meu caso 83.6mW de dissipação (max 250mW), são perdas a rectificar.
Alterado  :) 2.7k (ainda tentei 1.5k mas não gostou)

Citar
Sem mais dados é dificil saber onde pode estar o problema, mas confirma que o contador que estás a usar para o PWM não é usado na comunicação série. Em arduino acontece muitas vezes, os contadores não estão todos livres.
:o acertaste outra vez.
Sim, é o mesmo contador, na emulação série vai usar um dos contadores, ou melhor, o micro pode receber, mas se enviar algo, a configuração PWM é perdida.

Citar
O que podes fazer é partir o código: primeiro testa comunicação série sem código dos leds, segundo só código dos leds (metes uns  contadores num loop para os ver a mudar de cor), e se funcionarem os dois testes, tem de ser conflito entre as duas partes.
Sim, testei dessa forma e na recepção funciona perfeitamente, entretanto tive de calibrar o oscilador interno para ter um baud correto, neste caso 4800.

Citar
E já agora uma pergunta: porque desenvolves em attiny diretamente? Pessoalmente parece-me mais rápido testar em arduino e depois portar para attiny. Em attiny até tens os digispark que pemitem também ligar diretamente por usb, e reduzir o ciclo de código-programa-testa-corrige código-programa-testa-... .O IDE Aduino é meio manhoso, mas VBStudio + PlatformIO resolve esse problema.
Quando quero fazer um protótipo, realizo a montagem em breadboard (incluindo o micro); em muitos casos o micro é smd e não é possível gravá-lo na breadboard (só com um socket apropriado), daí deixar sempre alguns pontos de teste isp ou mesmo uma ficha para esse efeito.
Muitas das vezes a programação ISP fica inibida quando se usam essas linhas para outros efeitos, em micros com poucos IOs acontece frequentemente e tem de se andar a jogar com resistências.
Para a gravação flash, uso um adaptador que construí a alguns anos porta série mesmo com1, sem conflitos.
Já o arduino não me sinto confortável, bibliotecas evito mas C é que me atrapalha mesmo...

Obrigado  :)
Título: Re: Fita de LEDs RGB
Enviado por: jm_araujo em 11 de Janeiro de 2022, 17:59
Boa! Bom saber que já funciona (ou que pelo menos o problema está detectado).

C não é nenhum bicho de 7 cabeças, e se começares com uns projetos pequenos com arduino apanhas num instante. O K&R até é bem fininho em comparação com outras linguagens, e lê-se rápido.

( https://archive.org/download/The_C_Programming_Language/The_C_Programming_Language.pdf )
Título: Re: Fita de LEDs RGB
Enviado por: dropes em 11 de Janeiro de 2022, 20:09
(https://i.imgur.com/Mn5NpwG.png)

https://youtu.be/jiKAOe1hsHk

Fonte do projecto:
https://github.com/pdropes/Backlight-RGB


Acabei por trocar as 3 resistências por 2.2k (não tinha aqui disponíveis 2.7k 0805)
Coloquei também uma função para gravar em eeprom, assim cada vez que ligo vai buscar a cor armazenada previamente, sem ter de abrir o programa.

Tens razão, é uma falha minha não entender C... adoro programar, asm e tal. Vou dar uma vista de olhos, aprender não doi.
Aonde é que eu tenho o arduino mesmo...  :P
Título: Re: Fita de LEDs RGB
Enviado por: blabla em 18 de Janeiro de 2022, 13:47
Tal como disse o jm_araujo o K&R é um dos melhores livros de programação de todos os tempos. E existe uma passagem do livro que diz algo do gênero, o C é uma linguagem pequena e não seria bem servida com um livro grande. Por isso o K&R é um livro pequeno.

Dito isto, eu tenho umas notas feitas a partir da leitura de dois livros de C, um que já não está editado há muitos anos e um outro que é um livro excelente de C.

C Programming : A modern Approach, Second Ed. by K. N. King

O link para as notas é o seguinte:

Simple notes on the C Programming Language
https://github.com/joaocarvalhoopen/Simple_notes_on_the_C_Programming_Language (https://github.com/joaocarvalhoopen/Simple_notes_on_the_C_Programming_Language)

Cumprimentos,
João