Estoy planeando usar un expansor de puertos basado en i2c (anteriormente estaba usando GPIO de atmega328P) para entradas y salidas. En una búsqueda de digikey, encontré MCP23008, MCP23009 y MCP23017 como posibles reemplazos. De estos tres, solo MCP23017 es push-pull. Otros dos son de desagüe abierto. Entiendo que push pull puede generar y hundir activamente y el drenaje abierto no puede generar activamente. No estoy muy seguro de cómo afecta esto a mi caso de uso y, por lo tanto, necesito el asesoramiento de un experto.
Aquí está el caso de uso:
Se supone que SS1 y TRIAC1 van en GPIO del expansor de puertos. Se supone que SS1 se lee digitalmente y se supone que TRIAC1 se conduce ALTO o BAJO.
Como tal, ¿importa si uso drenaje abierto o tipo push-pull? En caso afirmativo, ¿cuál es la mejor opción? Además, quiero mantener el componente al mínimo. Por ejemplo, quiero conducir el controlador triac directamente por el expansor de puertos en lugar de usar otro transistor. Por lo tanto, tenga esto en cuenta también.
Nota: Ambos circuitos se replicarán de 4 a 10 veces en la PCB y, por lo tanto, se requerirá el expansor de puertos.
Push-pull o drenaje abierto es relevante solo para los puertos de salida. Entonces, para el pin SS1, no importa.
Sin embargo, para conducir el cable TRIAC1, dado el esquema que proporcionó, es obligatorio que use push-pull. Si usa drenaje abierto, TRIAC1 se conecta a tierra (con estado lógico 0) o se desconecta (con estado 1). En ambos casos, el LED optotriac no se encendía y el triac no se disparaba. Si usa push-pull, puede enviar corriente al led (con el estado 1), por lo que está bien.
Ahora, habría formas de hacerlo funcionar también con salidas de drenaje abierto, sin usar más componentes: si conectas el ánodo del led a +3.3V y el cátodo a la resistencia y luego a la salida TRIAC1 de la MCU, puede usar tanto push-pull como open-drain, como desee. En ambos casos, podrá encender la luz configurando la salida en el estado lógico 0 y apagarla configurándola en 1.
whiskyjack
oscuro
Marko Bursic