Pull-ups externos con microcontroladores Atmel: ¿qué suposiciones se pueden hacer con seguridad acerca de la impedancia en el modo de triple estado?

3

Al usar un ATmega (la familia 48/88/168/328, si es relevante) con un suministro muy débil, las resistencias de pull-up internas han demostrado que consumen demasiada corriente.

El microcontrolador se acciona a velocidades de reloj muy bajas, con un suministro entre 2 y 3 V, con todo lo que no es esencial apagado, por lo que utiliza menos de 100 µA. Todo esto está bien, pero el dispositivo necesita unos pocos botones. Si simplemente conecto los botones al suelo y uso las resistencias integradas, un solo botón, cuando se presiona, puede atraer más corriente que el resto del microcontrolador. Esto conduciría al colapso de la fuente de alimentación. Por lo tanto, tengo la intención de establecer los pines en "tri-state" y utilizar un pull-up externo mucho más alto que el integrado de 20-50k.

Sin embargo, tengo problemas para especificar el valor del pull-up externo. Obviamente, me gustaría que fuera lo más grande posible, a la vez que puedo detectar de manera confiable un alto nivel lógico.

Mi problema es que no pude encontrar en la documentación cuán alto es realmente el Z alto. Al buscar en varios foros, la única indicación fue que se mide en megaohms. ¿Pero qué tan alto es realmente? ¿Y cuál es el valor más bajo que puede tomar? ¿Cómo puedo averiguarlo, además de intentar contactar directamente con el fabricante?

No confiaría en un método empírico, ya que los pull-ups internos se especifican en la hoja de datos como 20-50k, un rango muy generoso, así que supongo que la impedancia en tri-state también podría variar significativamente. / p>

Lo probé con 330k, y funcionó, con un consumo de corriente tolerable en el rango de 10µA. Un método sería aumentar la resistencia hasta que ya no funcione, y luego tomar un valor significativamente menor que ese. Sin embargo, como no sé cuánto puede variar la impedancia del pin en el modo de triple estado entre los dispositivos, dudo que este sea el mejor enfoque.

¿Alguien tiene más información o experiencia al respecto?

    
pregunta vsz

2 respuestas

7

Cuando se establece en tres, el pin se considera realmente como una entrada. Así que mire la hoja de datos para la "Corriente de fuga de entrada (I IH )" (que figura en la tabla 30-1, página 314). Es 1µA max . Ahora, observe el voltaje que necesita para identificar correctamente el nivel alto: "Entrada de alto voltaje (V IH )", que se muestra en la misma tabla. Es 0.6Vcc min = 2.7V (asumo un 4.5V Vcc).

Entonces tiene su valor máximo de recuperación: R = U / I = (Vcc-V IH ) / I IH = (4.5-2.7) / 1µ = 1.8 MΩ.

Otra solución para ayudar a reducir el consumo de energía en su situación: no active el pull-up todo el tiempo. Verifique el estado del botón cada 100 ms, por ejemplo, y simplemente active el pull-up durante unos pocos µS antes de verificar el estado del pin (debe activar el pull-up un poco antes de verificar, para superar la capacidad parásita de la pista). + pin). De esta forma, puede tener un consumo muy bajo sin necesidad de un pull-up externo. Esto te obliga a revisar regularmente, sin embargo. No puede simplemente hacer que la MCU esté en reposo y esperar una interrupción en el pin del botón. Nota: durante el tiempo que está no revisando (cuando el pull-up no está activado), debe establecer el pin como una salida y forzarlo a un nivel bajo (el mismo nivel que si se presionara el botón), de lo contrario, si mantiene el pin como entrada, su nivel puede no estar definido (nada lo impulsa y no hay pull-up / down). Esto tiene un efecto dramático en el consumo de energía si el voltaje se asienta entre niveles altos y bajos (incluso si las entradas son activadas por schmitt).

    
respondido por el dim
1

Tampoco olvide el EMI y el rechazo de interferencias, con impedancias tan altas involucradas, el hecho de que su dedo o un teléfono celular se acerquen a la detección puede provocar la detección.

Es posible que sea necesario incluir algún tipo de filtrado, una estrategia de hardware (capacitor en algún lugar) y software, posiblemente ya en rebote, podría ser la mejor estrategia.

    
respondido por el carloc

Lea otras preguntas en las etiquetas