Entrada de 12V no pino do microcontrolador


8

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".


2
divisor resistivo + diodos zener / de aperto?
— Wesley Lee

2
Esta é realmente uma pergunta que não pode ser respondida por uma simples pesquisa no Google?
— Ale..chenski

16
Ele pode ser respondido, mas eu gostaria muito de uma resposta de qualidade antes de destruir meu equipamento por minha própria estupidez. Vamos resolver a "paz de espírito"?
— Christian

8
O @AliChen stackexchange pretende ser um repositório canônico de perguntas e respostas. Até perguntas simples podem ser boas se coletarem respostas úteis.
— Wayne Conrad

2
100Hz não é rápido.
— user253751

Respostas:


13

Use um circuito como este:

esquemático

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.

iec 61131-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.


Uau. Uma resposta muito completa ao que inicialmente parecia uma pergunta simples. Obrigado.
— Christian

Estou realmente curioso sobre R4 e R5 - quando eles farão alguma coisa útil? R2 + R3> R4 de qualquer maneira. É caso algum dos componentes "pesados" se quebre?
— pipe

O @pipe R3 e R4 pode ajudar a configurar o limite, fornecendo um caminho de alta impedância para a lógica. O R5 é supérfluo na maioria das vezes, mas no design usado, o pull-down do mcu não pôde ser usado. Se, por algum motivo, o buffer falhar, a entrada mcu não exibirá 50hz hum. (Nota: confiança foi solicitado)
— Jeroen3

17

Eu tentaria uma solução de divisor de resistor como mostrado abaixo.

insira a descrição da imagem aqui

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.


1
Por que escolher zener para ser 4v7? 5v2 (5v1?) Seria a melhor solução?
— R.Joshi 24/07

7
@ R.Joshi: Se o microcontrolador de 5V for alimentado por uma fonte tolerante de 10% (4,5-5,5V VDD), a aplicação de 5,2V no pino poderá ser mais do que o típico VDD + 0,3V máximo absoluto. A lógica alta é reconhecida em 2V para TTL e 2/3 * VDD para CMOS, portanto, não há problemas com um zener 4V7 lá.
— Hans

2
Eu realmente gostaria de poder marcar duas respostas como "escolhidas". Seu caminho é o caminho a percorrer todos os dias, mas a resposta de Jeroen é um pouco mais profunda. Obrigado, no entanto, por reservar um tempo para responder.
— Christian

8

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.


7

Se os níveis de sinal são GND e 12V (ou> 5V), a maneira mais simples e 100% segura é:

esquemático

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.


Na maioria dos µCs, pode-se até soltar o resistor e ativar a tração interna para esse pino.
— Janka

A solução de diodo proposta aqui nem sempre é a melhor ou a melhor solução. A tensão de entrada de baixo nível apresentada ao MCU estará acima de GND por uma queda de tensão direta de diodo mais a tensão de saída de nível sempre baixo que está criando o sinal de 0 a 12V. Isso pode ser particularmente um problema em que os sinais podem transmitir ruído e a entrada do MCU é especificada com níveis de tensão do tipo TTL para V <sub> IL </sub>. Frequentemente, essa especificação pode ser de apenas 0,8V. Portanto, se esta solução for usada, tenha cuidado e, pelo menos especificamente, um diodo de queda de tensão direta baixa como um BAT54.
— Michael Karas

@MichaelKaras Você está certo sobre a mudança do nível baixo pelo Vf do diodo; isso precisa ser levado em consideração. Para mim, para 5V µC, V [IL] de 0,8V parece excepcionalmente baixo. Eu pareço encontrar geralmente 0.3Vcc (~ 1.5V) spec'd.
— 21717 JimmyJ

Se o seu MCU tiver uma especificação do tipo CMOS para V <sub> IL </sub>, talvez funcione OK. Eu ainda gosto de projetar de maneiras que funcionassem mesmo que a especificação fosse muito menor do que aquela, apenas para obter a maior margem operacional possível. Mesmo a diferença de especificar um diodo de baixa queda é um bom passo nesse sentido, se você optar por usar esse tipo de circuito. Seu circuito não é particularmente bom para casos em que pode haver excursões negativas na entrada de 12V.
— Michael Karas

Concordo. Projetar margem é uma coisa boa. E tensões negativas no sinal de 12V podem realmente causar estragos no circuito.
— 21817 JimmyBoas

5

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.


O problema com o uso de um isolador óptico para resolver esse problema é que ele pressupõe que você possa extrair corrente do sinal de 12V. Você pode armazenar em buffer o sinal de 12V, mas isso exigiria um suprimento extra.
— Jason Morgan

Tenho certeza de que você pode obter um opto que seria efetivo quase na mesma corrente que uma entrada micro, a partir de 12v, não vai colocar muita carga para acender um pequeno LED.
— John U

1
Um vazamento de entrada digital é tipicamente entre 10nA e 1uA (depende da temperatura e do processo). Nunca me deparei com um acoplador óptico que funcione a 1uA. Um acoplador óptico típico, comercializado como baixo consumo de energia, por exemplo, Broadcom ACPL-x6xL precisa de 1,6mA. Isso é entre 1600 e 160000 vezes mais corrente. Mas então, como afirmo em minha resposta, depende dos requisitos que funcionarão, portanto não descartarei uma solução opto.
— Jason Morgan


2

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:

esquemático

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

  • Impedância de entrada muito alta
  • Entrada parcialmente isolada (pode suportar +/- 30V, dependendo da seleção FET)
  • Analógico possível
  • Efeito mínimo no sinal externo

1

esquemático

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.

  • Isolamento elétrico completo entre o circuito de 12 V e a lógica de 5 V.
  • Manipula sinal sujo de 12 V sem risco.
  • Simplicidade.

1

esquemático

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.


-2

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.


4
Um problema que encontrei com isso há muitos anos é que, embora possa não danificar nada, o Vcc internamente pode subir um pouco (até o diodo ser conduzido) e, dependendo do microcontrolador, pode jogar coisas como as leituras do ADC.
— precisa

@PeterJ Funciona bem se você pode garantir que pelo menos essa quantidade de corrente seja retirada do suprimento. Na pior das hipóteses, adicione um resistor simulado ...
— CL.

Embora "desagradável", eu já vi isso em muitos bens de consumo baratos. Consertei um despertador uma vez em que a rede elétrica era alimentada em uma entrada digital através de um resisor de 10M como referência de temporização. Não é de surpreender que o chip estivesse morto.
— Jason Morgan

-5

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.


1
É criativo. Mas você operará fora das especificações em alta velocidade. Se fosse tudo o que você tinha por aí, talvez.
— Jeroen3
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.