Icono del sitio ELECTROALL

PLC CON ARDUINO(ATmega328p) V3

YouTube
YouTube
Instagram
Instagram
GitHub
GitHub
INTRODUCCIÓN

PLC con arduino (ATmega328p) V3 “DIP”, es un controlador lógico programable que fue diseñado por Electroall, cuyo circuito esta basado en el dispositivo de PLC SIEMENS S7 1200 CPU1214c con salidas de relés, por ende la tarjeta que se diseñó se alimentará con 24VDC, consecuentemente las entradas también serán de 24VDC, si bien es cierto el PLC de siemens tiene 14 entradas y 10 salidas, en este caso solo tendremos 8 entradas y 8 salidas. Para el sistema de control se está haciendo uso de un micro-controlador ATmega328p ideal para que sea programado con el IDE de arduino, cabe señalar que el sistema de control está altamente aislado de las eventos externos que vienen ser las entradas y las salidas.

DATOS TÉCNICOS
  1. Tensión de alimentación………………………………24VDC
  2. Corriente de alimentación……………………………65mA
  3. Entadas digitales 12-24VDC…………………………8
  4. Entorno de programación……………………………..Arduino IDE
  5. Condiciones ambientales min……………………….-10°
  6. Condiciones ambientales max……………………….55°
  7. Salidas RLY…………………………………………………………8
  8. Tensión salida AC………………………………………………250V
  9. Corriente AC……………………………………………………….5A
  10. Tensión DC…………………………………………………………..30V
  11. Corriente DC…………………………………………………………5A
  12. Dimensiones………………………………………………………….100x100mm
  13.  Empotrable……………………………………………………………Sí
CAMBIOS RESPECTO A LA ANTERIOR VERSIÓN(V2)
  1. Alimentación.- Anteriormente se tenía dos alimentaciones, es decir, se tenia para el circuito de las entradas y salidas 24V y otra alimentación muy aparte para el circuito de control que era de 5V, ahora solo tenemos una sola alimentación general de 24V.
  2. Tipos de Componentes.- En la antigua versión la mayoría de los componentes eran SMD, lo cual este tenía algunos inconvenientes; en algunos países de latinomérica no podían encontrar dichos componente SMD y que asu vez por ser SMD los costos estaban elevados. Ahora contamos con componentes completamente DIP.
  3. Reducción de componentes.- En la versión anterior se tenía algo de 16 optoacopladores, me dí cuenta que se tenía que quitar estos componentes ya que no era necesario aislar las salidas, porque se está usando relés para las salidas, obviamente los contactos de los mismos están altamente aislados. Por otro lado, se quitó el modulo RTC; esto se hizo para optimizar el rendimiento de nuestro PLC.
  4. Integración de un nuevo dispositivo.- El nuevo dispositivo es el 74hc245; se a integrado este dispositivo con la finalidad de gobernar las entrada, es decir, gracias a este CI se podrá habilitar y desabilitar las entras y, que ademas de ello, esto nos facilitará subir el programa a nuestro prototipo. Cabe señalar que 3 de las entradas ocupan los mismos pines de ISP(pines de programación).
  5.  Integración de un interfaz de programación.- En la versión anterior para poder programar nuestro prototipo necesariamente se tenía que extraer el uC atmega328p. ahora ya no será necesario extraer ya que se cuenta con unos pines de conexión especial. dicha programación se realizará a través de ISP.
PARTES PROTOTIPO
CONEXIONES EXTERNAS
CONEXION PLC – ARDUINO
ESQUEMATICO ELECTRÓNICO 
CODIGO (arduino) PRUEBA
// ENTRADAS DIGITALES DE 24V
const int I0_0 = 13;
const int I0_1 = 12;
const int I0_2 = 11;
const int I0_3 = 10;
const int I0_4 = 5;
const int I0_5 = 4;
const int I0_6 = 3;
const int I0_7 = 2;

//SALIDAS CON RELES DE 24V
const int Q0_0 = 6;
const int Q0_1 = 7;
const int Q0_2 = 8;
const int Q0_3 = 9;
const int Q0_4 = 14;
const int Q0_5 = 15;
const int Q0_6 = 16;
const int Q0_7 = 17;
void setup() {

    //ENTRADAS
    pinMode (I0_0, INPUT);
    pinMode (I0_1, INPUT);
    pinMode (I0_2, INPUT);
    pinMode (I0_3, INPUT);
    pinMode (I0_4, INPUT);
    pinMode (I0_5, INPUT);
    pinMode (I0_6, INPUT);
    pinMode (I0_7, INPUT);

    //SALIDAS
    pinMode(Q0_0, OUTPUT);
    pinMode(Q0_1, OUTPUT);
    pinMode(Q0_2, OUTPUT);
    pinMode(Q0_3, OUTPUT);
    pinMode(Q0_4, OUTPUT);
    pinMode(Q0_5, OUTPUT);
    pinMode(Q0_6, OUTPUT);
    pinMode(Q0_7, OUTPUT);

}

void loop() {

  // LECTURA DE ENTRADAS
  int I0 = digitalRead(I0_0);
  int I1 = digitalRead(I0_1);
  int I2 = digitalRead(I0_2);
  int I3 = digitalRead(I0_3);
  int I4 = digitalRead(I0_4);
  int I5 = digitalRead(I0_5);
  int I6 = digitalRead(I0_6);
  int I7 = digitalRead(I0_7);

  // ACCION, CADA ENTRADA ENCIENDE AL RELÉ 
  // QUE TIENE LA MISMA DIRECCION; EJEMPLO,
  // I0.0 ACCIONA A Q0.0 ASÍ SUCESIVAMENTE 
  if (!I0==1){
   digitalWrite (Q0_0,1); 
  }
   if (!I0==0){
   digitalWrite (Q0_0,0); 
  }

  if (!I1==1){
   digitalWrite (Q0_1,1); 
  }
   if (!I1==0){
   digitalWrite (Q0_1,0); 
  }

    if (I2==1){
   digitalWrite (Q0_2,1); 
  }
     if (I2==0){
   digitalWrite (Q0_2,0); 
  }

    if (I3==1){
   digitalWrite (Q0_3,1); 
  }
     if (I3==0){
   digitalWrite (Q0_3,0); 
  }

    if (I4==1){
   digitalWrite (Q0_4,1); 
  }
     if (I4==0){
   digitalWrite (Q0_4,0); 
  }

    if (I5==1){
   digitalWrite (Q0_5,1); 
  } 
      if (I5==0){
   digitalWrite (Q0_5,0); 
  } 

    if (I6==1){
   digitalWrite (Q0_6,1); 
  }
     if (I6==0){
   digitalWrite (Q0_6,0); 
  }

    if (I7==1){
   digitalWrite (Q0_7,1); 
  }
   if (I7==0){
   digitalWrite (Q0_7,0); 
  }
}
VIDEO
Salir de la versión móvil