Por que é necessário
Recentemente, escrevi um artigo sobre um computador de bicicleta bluetooth caseiro. Houve uma discussão animada. Uma das sugestões para modernização foi a ideia de adicionar uma indicação ou tela de LCD. Gostei da ideia. E eu decidi pensar em como dar vida a isso.
Como os computadores para bicicletas já haviam sido fabricados, o gabinete estava quase completamente ocupado, a opção com uma tela de LCD caiu. Precisávamos de um tamanho de 40x30mm, levando em consideração todos os cabos e fios e com uma espessura não superior a 2-3mm. Existem também poucas conclusões gratuitas. Vários indicadores LED (três dígitos, escala) não se encaixavam. Então, um pensamento muito bom veio à minha mente - criar um indicador caseiro dos LEDs SMD. Pegue um fino texto unilateral, coloque nele o número certo de LEDs, na ordem certa e você obterá um excelente indicador. Tendo imaginado que os fios deveriam ser conduzidos a todos os LEDs, decidi que um microcontrolador barato que controlaria todos os LEDs caberia na placa, e o MK principal do computador da bicicleta controlaria o indicador através de um fio.
O resultado é um indicador muito compacto (apenas 3 mm de espessura). Gestão em um fio, e mais 2 em alimentos. Se você possui dispositivos prontos ou planeja criar um dispositivo e precisa de um indicador, um indicador caseiro é a melhor opção. Vamos dar uma olhada em como funciona.
20 LEDs em 10 pinos - fácil!
MK eu escolhi o mais caro - SMT8S003, o mesmo que no computador da bicicleta. Ele tem apenas 20 pernas. Se você remover as pernas de poder e controle, restarão 14 pernas. A primeira tarefa que precisou ser resolvida foi controlar essas pernas com o maior número possível de LEDs.
Imediatamente me ocorreu que dois LEDs poderiam ser pendurados em uma perna, com um pino no GND e outro no VDD. Para cada LED, um resistor. De acordo com este esquema.

É fácil de gerenciar. Nós alimentamos o pino 0, um LED está aceso, o feed 1 - o segundo LED está aceso. Traduzimos para o terceiro estado (entrada), e não um queima. Acontece que em 14 conclusões você pode pendurar 28 LEDs. Muito mal
O filho desenhou o próprio indicador. Para um computador de bicicleta, o tipo de indicador mais útil, depois que os números são uma escala. O indicador consiste em 2 escalas de 8 LEDs e mais 4 LEDs de status diferentes. Total de 20 LEDs. Eu rapidamente desenhei o quadro, gravei, soldei e comecei a testar.
Ligo o MK, todas as conclusões estão no terceiro estado, nada deve queimar. E ... LEDs estão acesos. Claro, eles têm tensão suficiente de 5 volts para brilhar vagamente. Não vai dar certo, mudamos o esquema ...
Mais LEDs
Depois de um pouco de reflexão, outra ideia surgiu. Conecte os LEDs não à energia e ao terra, mas a mais duas conclusões do MK. Então você pode definitivamente desligar tudo. Tentamos, funciona muito bem. Devido à indicação dinâmica, tudo pisca lindamente. Você pode controlar cada LED.
Como resultado, o seguinte esquema resultou no futuro:

Distinguimos várias conclusões de controle e trabalhadores. Colocamos os resistores apenas no controle upr1 upr2. Assim, o circuito e o traço da placa são bastante simplificados. Até 96 LEDs podem ser colocados em 14 pinos. 6 gerentes e 8 trabalhadores, mais 2 LEDs em cada um. Mais do que suficiente, o braço de solda ficará cansado.
Como se viu, você pode fazer mais. Charlie Allen foi ainda mais longe, colocando vários LEDs entre os pinos de controle. Assim, até 16 * 15 LEDs podem ser colocados em 16 pinos. Mas, em seu circuito, muitos resistores são adicionados, e também é necessário que todos os LEDs sejam da mesma cor; em geral, existem pequenos problemas. Conclusão - 96 LEDs são mais que suficientes.
Controlamos cada LED individualmente
Para controlar cada LED, é utilizado o método de indicação dinâmica. Em um determinado momento, um LED pode acender por saída de controle. Em seguida, você precisa classificar todos os pares, esses são os estados de indicação e assim por diante em um círculo. Como a placa já foi fabricada, eu a refiz em um pino de controle e um resistor. Foram 20 LEDs em uma saída e 10 conclusões de trabalho. Total de 20 estados.

Para reduzir o consumo de energia, o MK opera com uma frequência de 2 MHz. Para classificar 20 estados com uma frequência de 50 Hz, pelo menos, você precisa de um timer com uma frequência de 1000 Hz. Além disso, eu também queria controlar o brilho. Mas, para reduzi-lo em um fator de 10, você precisa de uma frequência de timer de 10.000 Hz e 100 vezes a 100.000 Hz. Nesse caso, no manipulador de interrupções, você precisa classificar todas as opções e acender o LED desejado. Em geral, o MK não conseguiu lidar. Eu tive que mudar para a opção com modulação PWM.
Controlamos o brilho usando um temporizador PWM
O resultado é um programa simples. Usamos um timer - TIM2, com a possibilidade de geração de PWM. Definimos a frequência do timer para 1000 Hz, e o valor máximo do timer 125 é a largura do PWM, que determinará a gradação do brilho. Como resultado, você pode definir qualquer valor de brilho de 0 a 125. No momento da segunda interrupção do timer, em comparação com o preenchimento do PWM, desligue todos os LEDs.
O resultado é um ótimo indicador. Devido ao controle de brilho, o consumo na fase ativa é de 1 mA a 4 mA.
Nós conectamos um computador de bicicleta
O indicador em si está pronto; no caso do computador da bicicleta, fica assim:

Para controlar o indicador, escolhi o protocolo de 1 fio. Eu não vou descrevê-lo. Só posso dizer que tive que me atormentar para conseguir lidar com a interrupção e suportar os intervalos necessários, mas no final funcionou. O computador da bicicleta é como um mestre e o indicador é como um escravo. Para controle, 4 bytes devem ser transmitidos. O primeiro byte é o comando, brilho e um bit para entrar no modo de suspensão, os 3 bytes restantes são LEDs, um pouco por LED.
A primeira coisa que me veio à mente para exibir no indicador foi velocidade e pessoal. Os LEDs de serviço devem ser deixados para status do bluetooth, violação do controle de velocidade e cadência e outro controle de distância.
Após os testes experimentais, adicionei a capacidade de exibir a distância restante do conjunto ou as calorias restantes do conjunto. Descobriu-se muito conveniente. Você define um plano - para gastar 2000 Cal para uma caminhada, você vai ver imediatamente, ainda há meia esquerda. Conclusão - uma indicação é uma coisa útil.
Meu filho realmente gostou, ele teve a ideia de fazer um chaveiro - um indicador com bateria em epóxi. Eu fui pensar.
Que outros indicadores podem ser feitos
Relógio - LEDs em dois círculos - horas e minutos.
Pontos cardeais - para a bússola eletrônica.
Escala para codificador rotativo incremental.
Várias escalas em um indicador.
Coração para um cartão musical.
Matriz 8x8 para exibição de imagens.
Indicador fino de sete segmentos para um dígito de 11 LEDs.
Em geral, existem muitas idéias sobre como usar isso.
No github , como de costume, um quadro, programa, implementação do protocolo de 1 fio e indicação dinâmica. Quem precisar, você pode usá-lo em seus projetos.