Tutorial de lectura digital en serie: cálculo del valor de la resistencia


9

El tutorial Arduino Digital Read Serial lo guía a través del cableado de un botón simple. Mis preguntas se centran en la resistencia.

¿Por qué es necesaria la resistencia?

Creo que entiendo esto, pero corrígeme si me equivoco. Para garantizar que el pin de entrada lea una señal baja y no flote, debemos conectar el pin a tierra cuando no se presiona el botón. Cuando se presiona el botón, tendremos una señal de 5V que fluirá tanto al pin como a tierra. La ley de voltaje de Kirchhoff establece que el voltaje total en bucle cerrado debe ser igual a cero, por lo que tenemos que lidiar con este 5V que fluye directamente a tierra. Es por eso que colocamos una resistencia entre el botón y la tierra.

¿Cómo se eligió el valor de la resistencia?

Esto es lo que no tengo claro. La ley de Ohm establece que ...

resistance = voltage / current

Este es un suministro de 5V y la especificación Arduino Uno dice que el pin proporciona 40 mA de corriente continua. Entonces..

resistance = 5V / 0.04A = 125 Ohms

En el tutorial de lectura digital en serie , ¿por qué tenemos una resistencia de 10K ohmios? Eso es exagerado, ¿verdad? Lo que lleva a otra pregunta: ¿Alguna vez puede poner demasiada resistencia en su lugar, si su único objetivo es eliminar el voltaje?

Gracias de antemano por cualquier comentario!

Respuestas:


6

Estas muy cerca. La resistencia está ahí para actuar como una resistencia de extracción; Si el pin de entrada está flotando, es solo una antena que capta estática aleatoria. La clave es que cuando se suministra positivo (presionando el botón) la fuente positiva necesita "abrumar" la resistencia de extracción para que el pin de entrada lea positivo.

Si no hubiera resistencia, entonces el pin de entrada estaría leyendo en el medio de una ruta directa que no favorece positivo o negativo. Aparte del corto directo que ocurriría, sospecho que el estado que leería el arduino sería aleatorio o alguna propiedad de la fuente de alimentación; Probablemente todavía leería terreno.

Con la resistencia, la señal se lee directamente conectada a positivo, antes de la resistencia de carga. De esta manera, se asegurará de obtener una señal ALTA.

El tamaño exacto de la resistencia tiene poca consecuencia. Demasiado pequeño y desperdicia corriente, pero demasiada resistencia es simplemente desconectar la tierra nuevamente. Existe una amplia gama de valores que funcionarán bien entre ellos.

Me gustaría señalar que cuando un pin arduino se configura en modo de entrada, efectivamente no suministrará corriente. Se puede modelar en serie con una resistencia de 100 megaohmios. ver http://arduino.cc/en/Tutorial/DigitalPins para más detalles.


2
La clave aquí es que si no usa una resistencia, cuando el interruptor está cerrado, ha cortocircuitado los +5 voltios a tierra. Un cortocircuito directo sobrecargará la fuente de alimentación y disparará el circuito de protección en la fuente de alimentación, haciendo que todo el Arduino se apague. Desea una resistencia de impedancia lo suficientemente alta como para mantener el flujo de corriente bajo. Usualmente uso una resistencia de 100k, que es suficiente para tirar de la señal de entrada a 0 voltios cuando el interruptor está abierto, y solo permite que fluya .00005 pas, una cantidad trivial de corriente. Una resistencia de 10k también funciona, pero eso permite que fluya 10 veces más corriente.
Duncan C

2

¿Por qué es necesaria la resistencia?

Las entradas Arduino tienen una resistencia muy alta. El datasheat del Atmega328 dice 100 MOhm para ADC, tales valores altos son buenos, pero también tienen el inconveniente de lidiar con los efectos parásitos (resistencia, inductancia, capacitancia). Dichos efectos también se pueden usar como sensores de capacitancia .

¿Cómo se eligió el valor de la resistencia?

La resistencia debe tener un valor arbitrario, que sea menor que la resistencia de entrada. 10k y superiores son buenos para deshabilitar la fuga de entrada.

Sin embargo, también puede omitir la resistencia cuando utiliza los resistores internos. En este caso se trata de lógica negativa:

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

En el pin 3 medirás HIGHy el botón debe estar conectado al pin y a la tierra. La resistencia pull-up interna I / 0 tiene el valor de 50k.


1

Ya ha recibido un par de buenas respuestas sobre por qué se necesita una resistencia desplegable.

Para resumir, debe conectar la entrada a tierra para evitar que la entrada flote de forma semialeatoria entre alta y baja. Utiliza una resistencia para que cuando cierre el interruptor, no cree un cortocircuito entre el suministro de + 5V y tierra.

Sin embargo, otro punto. Las entradas del Arduino incluyen una resistencia pull-up interna opcional controlada por software . Si primero configura el pin como entrada, luego escribe un valor ALTO en ese puerto, activa la resistencia pull-up. Eso hace que el pin se lea como ALTO cuando no hay nada conectado a él.

Luego puede conectar su interruptor a tierra en lugar de + 5V. Luego debe cambiar la lógica de su código para tratar un valor ALTO como no presionado, y un valor BAJO como presionado. Esto le permite simplificar un poco su cableado, ya que no necesita una resistencia externa.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.