10 votos

¿Cómo puedo leer un tristate de salida con un microcontrolador?

Me gustaría interfaz de la estadística de la línea de un MCP73831 de iones de litio cargo de administrador de IC para un microcontrolador para leer el actual estado de carga de la misma.

La hoja de datos se explica en la sección 5.2.1, que el STAT de la línea es tristate de salida y tienen el siguiente estado:

  • Alta
  • Baja
  • De Alta Impedancia

y se proporciona una tabla que explica cómo cada nivel representa cada uno de los estados de carga de la batería.

¿Cómo puedo conectar el pin a un microcontrolador de e/S y la lectura de estos tres estados distintos?

La lectura de la Alta y la Baja es bastante sencillo, pero la detección de una entrada de alta impedancia que no he hecho antes.

11voto

GetFree Puntos 495

Usted podría atar a tierra y Vcc con dos resistencias de 10k, y el uso de una entrada a/D para leer el nivel.

Si usted no tiene un A/D de repuesto para conectarlo a otro pin de la uC con un resistor de 10k. Si el pin es de alta o baja que va de curso de lectura como de alta resp. baja (suponiendo que esto puede conducir a un 10k de carga). Si es de alta impedancia se va a leer igual a lo que la salida en el otro pin.

8voto

markpasc Puntos 775

Muchos microcontroladores permiten seleccionar entre cualquiera de los débiles pullup y débil resistencia pull-down en un GPIO de entrada - en el orden de alrededor de 50k-100k Ohm. Si la entrada es alta-z, una lectura con débil desplegable habilitado leer bajo y una siguiente lectura con la debilidad de la subida va a ser un alto.

Recuerde que esperar unos µs entre la resistencia de alternancia y el GPIO de lectura para permitir que el voltaje en el pin para resolver.

Tenga en cuenta que los mayores AVR y el 8051 es posible que sólo tiene débil la subida, pero no débil desplegable resistencias.

4voto

user13107 Puntos 313

Si usted lee el documento de la sección 3.3 se ve que está destinado a ser utilizado con una resistencia de pull up.

De hecho, con cualquier drenaje abierto o tri-estado de la señal no está destinado a ser la lectura cuando se está en el área tri-estatal modo, está diseñado de esa manera para que la señal puede ser compartida a través de múltiples dispositivos. Donde se pone confuso es que si usted está leyendo la señal y es en tri-modo de estado (y no lo sabes) se pueden obtener falsos lecturas. la mejor manera es, a continuación, aplicar un débil tire hacia arriba de manera que si la señal se encuentra en un estado ambiguo, entonces el se lee la señal adecuadamente. Desde esta señal está destinada a ser la conducción de un LED para indicar el estado de carga (es decir, baja carga), a continuación, con un pull-up y se lee alta, significa que no está cargando.

enter image description here

0voto

Danny Staple Puntos 133

Si me puede agregar una advertencia a este post. El MCP73831 es un cargador de batería y el chip y por lo tanto su Vdd es superior al de su Vbat.

enter image description here

Suponiendo que el microcontrolador está conectado a Vbat y la Vdd es suministrado desde el USB, luego Vdd podría ser al menos de 1,5 V mayor que Vucontroller.

El problema es que, en el 73831 que ha tótem de las salidas, la estadística se refiere a Vdd. Así que no se conecte STAT directamente a una uC de entrada. Usar algo como un resistor de 10k en el medio. Para un PIC micro, la entrada del diodo abrazaderas se sujete a su Vcc (revise la hoja de datos para la corriente máxima antes de latchup)

Como un apéndice - el año pasado me encontré con un hack para leer hi/low/z entradas que era para un PIC, pero podrían (o no) el trabajo para usted. Algo como (pseudo código):

STAT ----[10k]------ PIC
PIN starts as input

set PIN low
set PIN to output
set PIN to input
set PIN high
value = read PIN  (assuming 1 for high, 0 for low)
value = value << 1
set PIN to output
set PIN to input
value |= read PIN

Luego de obtener 0 para baja, 1 de Hi-Z y 3 de alto. YMMV.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X