Saudações ao leitor! Hoje vou contar uma história curiosa que me fez pensar nos problemas que surgem quando a escolha errada (não ótima) de componentes para a implementação de qualquer produto eletrônico. E também sobre aparente simplicidade usando o exemplo de um dispositivo "um dia".
Vamos concordar que a história é fictícia, quaisquer coincidências são aleatórias ... ou não aleatórias.
Uma vez Seryozha, o programador se virou para mim com um pedido para fazer um dispositivo em seu carro que simulasse a pressão seqüencial de 2 botões virtuais ao pressionar um carro físico no circuito de controle de cruzeiro (Ford Focus 2). O esquema da unidade de controle padrão é o seguinte:

No lado do controle, esta é uma entrada clássica de botão de pressão usando um ADC. e, portanto, a tarefa do dispositivo, quando você pressiona o botão de hardware, pressiona sequencialmente o botão ON e SET + por um tempo de ~ 0,2 s. Para facilitar a integração do dispositivo, foi decidido alimentá-lo a partir do resistor superior do divisor. A tensão nos terminais de conexão é de 4,6 V sem um circuito de botão conectado. Como o dispositivo estava planejado para ser feito à noite, fiz um diagrama sem cálculos preliminares do que estava na mesa de montagem. A solução "na testa":

Serezha escreveu o firmware, e o dispositivo funcionou perfeitamente para carros. No momento em que eles queriam colocar o quadro na carcaça do interruptor da coluna de direção, alguém da parte de trás do escritório gritou: “É tão complicado? Metade dos detalhes pode ser descartada e, de fato, o STM8 é o ideal para essa tarefa. ” E começou ... O autor da idéia se ofereceu para soldar o layout "de 3 partes" (aparentemente antecipando uma vitória fácil). Eu (guiado pelo meu próprio artigo sobre
ciúmes profissionais ) decidi não interferir na fuga do jovem especialista, mas apenas me conectei no estágio quando todos perceberam que um milagre não havia acontecido.
O esquema proposto pelo meu colega era realmente mais simples, mas funcionava apenas na mesa:

Os erros eram visíveis mesmo à primeira vista, no entanto, decidi fazer o circuito funcionar especificamente no STM8S001J3 MK.
Para entender como refazer o circuito, realizaremos várias medições. A resistência do resistor superior no divisor ADC é de ~ 130 Ohms e a tensão sem carga é de 4,6 V.
Em seguida, o diagrama do nó do botão tem o formato:

- quando os botões são liberados, a corrente no circuito é de 2 mA, a tensão na entrada ADC é de 4,33 V;
- quando o botão ON é pressionado, 3,7 mA, a tensão na entrada do ADC é de 4,11 V;
- com o botão SET pressionado + 18,4 mA, a tensão na entrada ADC é de 2,2 V.
Ao mesmo tempo, a faixa de tensão de operação do STM8S001J3 MK é de 2,95 a 5,5 V. Acontece que uma tentativa de pressionar o botão SET + leva a uma queda de tensão abaixo do mínimo e o MK é redefinido.
Neste ponto, proponho distrair e discutir qual é o MK ideal para esta tarefa e por que eles não a escolheram. Geralmente, para esses ofícios, use o que o desenvolvedor sabe como trabalhar e o que está disponível. Por exemplo, o microchip possui controladores PIC10F200 ou ATtiny10 no pacote SOT23-6 com uma faixa de tensão de 2 (1,8) a 5,5 V. Esses microcircuitos não precisam de um regulador de tensão (como STM32L031), mas não serão reiniciados quando o botão SET + for pressionado (como STM8S001J3). No chicote haverá apenas 2 resistores e um capacitor. Beleza, mas a linha de controladores STMicro com essa faixa de potência não é. Um leitor atento observará, com razão, que na estrutura de tal tarefa, quase qualquer controlador pode ser dominado, mas a ausência de um ambiente de programação familiar e de ferramentas de depuração determina a escolha.
De volta ao esquema. Para resolver o problema com a reinicialização do controlador, precisamos de energia para alimentar o controlador enquanto o botão SET + é pressionado. Para estimar a quantidade dessa energia, é necessário medir o consumo atual (ou consulte a documentação):

Quase 500 μA no seu melhor. Isso é muito, mas para deixar claro, darei um cálculo. Para armazenar energia, precisamos de um diodo (VD1) e um capacitor (C1):

A queda no VD1 é de 0,2 V, respectivamente, quando os botões C1 são liberados, ela é carregada em 4,33 - 0,2 = 4,13 V. Quando você pressiona o botão SET +, a tensão em Vin cai para 2,2 V, o VD1 fecha e o MK alimentado por descarga C1.

(Obrigado ao
VT100 e
DenisHW por corrigir o erro )
Nesta expressão, a energia armazenada no capacitor à esquerda (quando é descarregada de 4,13 a 3,1 V), a energia gasta à direita pelo controlador por um tempo t = 0,2 s. Então a capacitância do capacitor:

É possível tolerar 100 microfarads para esta tarefa, mas tente sacrificar o controlador enquanto o botão estiver pressionado.
Para fazer isso, o STM8 possui um modo de parada ativa:

Ao desativar o MVR e o Flash, foi possível obter uma corrente de consumo de ~ 40 μA (isso é significativamente maior que a corrente declarada, mas essa corrente é adequada para esta tarefa) e, graças ao AWU (unidade de ativação automática), você pode configurar facilmente a ativação após 256 ms após dormir. Nesse caso, para garantir a operação do controlador, é necessário um capacitor com capacidade de apenas 10 μF, mas como após o aperto das pernas, leva algum tempo antes que o MK adormeça, a capacidade necessária e suficiente era de 47 μF.
Parece que todos os problemas foram resolvidos, mas há mais um. A corrente quando o botão SET é pressionado + 18,4 mA é menor que a corrente limite para a saída, mas a tensão zero lógica estará na região de 0,7 V. Isso levará a uma queda na corrente através do resistor e exigirá o recálculo da resistência ou o uso de um transistor externo de acordo com o esquema. com dreno aberto. Eu escolhi a segunda opção como mais previsível no comportamento. O esquema final assumiu a forma:

Neste formulário, ele ganhou com êxito e está em operação até hoje.
Em vez de uma conclusãoNeste artigo, quero chamar a atenção para o problema de como um desenvolvedor é punido por uma abordagem excessivamente superficial ou frívola ao desenvolvimento de um dispositivo simples (à primeira vista). Por outro lado, queria mostrar como a escolha não ideal da base do elemento principal (neste caso, MK) complica o processo de desenvolvimento e o próprio produto em vista de duas razões principais:
- A necessidade de ajustar a escolha de soluções técnicas às habilidades do programador.
- Incapacidade de compreender toda a gama de componentes possíveis adequados para a tarefa, de selecionar "o máximo" deles. Esses fatores, na maioria das vezes, explicam o fato de que muitos dispositivos (domésticos, comerciais, especiais) funcionam bem, mas não são feitos da maneira que você faria.