Conectando un puerto paralelo a un Arduino

0

Este es mi primer proyecto en Arduino y, aunque recuerdo un poco de los aparatos electrónicos de la escuela, estoy luchando para que esto funcione. De hecho, acabo de sacar una tarjeta PCI de puerto paralelo.

Estoy buscando comunicarme a través de un puerto paralelo de una PC a un Arduino, por lo que al imprimir en LPT1 (como texto simple + ESC / P), esto se puede capturar en el Arduino. He leído en el puerto paralelo y los pinouts y creo que todo está conectado correctamente, pero no estoy seguro de qué resistencias usar. Algunas de mis referencias hasta ahora han sido:

enlace enlace enlace enlace

El ejemplo de ParallelProgrammer utiliza resistencias de 220 ohmios y 470 ohmios, pero sin explicar por qué y esto, creo que también está interactuando con el puerto serie Arduino, no con los pines digitales. Esto no se ve favorecido por el hecho de que parece haber una variación significativa en las especificaciones para las corrientes de origen y de destino de puerto paralelo (explicadas en el enlace retired.beyondlogic).

En primer lugar, estoy en lo cierto al pensar que estaré comprando información actualizada de todas las computadoras - > pines de arduino y corriente de hundimiento para todos los arduino - > pines de la computadora?

Si este es el caso, ¿es el uso de una resistencia de 470 ohmios en los pines de la fuente para limitar la corriente a 12mA a 5 V? ¿Por qué el uso de la resistencia de 220 ohmios? He visto otras especificaciones aquí ( enlace ) que también sugieren que la fuente 2.6 de puertos paralelos mA @ 2.4V pero puede hundir 24mA @ 4.2V.

Suponiendo que puedo llegar a la parte inferior de la corriente / voltaje de la fuente / sumidero, ¿necesito una resistencia para cada pin excepto tierra?

    
pregunta baseten

1 respuesta

3

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.

    
respondido por el gbulmer

Lea otras preguntas en las etiquetas