Simulación de entradas digitales y analógicas en un PLC

¿Cuál sería la forma más sencilla de conectar las entradas digitales y analógicas de un PLC a las salidas de un AVR ATmega328? Todo lo que necesito hacer es simular diferentes valores analógicos y estados digitales.

Respuestas (3)

En primer lugar, su ATMega328 no tiene un convertidor de digital a analógico, por lo que necesita un circuito adicional para generar señales analógicas. Hay un par de opciones.

Mi primera idea sería usar PWM y un filtro de paso bajo para generar voltajes analógicos. Con este método, utiliza el módulo PWM para producir una onda cuadrada con un ancho de pulso variable. Cuando esta señal se filtra con un filtro de paso bajo, se obtiene un voltaje analógico. La magnitud del voltaje es linealmente proporcional al ancho del pulso en su forma de onda. Para el ATMega328, un ancho de pulso del 100 % produce un voltaje analógico igual al Vcc suministrado al chip (generalmente 5 V o 3,3 V) y un ancho de pulso del 0 % produce 0 V. Puede agregar amplificadores a esta señal para ampliar el rango, pero, por supuesto, necesitará una fuente de alimentación para suministrar el voltaje más alto al amplificador.

El problema con este método es el filtro. A menos que se filtre por completo, la señal PWM provocará una ondulación en su voltaje analógico en la frecuencia PWM. Sin embargo, filtrar la señal reduce completamente el ancho de banda de las señales analógicas que puede generar. Es la principal compensación en el diseño de un D/A como este. Analicemos los filtros por un segundo.

Un filtro de paso bajo típico de un solo polo consta de una resistencia y un condensador. Los valores de estos dos componentes determinan el ancho de banda o frecuencia de corte del filtro. Un solo polo reduce la fuerza de todas las señales por encima de su frecuencia de corte a una tasa de -20dB/década. Una década es la diferencia entre potencias de diez en el dominio de la frecuencia: 1 Hz a 10 Hz es una década, 10 Hz a 100 Hz es una década, etc. -20 dB significa que la magnitud de una señal se reduce a 1/10 de lo que era anteriormente. Entonces, para poner todo esto junto en un ejemplo: si tiene una señal de 1 V, 10 KHz que pasa a través de un filtro unipolar con un ancho de banda de 1 KHz, la señal que sale será una señal de 0,1 V, 10 KHz. Si tiene otra señal de 1 V a 500 Hz, pasa sin reducción de fuerza: obtiene una señal de 1 V a 500 Hz.

El truco consiste en reducir la potencia de la señal PWM a un nivel mucho más bajo mientras se mantiene la frecuencia de corte lo más alta posible. Mantener la frecuencia de corte lo más alta posible aumenta la frecuencia de las señales que puede generar con su convertidor PWM D/A. Si su frecuencia de corte es de 1 KHz, entonces la onda sinusoidal máxima que puede generar es de 1 KHz y la onda cuadrada máxima que puede generar es de 100 Hz (por supuesto, si solo necesita generar ondas cuadradas, no necesita un convertidor D/A - solo el módulo PWM sin filtro). La señal PWM que sale del ATMega328 será una señal de 5 V (pico a pico) con una frecuencia igual a la frecuencia PWM que usted configura para que tenga. Por lo general, esto se elige para estar en la región de las decenas altas de KHz. 36 KHz es una frecuencia popular, así que me quedo con eso. Si la señal PWM está a una década de distancia de la frecuencia de corte, será una señal de 0,5 Vpp que parecerá una ondulación rápida en su voltaje analógico. Si esta es una ondulación aceptable en la señal, eso lo deja con un ancho de banda de 3,6 KHz. De lo contrario, es posible que deba retroceder otra década, lo que lo dejaría con un ancho de banda de 360 ​​Hz y una onda de .05Vpp. Puede ver que por una señal más limpia sacrifica el ancho de banda de las señales que puede generar.

Si eso no le atrae, siempre puede crear una escalera R2R . Básicamente, esto utiliza salidas digitales y divisores de voltaje de resistencia para generar voltajes analógicos. La ventaja de esto es un mayor ancho de banda: puede cambiar el voltaje analógico tan rápido como puede cambiar todas las salidas digitales. La principal desventaja de esto es el número limitado de voltajes de salida que puede crear. Necesita muchas resistencias y salidas digitales para generar una variedad de voltajes. Eche un vistazo al enlace, pero en resumidas cuentas, con una salida digital y dos resistencias, puede generar dos voltajes. Dos salidas digitales, cuatro resistencias, cuatro voltajes, etc.

Digital, al menos, es fácil: siempre que los voltajes sean correctos y se cumplan todas las especificaciones actuales, las entradas deberían funcionar. Si el PLC está leyendo ATMega328, debe asegurarse de que VOH para ATMega328 sea mayor que VIH para el PLC y que ATMega328 VOL sea menor que PLC VIL. Para la corriente, asegúrese de que la IOL de ATMega328 sea mayor que la IIL del PLC y que la IOH de ATMega328 sea mayor que la IIH del PLC. Para cualquier línea digital controlada por el PLC, cambie los nombres de ATmega328 y PLC anteriores.

Y luego, además de todo esto, necesita algún tipo de interfaz en el ATMega328 que le permita manipular todos los diversos voltajes analógicos y digitales. Recomendaría usar un UART para hablar con una PC a través de un chip adaptador FTDI serial<->USB. Aquí hay buenos cables para ese propósito (me gusta el TTL-232RG-VSW5V-WE). Por supuesto, si usa la placa Arduino, obtiene el serial <-> USB gratis, así que eso es bueno. Puede escribir algo como una GUI de Labview o Python para cambiar todos los diversos valores digitales y analógicos. Dicho esto, creo que he visto una compilación para Arduino que lo hace fácilmente controlable desde una interfaz de Python. ¿Alguien puede recordarme cómo se llama?

Los microcontroladores normalmente están diseñados para no más de 5 V, pero los PLC industriales tienen una variedad de rangos de voltaje, desde un mínimo de 12 VCC o 24 VCC hasta 220 VCA. Suponiendo que para un PLC de 12/24 VCC, primero necesita un convertidor de nivel de voltaje, la mejor opción es hacer su propio circuito optoaislado usando PC817 o 4N25 o lo que obtenga. Este opto es para salidas digitales de PLC a Micro.

Los voltajes analógicos también tienen un amplio rango, pero tienen un máximo de 10v, por lo que puede usar un circuito divisor de voltaje para este propósito usando resistencias del 1%.

Obtendrá algunas ideas si echa un vistazo a los esquemas de mikroElektronika AVR PLC y Arduino PLC .