ATtiny13 vs PLC, o cómo obtener 14 E / S de un controlador de 8 pies

imagen

Antes de continuar, me gustaría advertir a un lector entusiasta.

  1. Lo que describo no se puede hacer por muchas razones, estas razones se te indicarán con alegría en los comentarios, y de ninguna manera te insto a que lo hagas. Y en ningún caso afirmo que el dispositivo descrito a continuación puede reemplazar un PLC real. Todo lo descrito se hizo solo para demostrarme a mí mismo que esto es técnicamente posible y no se aplica a equipos reales.
  2. Si te sientes mal solo por mencionar la palabra "Arduino", es mejor que no leas. Realicé todas las acciones con el controlador en Arduino IDE, es más fácil para mí. Pero nada impide hacer lo mismo sin usarlo.

Durante mucho tiempo quise escribir un artículo sobre mis experimentos con ATtiny13, pero me asustó principalmente la actitud hacia los arduinoistas en el sitio. Además, he estado trabajando con controladores por solo unos años (gracias de nuevo a Arduino, ¡oh, dónde has estado antes!). Comentarios sobre el artículo Tres ojos cuelgan de la publicación ... mostraron que el tema sigue siendo interesante para un número suficiente de usuarios. Por cierto, se suponía que el título del artículo era "PLC en ATtiny13", pero en los mismos comentarios, cortésmente me explicaron en la mesa que el dispositivo descrito no podía llamarse "PLC". Pues no, no.

¿Qué necesitamos del PLC?


Comenzó con el hecho de que quería hacer un análogo funcional de los PLC que se usan en mi empresa, teniendo en cuenta cómo se usan. La mayoría de los circuitos de control tenemos relé con todas las deficiencias subsiguientes. Los PLC de varios tipos también se usan en lugares, a partir de los años 90. Básicamente, realizan la tarea lógica del circuito de control, comenzando desde el estado de los interruptores de límite y sensores de proximidad.

Sin interfaces complejas, sin señales analógicas. Encendido / Apagado Eso es todo. En su mayor parte, incluso la carga para las salidas del PLC es proporcionada por los mismos relés de los que estaban tan ansiosos por deshacerse. (Lo curioso es que en casi todas partes se utilizan salidas de relé PLC, que conmutan relés externos, que conmutan electroimanes de distribuidores hidráulicos ... A veces se agrega un enlace más desde el arrancador). Entonces, ¿qué necesito del PLC:

  1. Entradas discretas para un nivel de señal de 24 voltios.
  2. Salidas discretas con un voltaje de 24 voltios.
  3. Probar el algoritmo interno de acuerdo con un esquema dado, que se puede cambiar si es necesario (principalmente durante la depuración).
  4. Velocidad de aproximadamente 50 ms, ya no es necesaria para reemplazar los circuitos de relé.

Y eso es todo. Sin interfaces Sin interrupciones No hay pantallas Ah, sí, las pantallas ... No hará daño mostrar el estado de las entradas y salidas; aquí, los LED aún no tienen LED más confiables. Bueno, no olvides que todo se hace por interés deportivo, respectivamente, el presupuesto recae sobre los hombros del desarrollador. Por cierto, un muy buen incentivo.

Si no tiene en cuenta el nivel de señal de 24 voltios, absolutamente cualquier microcontrolador con el número de E / S (entradas / salidas) no menos que el requerido puede hacer frente fácilmente a la tarea.

Nos ocupamos de los niveles.


Inicialmente, quería usar optoacopladores en las entradas. Cualquiera que esté más o menos versado en electrónica, especialmente industrial, sabe que no hay muchos optoacopladores. Los comentarios le explicarán en detalle por qué es imposible sin optoacopladores. Pero sopesé los pros y los contras, y decidí negarme. Por lo tanto, algunos pueden no seguir leyendo e inmediatamente proceder a escribir un comentario.
Entonces, tenemos una señal de entrada de 24 voltios, o 0 voltios en ausencia de una señal. Esto permitirá el uso de un sensor de posición inductivo sin contacto o un interruptor de límite de contacto convencional. A partir de 24 voltios, debe obtener el voltaje de la unidad lógica segura para el controlador. El viejo divisor de voltaje hace frente a esto lo mejor posible.

imagen

Las resistencias se calculan teniendo en cuenta que para cualquier desviación del voltaje de entrada en más o menos el 20% del voltaje nominal en la entrada del microcontrolador, debe haber más del voltaje de conmutación (generalmente es la mitad del voltaje del controlador), pero no más que el voltaje del controlador, lo consideramos igual a 5 V. Apto para cualquier controlador de la familia AVR. Además, la corriente estimada a través del divisor es de aproximadamente 7 mA, lo que reduce la probabilidad de interferencia y, al mismo tiempo, no carga demasiado la salida del sensor y la fuente de alimentación. Un diodo zener de 4.7 V sirve para proteger contra sobretensiones en la misma interferencia. Todavía hay un rebote de contactos, podemos luchar con él mediante programación o no, es solo una maqueta. Ahora todavía tendría que indicar el estado de la entrada. Y aquí puedes aplicar salvavidas, matando dos pájaros de un tiro:

