PLC con PIC

uPLCCS son las siglas u [mu] "micro" - PLC "Controlador Lógico Programable" - CS [CCS] "Custom Computer Service". La idea de este PLC es que abre las posibilidades al lenguaje de programación, ya que no hay que limitarse a los lenguajes de objetos y lógicos de los conocidos PLC, sino que también se puede programar en C (de ahí CCS), en Basic, en Ensamblador, etc...
Esto nos proporciona una versatilidad aun mayor para lograr un programa óptimo y sencillo.
El circuito que se presenta es solo el modulo lógico de procesos, no tiene interfase de potencia como por ejemplo Relés, Triac, Transistores, etc...
El modulo cuenta con el conector paralelo para dicha expansión.
El mismo cuenta con 4 entradas digitales aisladas ópticamente 0 a 12V y 6 entradas analógicas las cuales tendrán que ser adaptadas según el sensor a conectar ya que el rango de medición para estas es de 0 a 5V.
El mismo posee la fuente integrada la cual se puede alimentar tanto en continua como alterna ya que cuenta con su puente de diodos que sirve aparte para no cometer errores en polaridad, es decir, se puede polarizar de cualquier forma.
Y algo importante es el método de programación, si bien es un micro de la firma Microchip, como sabemos se lo puede sacar del zócalo para montarlo en un programador o bien en este caso se integrado en la placa un conector ICSP (In-Circuit Serial Programming) esto nos permite con un solo cable de 5 hilos conectarlo al programador sin tener que sacar y poner el integrado con riesgos de romper algún pin.






En el siguiente video se puede ver como funciona este uPLCCS con el programa que se mostrara a continuación.
El programa lo que hace es testear tres botones los cuales el primero será una parada de emergencia que pondrá a ceros las salidas digitales, y el segundo y tercer botón son fines de carrera.
Lo que se simula con este programa es el movimiento de un motor que lleva y trae un carro de un punto a otro, cuando el carro llega a su limite se activa un fin de carrera invirtiendo dos salidas digitales (como se ve en el video los dos primeros leds son los que se invierten) de esta forma el motor cambia de sentido de giro y mueve el carro hacia el otro extremo donde se encuentra el otro fin de carrera que al activarse vuelve a invertir el sentido de giro del motor, esto se repite sucesivamente. A menos que se presione la parada de emergencia la cual pondrá a ceros la salida.

#include <16f883 .h=".h">
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,NOMCLR,INTRC
#use delay(int=4000000)
void main()
{
   output_c(0b11111111);
   delay_ms(800);
   output_c(0b00000000);
   delay_ms(800);
   while(TRUE){
      if (input(PIN_B0)==0)
         output_c(0b00000000);
      else
         if (input(PIN_B1)==0)
            output_c(0b01000000);
         else
            if (input(PIN_B2)==0)
               output_c(0b10000000);
   }            
}




Una forma muy buena de terminar este proyecto es programando este circuito o cualquier otro con un programa en LADDER, buscando por la web encontré un programa que es un compilador de LADDER para microconroladores Microchip (PIC) y Atmel (AVR), este programa es open source y pesa menos de 1MB, el mismo tiene muchísimas funciones para incluir en el programa y permite configurar el micro, por ejemplo su velocidad de clock, la asignación de pines (entradas, salidas, etc..).
Tambien funciona como simulador en tiempo real.
El programa se llama LDmicro, el mismo en su web tiene los binaros de descarga en multiples idiomas y tutoriales muy completos de como configurarlo y compilar.
Descarga la version en español aqui: http://cq.cx/dl/ldmicro-es.exe
Tutorial en ingles: http://cq.cx/ladder-tutorial.pl

Captura de pantalla del mismo programa anterior pero realizado en LADDER:







