Como posso usar uma entrada de 12 V em um pino digital do Arduino?


38

Estou criando um controlador para um sistema de 12 V usando um microcrontrolador Arduino Uno. Para as saídas, estou usando uma blindagem de relé para trocar os componentes de 12 V. Eu tenho um comutador de 12 V que ativa alguns componentes de 12 V no sistema e quero usar um sinal de disparo desse mesmo comutador para enviar para uma entrada digital do Arduino. Eu sei que o Arduino suporta apenas 5 V máx. Qual seria a melhor maneira de reduzir os 12 V que saem do comutador para os 5 V da entrada?

EDIT: O sistema é para uso em um carro. A amperagem da bateria do carro precisaria ser diminuída de alguma forma para não explodir os componentes?


3
a amperagem do carro é irrelevante - os componentes usam apenas a corrente necessária. A bateria do carro é capaz de fornecer centenas de Amperes, como o necessário para o motor de partida. Isso não significa que sempre existem centenas de amplificadores fluindo e podem danificar as coisas. :)
KyranF

Respostas:


44

Boas notícias! Isso vai ser barato! :-)

Um divisor de resistor simples reduzirá os 12 V aos 5 V que um Arduino pode digerir. A tensão de saída pode ser calculada como

VOvocêT=R2R1+R2VEuN

Valores de resistores na faixa de 10 kΩ são uma boa opção. Se o seu R2 é 10 kΩ, então R1 deve ser 14 kΩ. Agora 14 kΩ não é um valor padrão, mas 15 kΩ é. Sua tensão de entrada será de 4,8 V em vez de 5 V, mas o Arduino continuará vendo isso como um nível alto. Você também tem um pouco de espaço para o caso de os 12 V serem um pouco altos demais. Mesmo 18 kΩ ainda fornecerão 4,3 V suficientemente altos, mas você precisará começar a pensar nos 12 V um pouco mais baixos. A tensão ainda será vista como alta? Eu ficaria com os 15 kΩ.

editar
Você menciona um ambiente automotivo e precisa de alguma proteção extra. Os 12 V do carro nunca são exatamente 12 V, mas na maioria das vezes são mais altos, com picos de vários volts acima dos 12 V. nominais (na verdade, nominal é mais parecido com 12,9 V, a 2,15 V por célula.) Você pode colocar um zener de 5 V em diodo em paralelo com R2, e isso deve cortar qualquer voltagem superior ao 5 V. do zener. Mas a voltagem do zener varia com a corrente, e na corrente de entrada baixa que os resistores fornecem, ele cortará em voltagens mais baixas. Uma solução melhor seria ter um diodo Schottky entre a entrada do Arduino e a fonte de 5 V. Então, qualquer tensão de entrada superior a cerca de 5,2 V fará a conduta do diodo Schottky, e a tensão de entrada será limitada a 5,2 V. Você realmente precisa de um diodo Schottky para isso, um diodo PN comum tem 0.

O melhor
acoplador óptico de Michael é uma boa alternativa, embora um pouco mais cara. Você costuma usar um acoplador óptico para isolar a entrada da saída, mas também pode usá-lo para proteger uma entrada como você deseja aqui.

insira a descrição da imagem aqui

Como funciona: a corrente de entrada ilumina o LED infravermelho interno, que causa uma corrente de saída através do fototransistor. A relação entre a corrente de entrada e saída é chamada CTR , para a taxa de transferência atual. O CNY17 possui uma CTR mínima de 40%, o que significa que você precisa de uma entrada de 10 mA para uma saída de 4 mA. Vamos para a entrada de 10 mA. Então R1 deve ser (12 V - 1,5 V) / 10 mA = 1 kΩ. O resistor de saída terá que causar uma queda de 5 V a 4 mA, então deve ser 5 V / 4 mA = 1250 Ω. É melhor ter um valor um pouco maior, a tensão não cairá mais do que 5 V de qualquer maneira. Um 4,7 kΩ limitará a corrente a cerca de 1 mA.

Vcc é a fonte de 5 V do Arduino, Vout vai para a entrada do Arduino. Observe que a entrada será inversa: será baixa se os 12 V estiverem presentes, alta quando não estiver. Se você não quiser, pode trocar a posição da saída do acoplador óptico e do resistor de pull-up.

editar 2
Como a solução do acoplador óptico não resolve o problema de sobretensão? O divisor do resistor é ratiométrico: a tensão de saída é uma razão fixa da entrada. Se você calculou 5 V a 12 V in, então 24 V in dará 10 V out. Não está bom, daí o diodo de proteção.

No circuito do acoplador óptico, você pode ver que o lado direito, conectado ao pino de entrada do Arduino, não possui voltagem superior a 5 V. Se o acoplador óptico estiver ligado, o transistor consumirá corrente, usei 4 mA no exemplo acima. Um 1,2 kΩ causará uma queda de tensão de 4,8 V, devido à Lei de Ohm (corrente vezes resistência = tensão). Então a tensão de saída será de 5 V (Vcc) - 4,8 V no resistor = 0,2 V, que é um nível baixo. Se a corrente for menor, a queda de tensão também será menor e a tensão de saída aumentará. Uma corrente de 1 mA, por exemplo, causará uma queda de 1,2 V e a saída será de 5 V - 1,2 V = 3,8 V. A corrente mínima é zero. Então você não tem uma tensão através do resistor, e a saída será de 5 V. Esse é o máximo, existe '