imagen

El LED en el circuito realiza dos funciones: funciona como un diodo zener, limitando el voltaje a 2.8 ... 2.9 voltios (¡solo para LED azules y blancos!), Bueno, también brilla. ¡Debo advertirle que en algunos casos el voltaje en el LED no es suficiente para cambiar la entrada del controlador! Cuando se utilizan varias entradas de controlador, simplificamos la instalación y ahorramos varios diodos zener. Al aumentar suavemente el voltaje de entrada, puede notar que el momento de encendido del LED y el momento de cambiar la entrada no coinciden un poco. Pero esto no nos molesta mucho, ya que no debería haber niveles intermedios en la entrada, solo 0 V o 24 V. Naturalmente, en este momento debería tener al menos el firmware de prueba mínimo para una entrada y una salida en el controlador.

Ahora, la señal de salida del controlador también debe adaptarse para 24 V, y teniendo en cuenta que el cable común, que también es negativo, es común a todos los relés de salida. Aquí necesita al menos 2 transistores y 2 resistencias:

esquema
imagen

De hecho, se necesitaría una resistencia más y un diodo protector paralelo al relé, pero no se trata de eso. Al principio usé este circuito. Pero en un momento, llamé la atención sobre los optoacopladores, que rechacé al principio.
El que nos molesta nos ayudará.

esquema
imagen
Observamos los parámetros de los optoacopladores por hojas de datos: el PC817C más barato y asequible por salida le permite cambiar U o: 35 V: I o: 50 mA. Los relés que están conectados al PLC en nuestro lugar (en la empresa) toman hasta 45 mA. Sin stock, pero bastante adecuado. La mayoría de los relés de pequeño tamaño a 24 V extraen hasta 15 ... 20 mA. Al final, puede comprar un optoacoplador más costoso, si realmente lo necesita, hay corriente de hasta 80 mA y voltaje de hasta 60 V. Somos adecuados para el diseño y 817. Para que no aprenda de sus errores, le advierto que para una corriente de salida máxima a través del LED del optoacoplador, debe pasar más de 7 mA.

Bueno, de nuevo, recuerda la indicación. Para mostrar el estado de la salida, agregamos un LED en serie con el LED del optoacoplador, todavía tenemos más de 3 voltios inactivos allí. Y es hora de dibujar un diodo protector antes de quemar el optoacoplador. Por cierto, no pude encontrar un método para elegir un diodo protector, dependiendo de los parámetros del relé. Por un lado, debe ser pulsado, por otro lado, de alto voltaje. Además, se puede colocar paralelo al transistor, ¿cuál es mejor? La práctica muestra que un diodo IN4148 de potencia suficientemente baja en este caso, pero me gustaría una justificación teórica.

esquema
imagen

Se indica una resistencia de 220 ohmios con el cálculo nuevamente en un LED azul o blanco, si se pone rojo, la corriente en el circuito de 3.5 mA aumentará a 9 mA, esto debe tenerse en cuenta.

Un poco sobre programación


Bueno, hay tantas letras, pero aún no he llegado al final del título, ni a ATtiny13. Para programar mi controlador, utilicé el proyecto FLProg , un entorno de programación visual que acerca la programación del controlador lo más posible a la programación del PLC en LAD y FBD. El circuito creado en este entorno, que también es un proyecto, se compila en un boceto Arduino, que ya cargué desde el entorno Arduino a ATtiny13 u otro controlador de la familia AVR. Por ejemplo, un esquema tan simple

imagen

compila en código como este:

bool _k1 = 0;
void setup()
{
pinMode(1, INPUT);
pinMode(2, INPUT);
pinMode(3, OUTPUT);
}
void loop()
{
_k1 = (((((!(digitalRead (1)))) &&((digitalRead (2))))) || ((((!(digitalRead (1)))) &&(_k1))));
digitalWrite (3, _k1);
}

- - , . FLProg , «» . , . , pin – , . ATtiny13, : Attiny13 Attiny13a Arduino IDE , : FLProg ATtiny13 ( ), , , ATmega168. FLProg , ATtiny13, . Arduino IDE , .


? ATtiny13, 5 , . , 6 , , , : ? RESET.

, 6, . ?

:

image

, . . , . .

, 50 . , 50 , , . , .

0 2,8 , , . , , 1,1 ( ) 2,9 , 4 . , .

. , , . , , 5 , -- , . 3 ( ) 680 . , . , , .

? 50 , 1 , 50 . , 1 , . , .

, . , .

6+6=12 -, 2?

image

, ? , ) 4 , , , . 0 , , 2,8 , ( ). 24, 0, , 2 – 0,93 1,87 . , . Arduino IDE , ATtiny, . , .

, , 6 10 (!) ATtiny13 ( ). , , . , «» ATtiny. , ATmega8, . :-)

, .

, , , . I/O . , (8/6) , , « ».

, , , «», . .

P.S. , : « ?»

image

Source: https://habr.com/ru/post/443978/


All Articles