Estou tentando contar pulsos / s. em um pino de microcontrolador na faixa de ~ 5 a 100Hz. O µC pode operar na entrada de 5V, então tenho que baixar o nível de tensão com segurança.
Um resistor simples vem à mente, mas deixa qualquer oscilação aberta diretamente no µC pin- meh .
Encontrei esta resposta, mas a questão permanece: se esse circuito é capaz de alterações "rápidas" de 100Hz.
Existe uma maneira comprovada e confiável (por meio de um IC, talvez?) De entrar em contato com pinos de 5V ou 3,3V para entradas "sujas" de 12V? Eu tenho os 12V e 5V disponíveis para acionar qualquer IC "pronto".
microcontroller
voltage
input
pins
cristão
fonte
fonte
Respostas:
Use um circuito como este:
simular este circuito - esquemático criado usando o CircuitLab
R1 e R2 determinam a faixa de tensão e executam a divisão inicial. Esses resistores devem ser capazes de obter alguma energia. Típico é MELF 0,4W. Todos os outros podem ser resistores / capacitor de chip.
R3 evita que surtos causem danos ao gatilho schmitt. R4 e R5 são opcionais para evitar sinais flutuantes.
No entanto, a combinação R3 / R4 também pode ser usada para ajustar o limite, se necessário.
C1 e C2 determinam a velocidade máxima. A combinação R3 / C2 pode filtrar lentamente. C1 filtra transientes.
Um gatilho schmitt separado é usado, pois você pode obtê-los muito pequenos e baratos. E evita o roteamento de um sinal fraco em traços longos. Embora também seja uma parte sacrificial em grandes ondas.
Eu projetei este circuito com base no que vi dentro dos CLPs. O circuito acima é para 24V. Ajuste os resistores para combinar com 12V de acordo com IEC61131-2.
O conceito do padrão é garantir que a entrada tenha que afundar uma quantidade mínima de corrente antes de considerá-la um '1'. Os três tipos especificam quanto e são aplicados com base no ruído ambiental. Isso evita que as falhas toquem nele ou nos relés próximos. A desvantagem é que o R1 / 2 deve ser de potência decente e baixa resistência.
fonte
Eu tentaria uma solução de divisor de resistor como mostrado abaixo.
Selecione a taxa do resistor para que a tensão dividida esteja no nível apropriado para o MCU quando a entrada estiver na sua tensão nominal. A tensão do diodo zener é selecionada para prender a entrada do MCU quando a entrada estiver acima da entrada máxima. O zener também protegerá o MCU se a entrada for negativa.
Esta solução funcionará muito bem para a faixa de frequência relativamente baixa que você especificou.
fonte
Eu usaria um divisor de resistor e depois protegeria o uC com um Zener de 5.1v
Se você colocar o zener entre o pino e o terra em paralelo com, por exemplo, um resistor de 10k, em seguida, alimente seu sinal de tensão dividida ... zener é mais do que rápido o suficiente e barato / fácil.
Costumo fazer isso e divido o sinal antes que o zener morra com um pote.
Outra opção é a mesma: se você está realmente preocupado com o uso de um opto, se não for um problema de segurança, eu usaria o item acima ou teria o pino normalmente alto de 5V Vcc e o puxaria para baixo com um feto (em cima da minha cabeça) 2N7000 deve funcionar) - mas é menos simples que a opção zener.
fonte
Se os níveis de sinal são GND e 12V (ou> 5V), a maneira mais simples e 100% segura é:
simular este circuito - esquemático criado usando o CircuitLab
Se realmente serve ao seu objetivo, depende da impedância real do sinal de 12V (deve estar bem abaixo de R1) e o que você quer dizer com "sujo".
Além disso, como o @MichaelKaras aponta corretamente, o nível baixo na entrada do µC pode ser alterado para o nível baixo do sinal de 12V mais Vf do diodo (até cerca de 0,7V). Você deve verificar se isso é um problema no seu caso ou não. Se for, você ainda pode tentar usar um diodo Schottky com um Vf de cerca de 0,35V.
fonte
Eu usaria um opto-isolador, 100Hz é facilmente dentro do alcance de qualquer um decente. O 4n25 vem à mente como um número de peça comum e sei que é capaz de muito melhor que 100Hz.
fonte
O método selecionado depende parcialmente do que o sinal de entrada faz, como ele se comporta e como isso pode afetar o circuito de entrada e o código que o lê?
por exemplo, é sempre 12V? Tem picos ou ruído? Quanta corrente ele pode dirigir? A corrente pode ser direcionada para ela? Tomar corrente dele afetará qualquer outra coisa? É segurança crítica? ....
Por causa disso, nunca pode haver uma resposta universal para essa pergunta, pois a solução 'correta' depende do que o resto do sistema faz. A solução escolhida que atende aos requisitos terá custos e complexidade diferentes.
Dito isto, como ninguém mais o sugeriu, vou buscar uma entrada FET.
Um JFET ou MOSFET pode ser usado e pode ser fonte comum ou modos de drenagem comuns. Por exemplo, dreno comum:
simular este circuito - esquemático criado usando o CircuitLab
A vantagem do modo de dreno comum é que ele permite que a entrada seja conectada a um pino analógico (por exemplo, ADC) ou digital. Se o sinal for realmente digital, eu habilitaria o gatilho schmitt na entrada da CPU (se houver) ou adicionaria um buffer schmitt externo ao pino de entrada da CPU.
Vantagens
fonte
simular este circuito - esquemático criado usando o CircuitLab
Figura 1. Interface opto-isolada. Use pull-up interno no GPIO.
Um opto-isolador resolve vários problemas.
fonte
simular este circuito - esquemático criado usando o CircuitLab
R1, R2 e C1 formam um divisor de tensão com um filtro passa-baixa de 1kHz. Qualquer sinal indesejado de alta frequência que viaja nos 12V pode ser filtrado. O cálculo para a frequência do filtro é 1 / (2 pi R2 C1). Nota: A Base requer pelo menos 0,7 V para funcionar corretamente, tenha cuidado ao ajustar o resistor.
O BJT está sendo usado porque é muito comum comparar ao mosfet. Caso os 12V ainda estejam ativos, mas os 5V do seu uC estejam baixos, o BJT não passará corrente para o pino e causará danos.
Para a programação uC, use um gatilho alto para baixo para contar seu pulso. Como este circuito reverterá o pulso.
fonte
Geralmente, as entradas MCU já estão protegidas com diodos de braçadeira, desde que você tenha um resistor com um valor otimizado (alto o suficiente para os grampos e baixo o suficiente para a amostragem) e tenha uma boa capacidade de desvio entre VDD e VSS, você não tem se preocupar com isso. Então, apenas um resistor é bom o suficiente.
edit: Graças ao comentário de PeterJ, quero explicar um pouco mais. O mínimo de energia que o MCU consome (assumindo que não dorme), a capacidade de derivação, o valor do resistor; quando tudo isso está no ponto de comprometimento - que é facilmente o caso muito geral, com apenas a condição de usar um resistor de cerca de 10kOhm - o único resistor é bom para a aplicação simples do OP.
fonte
Você pode optar por um regulador de tensão LM7805 / LM7803 para 5V e 3,3V, respectivamente. Estou assumindo que o uC esteja isolado de uma carga exigente de corrente, se houver.
fonte