Al fin luego de mucho batallar hemos dado con la respuesta de esta dificultad que algunos de nuestros lectores de este espacio tienen. Si tienes algo más que aportar no dejes de compartir tu conocimiento.
Solución:
Respuesta rápida: la experiencia y la experimentación es la forma de averiguar el valor correcto de pullup / pulldown.
Respuesta larga: la resistencia pullup / down es la R en un circuito de temporización RC. La velocidad a la que su señal hará la transición dependerá de R (su resistencia) y C (la capacitancia de esa señal). A menudo, C es difícil de saber exactamente porque depende de muchos factores, incluida la forma en que se enruta ese rastro en la PCB. Como no conoce C, no puede averiguar qué debería ser R. Ahí es donde entran la experiencia y la experimentación.
Aquí hay algunas reglas generales para adivinar un buen valor de resistencia de pullup / down:
- Para la mayoría de las cosas, 3.3k a 10k ohmios funcionan bien.
- Para circuitos sensibles a la energía, use un valor más alto. 50 k o incluso 100 k ohmios pueden funcionar para muchas aplicaciones (pero no todas).
- Para circuitos sensibles a la velocidad, use un valor menor. 1k ohmios es bastante común, mientras que valores tan bajos como 200 ohmios no son desconocidos.
- A veces, como con I2C, el “estándar” especifica un valor específico para usar. Otras veces, las notas de la aplicación de chips pueden recomendar un valor.
Use 10 kΩ, es un buen valor.
Para obtener más detalles, tenemos que ver qué hace un pullup. Digamos que tiene un botón que desea leer con un microcontrolador. El botón pulsador es un interruptor SPST (unipolar de un solo tiro) momentáneo. Tiene dos puntos de conexión que están conectados o no. Cuando se presiona el botón, los dos puntos están conectados (el interruptor está cerrado). Cuando se sueltan, no están conectados (el interruptor está abierto). Los microcontroladores no detectan inherentemente conexiones o desconexiones. Lo que sí sienten es un voltaje. Dado que este interruptor tiene solo dos estados, tiene sentido usar una entrada digital, que después de todo está diseñada para estar solo en uno de dos estados. El micro puede detectar en qué estado se encuentra una entrada digital directamente.
Un pullup ayuda a convertir la conexión abierta / cerrada del interruptor a un voltaje bajo o alto que el microcontrolador puede detectar. Un lado del interruptor está conectado a tierra y el otro a la entrada digital. Cuando se presiona el interruptor, la línea se fuerza baja porque el interruptor esencialmente la pone en cortocircuito a tierra. Sin embargo, cuando se suelta el interruptor, nada impulsa la línea a un voltaje en particular. Podría simplemente permanecer bajo, captar otras señales cercanas mediante acoplamiento capacitivo o eventualmente flotar a un voltaje específico debido a la pequeña cantidad de corriente de fuga a través de la entrada digital. El trabajo de la resistencia pullup es proporcionar un alto nivel positivo garantizado cuando el interruptor está abierto, pero aún así permitir que el interruptor corto de forma segura la línea a tierra cuando está cerrado.
Hay dos requisitos principales que compiten en el tamaño de la resistencia pullup. Tiene que ser lo suficientemente bajo para tirar sólidamente de la línea hacia arriba, pero lo suficientemente alto como para que no fluya demasiada corriente cuando el interruptor está cerrado. Ambos son obviamente subjetivos y su importancia relativa depende de la situación. En general, haces el pullup lo suficientemente bajo para asegurarte de que la línea sea alta cuando el interruptor está abierto, dadas todas las cosas que podrían hacer que la línea sea baja de otra manera.
Veamos qué se necesita para levantar la línea. Al observar solo el requisito de CC, se descubre la corriente de fuga de la línea de entrada digital. La entrada digital ideal tiene impedancia infinita. Los reales no lo hacen, por supuesto, y la medida en que no son ideales generalmente se expresa como una corriente de fuga máxima que puede salir o entrar en el pin. Digamos que su micro está especificado para una fuga máxima de 1 µA en sus pines de entrada digital. Dado que el pullup tiene que mantener la línea alta, el peor de los casos es asumir que el pin parece un sumidero de corriente de 1 µA a tierra. Si tuviera que usar un pullup de 1 MΩ, por ejemplo, entonces 1 µA causaría 1 Voltio a través de la resistencia de 1 MΩ. Digamos que este es un sistema de 5V, lo que significa que solo se garantiza que el pin sea de hasta 4V. Ahora debe mirar las especificaciones de entrada digital y ver cuál es el requisito de voltaje mínimo para un nivel lógico alto. Eso puede ser el 80% de Vdd para algunos micros, que serían 4V en este caso. Por lo tanto, un pullup de 1 MΩ está justo en el margen. Necesita al menos un poco menos que eso para garantizar un comportamiento correcto debido a consideraciones de DC.
Sin embargo, existen otras consideraciones y son más difíciles de cuantificar. Cada nodo tiene algún acoplamiento capacitivo con todos los demás nodos, aunque la magnitud del acoplamiento disminuye con la distancia, de modo que solo los nodos cercanos son relevantes. Si estos otros nodos tienen señales, estas señales podrían acoplarse a su entrada digital. Un pullup de valor más bajo hace que la línea tenga una impedancia más baja, lo que reduce la cantidad de señal perdida que captará. También le brinda un nivel de CC mínimo garantizado más alto contra la corriente de fuga, por lo que hay más espacio entre ese nivel de CC y donde la entrada digital podría interpretar el resultado como una lógica baja en lugar de la lógica alta deseada. Entonces, ¿cuánto es suficiente? Claramente, el pullup de 1 MΩ en este ejemplo no es suficiente (una resistencia demasiado alta). Es casi imposible adivinar el acoplamiento a señales cercanas, pero me gustaría al menos un margen de orden de magnitud sobre el caso de CC mínima. Eso significa que quiero un pullup de 100 kΩ o menos al menos, aunque si hay mucho ruido alrededor, me gustaría que fuera más bajo.
Hay otra consideración que hace que el pullup baje, y ese es el tiempo de subida. La línea tendrá alguna capacitancia parásita a tierra, por lo que decaerá exponencialmente hacia el valor de suministro en lugar de ir allí instantáneamente. Digamos que toda la capacitancia parásita suma 20 pF. Eso multiplicado por el pullup de 100 kΩ es de 2 µs. Se necesitan 3 constantes de tiempo para llegar al 95% del valor de establecimiento, o 6 µs en este caso. Eso no tiene importancia en el tiempo humano, por lo que no importa en este ejemplo, pero si se tratara de una línea de bus digital que quisiera ejecutar a una velocidad de datos de 200 kHz, no funcionaría.
Ahora veamos la otra consideración en competencia, que es la corriente desperdiciada cuando se presiona el interruptor. Si esta unidad se está quedando sin alimentación de línea o manejando una potencia considerable, unos pocos mA no importarán. A 5 V, se necesitan 5 kΩ para extraer 1 mA. En realidad, eso es “mucha” corriente en algunos casos, y mucho más de lo necesario debido a otras consideraciones. Si se trata de un dispositivo alimentado por batería y el interruptor podría estar encendido durante una fracción sustancial del tiempo, entonces cada µA puede ser importante y debe pensar en esto con mucho cuidado. En algunos casos, puede probar el interruptor periódicamente y solo activar el pullup durante un corto tiempo alrededor de la muestra para minimizar el consumo de corriente.
Aparte de consideraciones especiales como el funcionamiento de la batería, 100 kΩ es una impedancia lo suficientemente alta como para ponerme nervioso por captar ruido. 1 mA de corriente desperdiciada cuando el interruptor está encendido parece innecesariamente grande. Entonces 500 µA, lo que significa que la impedancia de 10 kΩ es la correcta.
Como dije, use 10 kΩ. Es un buen valor.
Primero, este tipo de tutoriales es inútil, no te enseñarán electrónica. Tienes que aprender a dibujar un esquemático, el cableado viene después.
Entonces, al carecer del esquema, tuve que derivarlo yo mismo del diagrama de cableado. De acuerdo, eso no fue tan difícil, pero cuando dibujas el esquema ves que falta algo: ¿a qué se conecta el interruptor táctil? Tienes que saber eso para responder a tu pregunta. Supongo que es una entrada digital del microcontrolador, pero no hay forma de saberlo.
Hay dos situaciones: interruptor táctil abierto y interruptor cerrado.
En el estado cerrado, la entrada del microcontrolador está conectada a tierra, por lo que verá un nivel bajo. También fluirá una corriente a través de la resistencia. Un buen esquema le habría dicho que un extremo de la resistencia está conectado a + 5V, el interruptor táctil conecta el otro extremo a tierra. Veamos si sirve una resistencia de 10k $ Omega $. Entonces la corriente a través del resistor es igual a $ dfrac 5V 10k Omega $ = 500 $ mu $ A. Eso parece razonable. Veamos si eso también está bien cuando el interruptor está abierto.
En el estado del interruptor abierto, podemos ignorarlo y pretender que solo hay la resistencia entre V + y la entrada del microcontrolador. Sabemos por experiencia, o mejor, porque lo buscamos en la hoja de datos que cuando aplica un voltaje a la entrada de un microcontrolador, solo fluirá muy poca corriente, a menudo menos de 1 $ mu $ A. Digamos que es 1 $ mu $ A. Entonces, la caída de voltaje en la resistencia será 1 $ mu $ A $ times $ 10k $ Omega $ = 10mV. El voltaje en la entrada será de 4,99 V. Probablemente esté bien, pero hagamos nuestro trabajo correctamente. Si tuvieras un esquema (Creo que ya lo tienes, ¿no?) Sabrías de qué tipo es el microcontrolador. Sé que Arduino es AVR, así que elegiré una hoja de datos AVR aleatoria. Las características eléctricas dicen que un nivel de entrada alto debe ser de al menos 0.6 $ times $ $ V_ DD $ (página 320). Eso es 3V, por lo que 4.99V es seguro.
¿Y si hubiéramos elegido un valor de resistencia diferente? Un valor más bajo significaría menos caída de voltaje y el voltaje de entrada sería incluso superior a 4,99 V. Pero luego habría más corriente a través de la resistencia cuando el interruptor está cerrado, y eso es algo que no desea.
Un valor de resistencia más alto estaría bien cuando el interruptor está cerrado, ya que habría menos corriente, pero el voltaje de entrada en el microcontrolador será inferior a 4,99 V. Tenemos algo de espacio para la cabeza aquí, por lo que un valor algo más alto podría estar bien.
conclusión
- El 10k $ Omega $ está bien para situaciones de interruptor abierto y cerrado.
- Aprenda a dibujar esquemas y a leer hojas de datos
Sección de Reseñas y Valoraciones
Si te sientes incitado, tienes la opción de dejar un artículo acerca de qué le añadirías a esta reseña.