E se a tensão de entrada se tornar muito alta? Você acidentalmente conecta uma bateria de 24 V em vez de 12 V. Em seguida, a corrente do LED dobrará, formando 10 mA a 20 mA. A CTR de 40% causará corrente de saída de 8 mA em vez dos 4 mA calculados. 8 mA através do resistor de 1,2 kΩ seria uma queda de 9,6 V. Mas de uma fonte de 5 V seria negativa, e isso é impossível; você não pode ir abaixo de 0 V aqui. Portanto, embora o optocoupler deseje 8 mA, o resistor limitará isso. A corrente máxima através dela é quando os 5 V completos estão do outro lado. A saída será realmente 0 V e a corrente 5 V / 1,2 kΩ = 4,2 mA. Portanto, seja qual for a fonte de alimentação conectada, a corrente de saída não será maior que isso e a tensão permanecerá entre 0 V e 5 V. Nenhuma proteção adicional é necessária.

Se você espera sobretensão, terá que verificar se o LED do acoplador óptico pode lidar com o aumento da corrente, mas os 20 mA não serão um problema para a maioria dos acopladores ópticos (geralmente são classificados com um máximo de 50 mA) e, além disso, é o dobro tensão de entrada, o que provavelmente não acontecerá IRL.


O sistema é para uso em um carro. A amperagem da bateria do carro precisaria ser diminuída de alguma forma para não explodir os componentes? Eu sou novo nisso. Obrigado
DW

@DW Uh-oh, carro! :-(. Vou atualizar minha resposta.
stevenvh 12/12/12

@ DW - Não, a capacidade da bateria do carro não importa. A corrente será determinada pela tensão (12 V) e pela resistência (25 kohm no total). Então, de acordo com a Lei de Ohm, a corrente será de 12 V / 25 kohm = 0,5 mA. Não importa se a bateria é do tipo 40 Ah ou 400 Ah; os resistores não permitem mais.
Stevenvh 12/12/12

Isso é ótimo. Obrigado pela ajuda. Apenas curioso, mas algo assim funcionaria? robotshop.com/ca/productinfo.aspx?pc=RB-Spa-750&lang=pt-BR
DW

2
@stevenvh Obrigado Steve. Estou ansioso para voltar a favorecer alguém que é novo em eletrônica, uma vez que estou confiante com isso. Obrigado
DW

15

Uma boa maneira de isolar o sinal do comutador de 12V seria transmiti-lo através de um acoplador óptico. O circuito seria configurado de forma semelhante à seguinte.

insira a descrição da imagem aqui

Vi no diagrama representa os 12V no seu circuito que é comutado pelo seu comutador (S1). Selecione R1 para limitar a corrente através da parte D1 do acoplador óptico a um nível dentro das classificações do componente selecionado.

Os acopladores ópticos não são os componentes mais rápidos do mundo, especialmente os mais baratos, mas, no caso de uma ação lenta como um interruptor controlado por humanos, a velocidade do acoplador é pouco preocupante.


15

Você também pode usar um diodo e um resistor, da seguinte maneira:

esquemático

simular este circuito - esquemático criado usando o CircuitLab

Eu tornaria o resistor algo bastante rígido, caso contrário você estará consumindo muita energia deste circuito. A beleza desse circuito (em comparação com o divisor de tensão) é que ele não se importa se sua tensão original é 12V, 14V ou 15V: será 5V (na verdade, 5,2-5,3V, dependendo do diodo), independentemente da tensão. a tensão de entrada.


isso é bastante inteligente, +1 para independência de tensão!
Florian Castellane

5
Cuidado com a classificação máxima absoluta de sobretensão no pino. Por exemplo, folha de dados do ATmega32u4: Tensão em qualquer pino em relação ao terra (8): -0,5V a VCC + 0,5V. Se estiver usando um diodo regular, a tensão será maior que VCC + 0,5V se estiver usando algo menos que um resistor de 170kOhm. Eu acho que os diodos Schottky são os mais seguros para isso.
cyberponk

13

Para independência de tensão, use um resistor para regular a corrente e um Zener para regular a tensão, assim:

esquemático

simular este circuito - esquemático criado usando o CircuitLab

Com um resistor de 30k, ele produzirá 4,99V e usará apenas cerca de 234uA a 12Vin.
Nesse caso:
R1 está consumindo 234uA x (12V - 4,99V) = 1,64mW
D1 está consumindo 234uA x 4,99V = 1,17mW

Consumo total de energia: 2,81mW (quando a entrada é alta)


Para qualquer coisa visível, eu usaria o divisor de resistor LED + em série para emitir um sinal de 5V a 12V e colocar o diodo zener em paralelo com a metade inferior do divisor e o LED para proteger contra sobretensão. Dessa forma, o LED acende quando você tem um sinal de entrada e fornece feedback visual.
Goswin von Brederlow

@GoswinvonBrederlow, você pode desenhar o circuito led / diodo / resistor do circuito?
chiar

No esquema esquemático acima, configure R1 para 770 Ohm e adicione um 330Ohm e um LED vermelho em paralelo ao diodo Zener. Então a entrada de 12V ~ 9mA fluirá através do LED e você obterá um sinal de saída de 5V. Se a tensão de entrada aumentar, o diodo zener limitará o sinal de saída para 5,1V e protegerá o arduino e o LED.
Goswin von Brederlow

-2

Um pouco tarde, mas no meu carro eu uso o LM7805. Funciona muito bem e é barato.


1
Não é tão barato quanto 2 resistores ou um resistor e um diodo.
Dave Tweed

7
@ TonNies Você entendeu a pergunta errado. OP não está em busca de uma tensão de alimentação para seu controlador. É mais sobre condicionamento de sinal.
Ariser

1
Não há nada de errado em usar o LM7805 para sinais de 12v com desvio de nível.
Chugadie

1
@chugadie: Mas uma abordagem de exagero muito incomum e relativamente "cara" se tudo o que você quer é reduzir 12V para um pino de IO.
Rev1.0
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.