16 comentarios:

  1. hola buen proyecto me podrias decir que componentes usaste a parte del diagrama por favo

    ResponderBorrar
  2. Hola, lo único que no esta definido en el circuito son los optoacopladores que son 4N25, el resto esta en el circuito los componentes.
    Tené en cuenta que el PIC16F883 no es soportado por el programa LDmicro, pero podes cambiar el PIC16F883 por un PIC16F876 (los pines son los mismos).
    Para que no tengas problemas con el LDmicro cambiale también el cristal, ponele uno de 4MHz en lugar de el de 20MHz.
    (todo esto si lo usas con el LDmicro, si lo usas con otro compilador no tenes problema).
    Saludos.

    ResponderBorrar
  3. hola estoy trabajando en el plc que subiste y el hadware ya lo tengo listo también he trabajado en el ladder de ldmicro me podrias ayudar con el ldmicro launcher compiler que es para pasar de ladder ha ansi lenguaje C la verdad que soy novato y lo que quiero es trabajar en lenguaje C mas que en ladder he leído harta información sobre el tema del lenguaje C pero no se por donde empezar ha trabajar si por instrucciones binarias luego contadores timer para pasar a entradas analógicas un consejo

    ResponderBorrar
    Respuestas
    1. Hola como estas? La verdad que no he revisado el tema del launcher, el código que subí en c acá lo hice con el compilador ccs. Deberías conseguir el libro "Compilador C Ccs Y Simulador Proteus Para Microcontroladores Pic" es el mejor para empezar. Y esta en PDF si lo buscas en google. Saludos!!!

      Borrar
  4. yo puse en el circuito el pic16f886 y los optoacopladores estoy usando los til111

    ResponderBorrar
    Respuestas
    1. Gracias por tu aporte!, como decis, hay muchas formas de customizar el circuito!
      Saludos.

      Borrar
  5. Muy interesante, me gustaria hacer uno propio. pero tu que tienes experiencia en LDmicro, como lo comunico con mi pc y realizo tareas desde el teclado?

    ResponderBorrar
    Respuestas
    1. Hola como estas, mira el ciclo de vida de cualquier sistema con microcontrolador es el siguiente: Codificacion de Firmware [Lenguaje de programacion] -> Compilacion de Firmware [Compilador] -> Codigo compilado [Archivo Hexadecimal] -> Programa de Link para cargar el MCU -> Interfase Electronica [Programador] -> MCU.
      Por ejemplo si vos haces un programa en Assembler... abris el MPLAB, codificas tu fuente, guardas el fichero .asm, abris el MPASM, lo compilas y generas el .hex, despues abris por ejemplo el PicKit [programa] y buscas ese .hex, conectas el programador PicKit [Placa programadora] y montas el MCU sobre ella y procedes a cargar la memoria del MCU con el .hex generado anterior mente... Si programas en C es lo mismo, solo que cambiaras el compilador... pero los demas pasos son los mismos... el LDmicro es un compilador, por ende abris el LDmicro, programas en LADDER [es el lenguaje] y una vez realizado el programa lo compilas como te mencionaba en los otros ejemplos, este LDmicro te genera tambien el .hex que luego procedes a cargar en la memoria del MCU como te mencionaba antes... Resumiendo siempre necesitas el .hex para cargar el MCU. Si alguna vez programaste un MCU, es el mismo proceso pero cambia el compilador.
      Saludos.

      Borrar
  6. Boa noite professor qual o tamanho dessa placa

    ResponderBorrar
    Respuestas
    1. A maneira correta de verificar o tamanho do PCB das Nações Unidas (e este mar ou outro), com algumas fotos em aberto é o editor de fotos (Corel , Inkscape , Gimp , Photoshop, etc ..) Word mesmo , e tamanho Avaliado programa .
      O que eu faço quando eu aperto PCB ONU é colocado na palavra , desenho quadrado 10x10mm da ONU pelo exemplo e procurar UN integradas no PCB , então eu sobrepor Praça da parte do corroboram integrada e tamanho. É o caminho mais fácil , mas que salga ok apart é a palavra , um tamanho de conjunto de tempo , pode ser multiplicada, quantidade de impressão PCB Oja.
      La Manera de verificación correcta el Tamaño de la ONU PCB ( ya este mar u Otro ) , Imágenes con algun editor abierta es la photo ( Corel , Inkscape , Gimp , Photoshop , etc .. ) El Mismo Palabra , y El Tamaño en opinión EL programa .
      Lo que hago Cuando yo ONU agarre PCB es en el ponerla palabra , dibujar ONU cuadrado por example 10x10mm y buscar la ONU integrada en el PCB , LUEGO El Cuadrado superpongo en la parte del integrado y El Tamaño corroboran . Es La Manera sencilla pero que la salazón bien , aparte es el palabra , Una Vez conjunto el Tamaño, se puede multiplicar, Cantidad de impresión PCB por hoja .

      Borrar
  7. Boa noite professor qual o tamanho dessa placa

    ResponderBorrar
  8. Hola sebastian quisiera saber si esta version https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Integrate-LDmicro-and-AVR-Studio-or-PIC-MPLAB-software del LDmicro que aparece en las imagenes existe para descargar o es de pago, por que no encuentro en ningun lado alguna version que tenga esas opciones al momento de compilar

    ResponderBorrar
    Respuestas
    1. Hola como estas?, el LDmicro es gratis en su version full, no hay versiones intermedias o trial.
      En cuanto al MPLAB es otra cosa, ahi si tenes versiones pagas, aunque ahora tenes el MPLAB X que es gratis.
      Si queres mirate este otro post que es mas extenso en cuanto al LDmicro.
      http://electgpl.blogspot.com.ar/2016/05/manual-de-uso-para-plc-con-ldmicro.html
      Saludos

      Borrar
  9. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  10. Hola Sebastián, buenas tardes, me llamo Angel, ¿como estas?, espero que bien, el motivo de mi correo es para ponerme en comunicación contigo, para que me orientes en cuanto al diseño, construcción y programación del PLC con PIC16F886 por USB/UART, te agradeceré demasiado si me puedes ayudar con esto.
    Me despido con un cordial saludo, espero tu respuesta pronto.
    Saludos

    ResponderBorrar