Para "reemplazar" una impresora en un puerto de impresora paralelo (PPP) con un Arduino, Arduino deberá "escuchar" algunas señales de PPP y controlar otras señales de PPP.
Cuando esté 'escuchando' la salida del puerto de la impresora, los pines Arduino serán ENTRADAS. Ellos no obtendrán o hundirán cualquier corriente. El puerto de la impresora suministrará todo actual a los pines de ENTRADA de Arduino.
Los pines Arduino en el modo ENTRADA digital consumen pequeñas cantidades de corriente (1 microamperios), por lo que la fuente de corriente y la capacidad de sumidero del puerto de la impresora serán completamente adecuadas.
Una cosa que sí importa es el voltaje de los pines del puerto de la impresora. Como es 'TTL', es 5V y, por lo tanto, debe ser seguro.
No puedo no encontrar ninguna especificación para la corriente que consumirán los pines de entrada de los puertos de la impresora. Los pines de salida PPP se especifican como que proporcionan al menos unos pocos miliamperios, por lo que parece razonable suponer que las entradas usan menos, es decir, menos que unos pocos miliamperios. De lo contrario, la especificación debería decir algo más específico sobre los pines de entrada porque es razonable esperar que un pin de salida que cumpla con la especificación pueda introducir un pin de entrada a menos que la especificación proporcione más información.
Los términos source y sink solo se aplican a los pines output (y esto es normal). Para fuente , corriente significa efectivamente impulsar una señal de salida HIGH (5V). Para hundir , la corriente significa efectivamente conducir una señal de salida baja (tierra). Es posible que un pin de salida necesite hacer ambas cosas, aunque no siempre es así.
Un pin de Arduino OUTPUT puede conducir al menos 12mA cuando está generando o hundiendo corriente. Tiene capacidad de manejo 'simétrica'; puede 'fuente' o 'hundir' la misma cantidad de corriente, ya sea que esté tirando de una señal alta (fuente) o baja (hundiéndose). Por lo tanto, los pines de SALIDA se pueden conectar a las señales de entrada PPP. (NB: algunos pines de salida de microcontroladores de otros fabricantes pueden hundir más de lo que pueden obtener).
El electrónica de un pin Arduino (Atmel AVR MCU) en pinMode OUTPUT es capaz de source y sink actual. El software solo necesita establecer el registro de salida del pin alto o bajo, y la electrónica del pin se encarga del resto "automáticamente". El software no se preocupa por cómo sucede esto porque la electrónica está diseñada para cuidar de eso en sí misma.
Sin embargo, siempre existe la posibilidad de que algo se corra o, más probablemente, un software que contenga un error. Un error software que podría dañar un pin Arduino sería establecer un modo pin en SALIDA en lugar de ENTRADA, mientras que el pin está conectado a una señal de salida PPP. El daño podría ocurrir bastante rápido. Es posible que la señal PPP sea alta mientras que el pin Arduino intenta bajar. Al menos uno de ellos puede sufrir daños permanentes.
A menudo protegemos un pin Arduino de esto usando una resistencia de unos pocos cientos de ohmios (por ejemplo, 250-500 ohmios). Probablemente es por eso que ves resistencias en las señales. Podría hacer algo similar para proteger el Arduino y el puerto de la impresora. Es no esencial , funcionará sin resistencias. Sin embargo, la protección adicional es más segura y podría permitirle pagar más confianza. (Los resistores también pueden reducir la cantidad de ruido eléctrico generado por señales muy rápidas, pero no creo que esto sea un problema aquí).
También puede tener sentido proteger los pines de salida de Arduino de un cortocircuito accidental, usando una resistencia en el borde inferior de seguridad. Por ejemplo, 220Ω permite que fluyan 22 mA, que ATmega debería suministrar cómodamente para un solo pin corto.
Resumen : la interfaz no necesita ninguna resistencia .
Sin embargo, es razonable incluir resistencias en las señales para proteger los pines de entrada y salida.
Proteger los pines de entrada del error del software de establecer accidentalmente pinMode en SALIDA es muy razonable, especialmente al escribir software. Protección similar para una SALIDA de Arduino también tiene sentido. Sin embargo, sin una especificación para la entrada de los puertos de la impresora, puede ser mejor usar un valor inferior para la protección (220 (es el mínimo que mantiene un error de un solo pin y otros pines activos, dentro de la especificación ATmega).
También considere medir la tensión aplicada al puerto de la impresora mediante un pin de salida Arduino con un osciloscopio si las cosas no funcionan o parecen inestables. No me gustaría esperar un problema en los pines de entrada de las impresoras, pero es bueno tener una mente abierta.
NB: la palabra 'software' se usa para referirse tanto a software como a firmware.
Nota al margen:
El Arduino Parallel Port Programmer está controlando el puerto SPI de Arduino, no su puerto serie. Esa es una de las formas en que se puede programar el ATmega.