Usando o switch SPST como entrada digital?

10

Eu sou novo em "engenharia elétrica" ​​e estou trabalhando em um pequeno projeto de arduino. Quero que um switch SPST seja usado como entrada digital na placa.

Eu tenho um dos fios do comutador conectado ao positivo e o outro conectado à entrada digital. O problema é que, quando desligado, não tenho certeza de que a entrada será aterrada. Como garantir que a entrada esteja aterrada quando o interruptor estiver desligado?

Funcionaria se eu conectasse a entrada digital a um resistor conectado ao terra, para que, quando o interruptor estiver desligado, ele seja aterrado, mas quando o interruptor estiver ligado, não haverá um curto-circuito - isso funcionaria?

Bob Esponja
fonte

Respostas:

9

A solução mais convencional seria conectar um lado do switch ao terra. Conecte o outro à entrada digital e também a um resistor entre 1 e 10 K ohms, indo para a fonte positiva.

Indo para o outro lado, com um resistor pull down, como Bruno descreve, é possível, mas menos preferido. Muitas entradas já possuem um grau de pull-up implícito e lerão '1' se não estiverem conectadas, embora não de maneira bastante confiável. Mas se o seu switch já estiver conectado ao trilho positivo, um pull down é uma solução adequada, embora muitos prefiram usar um pequeno resistor ao conectar entradas lógicas ao trilho positivo.

Muitos microcontroladores também têm resistores de pull-up e / ou pull-down internos nos pinos GPIO, que podem ser ativados gravando em um registro de configuração. Se você estiver dirigindo uma entrada de tal microcontrolador, talvez não seja necessário um resistor externo de pull-up / down, embora nem todos os microcontroladores os possuam.

Chris Stratton
fonte
4
Além disso, se você estiver usando um uC com pull ups ou pull down integrados, é uma boa prática habilitá-los em pinos que não estão sendo usados ​​para mantê-los em um estado conhecido.
Matt Young
Na verdade, é mais fácil para o meu projeto conectar o switch ao terra. Então, vou tentar usar um resistor pull up. Obrigado!
Bob Esponja
2
Ótimo! Volte quando você quiser perguntar-nos sobre "switch rejeição" :)
gbarry
Acontece que o Arduino fará pullup automaticamente. Não sei como, mas no código existe um "INPUT_PULLUP" digital e nem preciso de um resistor. Essa foi fácil. Além disso, sobre o retorno do switch, notei isso quando estava monitorando a saída serial. Acabei de adicionar um atraso de 3ms no código. Isso me salvou outra viagem à loja. :)
Bob Esponja
Se você percorrer a folha de dados do ATMEGA, verá que há um pouco que pode ser gravado em um registro de configuração para ativar a solicitação. As bibliotecas do Arduino estão apenas tornando-as mais convenientes. Para a rejeição, ignorar (isso) a entrada por um tempo é um curso usual, embora 3ms possa ser um pouco curto. Se o atraso bloquear todo o sistema, você pode precisar mantê-lo curto, se ele apenas ignorar essa entrada do que você pode torná-la um pouco mais longa, pois as reativações intencionais ainda seriam mais lentas.
21912 Chris Stratton
9

Sim, funcionaria como você descreveu. Isso é chamado de resistor pull-down porque garante que quando o contato estiver aberto a entrada digital esteja no estado lógico 0 (baixo). Normalmente, você pode usar um resistor de 10 KΩ para esse fim.

Bruno Ferreira
fonte
2

Isso funcionará e fornecerá uma lógica positiva: um nível alto (lógica "1") quando o interruptor estiver fechado.

Mas, como Chris diz, a coisa invertida é mais comum: interruptor conectado ao terra e um resistor de pull-up (em vez de pull-down) à fonte de alimentação. Sua lógica será invertida: uma lógica "1" corresponderá a um interruptor aberto.

Um bom motivo para a versão pull-up é que a maioria dos microcontroladores os possui integrados e você pode habilitá-los / desabilitá-los, dependendo de suas necessidades. Alguns microcontroladores também possuem pull-downs configuráveis, mas são menos comuns.

Se você deseja uma extração externa de 10 kΩ, pode ser um bom valor. A entrada de um microcontrolador pode ter uma corrente de fuga de até 1 µA e, em seguida, 10 kΩ caem 10 mV desprezíveis. Valores mais baixos são certamente possíveis, mas lembre-se de que eles terão uma corrente maior para aterrar quando o interruptor for fechado. Um resistor de 1 kΩ consumirá 5 mA a 5 V de alimentação, o que é realmente um desperdício de energia. Para os 10 kΩ, são apenas 500 µA. Para aplicações de baixa potência, você pode aumentar o valor para 100 kΩ, mas lembre-se da corrente de fuga; 1 µA dará uma queda de 100 mV!

stevenvh
fonte