Tutorial Digital Read Serial - calculando o valor do resistor


9

O tutorial Arduino Digital Read Serial guia você através da fiação de um botão simples. Minhas perguntas estão centradas no resistor.

Por que o resistor é necessário?

Acho que entendo isso, mas me corrija se estiver errado. Para garantir que o pino de entrada leia um sinal baixo e não flutue, devemos conectar o pino ao terra quando o botão não for pressionado. Quando o botão for pressionado, teremos um sinal de 5V fluindo para o pino e para o terra. A lei de tensão de Kirchhoff afirma que a tensão total no circuito fechado deve ser igual a zero, então temos que lidar com esse 5V que está fluindo diretamente para o terra. É por isso que colocamos um resistor entre o botão e o terra.

Como foi escolhido o valor do resistor?

É sobre isso que não estou claro. A lei de Ohm afirma que ...

resistance = voltage / current

Esta é uma fonte de 5V e a especificação do Arduino Uno diz que o pino fornece 40 mA de corrente DC. Assim..

resistance = 5V / 0.04A = 125 Ohms

No tutorial Digital Read Serial , por que temos um resistor de 10K Ohms? Isso é um exagero, certo? O que leva a outra pergunta: você pode colocar muita resistência, se seu único objetivo é eliminar a tensão?

Agradecemos antecipadamente por qualquer feedback!

Respostas:


6

Você está muito perto. O resistor está lá para atuar como um resistor pull down; Se o pino de entrada estiver flutuando, é apenas uma antena que capta estática aleatória. A chave é que, quando o positivo é fornecido (pressionando o botão), a fonte positiva precisa "sobrecarregar" o resistor de tração para que o pino de entrada seja positivo.

Se não houvesse resistência, o pino de entrada estaria lendo no meio de um caminho direto que não favorece positivo ou negativo. Além do curto direto que estaria ocorrendo, qual estado o arduino leria, eu suspeito que seria aleatório ou alguma propriedade da fonte de alimentação; Provavelmente ainda leria terreno.

Com o resistor, o sinal é lido diretamente conectado ao positivo, antes da resistência da carga. Desta forma, não se esqueça de obter um sinal ALTO.

O tamanho exato do resistor é de pouca importância. Muito pequeno e você desperdiça corrente, mas muita resistência é efetivamente apenas desconectando o terra novamente. Há uma gama muito ampla de valores que funcionarão bem entre eles.

Gostaria de observar que, quando um pino do arduino é definido no modo de entrada, ele efetivamente não fornece corrente. Pode ser modelado em série com um resistor de 100 megaOhm. consulte http://arduino.cc/en/Tutorial/DigitalPins para obter detalhes.


2
O principal aqui é que, se você não usar um resistor, quando o interruptor estiver fechado, você terá um curto-circuito de +5 volts no terra. Um curto-circuito direto sobrecarregará a fonte de alimentação e disparará o circuito de proteção na fonte de alimentação, fazendo com que todo o Arduino seja desligado. Você deseja um resistor de impedância alta o suficiente para manter o fluxo de corrente baixo. Normalmente, uso um resistor de 100k, que é suficiente para puxar o sinal de entrada para 0 volts quando o interruptor está aberto, e apenas permite que 0,0005 pas fluam, uma quantidade trivial de corrente. Um resistor de 10k também funciona, mas isso permite que 10 vezes mais corrente flua.
Duncan C

2

Por que o resistor é necessário?

As entradas do Arduino têm resistência muito alta. A base de dados do Atmega328 diz 100 MOhm para a ADC. Tais valores altos são bons, mas também têm a desvantagem de lidar com efeitos parasitários (resistência, indutância, capacitância). Tais efeitos também podem ser usados ​​como sensores de capacitância .

Como foi escolhido o valor do resistor?

O resistor precisa ter um valor arbitrário, que é menor que a resistência de entrada. 10k e acima são bons para desativar o vazamento de entrada.

No entanto, você também pode deixar de fora o resistor ao usar os resitores de pull-up internos. Nesse caso, você lida com lógica negativa:

pinMode(3, INPUT);
digitalWrite(3, HIGH);

No pino 3, você medirá HIGHe o botão precisará estar conectado ao pino e ao terra. O resistor de pull-up I / 0 interno tem o valor de 50k.


1

Você já obteve algumas boas respostas sobre por que um resistor pull-down é necessário.

Para resumir, você precisa conectar a entrada ao terra para impedir que a entrada flutue semi-aleatoriamente entre alto e baixo. Você usa um resistor para que, ao fechar o comutador, não crie um curto-circuito entre a fonte de + 5V e o terra.

Outro ponto, no entanto. As entradas do Arduino incluem um resistor de pull-up interno opcional controlado por software . Se você configurar o pino como uma entrada e depois gravar um valor ALTO nessa porta, ele ativará o resistor de pull-up. Isso faz com que o pino seja lido como ALTO quando nada estiver conectado a ele.

Em seguida, você pode conectar seu switch ao terra, em vez de + 5V. Você precisará alterar sua lógica de código para tratar um valor ALTO como não pressionado e um valor BAIXO conforme pressionado. Isso permite que você simplifique um pouco sua fiação, já que você não precisa de um resistor externo.

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.