PLC USB






Este es un circuito que se desarrolla en función a varios proyectos del site, primero el PLC - uPLCCS - PIC el cual detalla un PLC de programación ICSP (donde uno debe contar con su programador propio), pero este proyecto muestra que se puede programar tanto en ASM, como C, como LADDER, gracias a un IDE para LADDER llamado LDmicro que se encuentra disponible de forma gratuita en la Web de su autor (http://cq.cx/ladder.pl) también van a encontrar los tutoriales, también es posible programar en C con el compilador que deseen (para Microchip), o bien el viejo conocido ASM.
Otro proyecto que se amalgama con este nuevo PLC USB es el transceptor USB/UART, el cual podemos encontrar en el blog como Conversor USB UART TTL, este en base al transceptor MCP2200 cumple la función de crear un puerto serial virtual vía la conexión USB, el cual con sus drivers (proporcionados gratuitamente por Microchip), encontraremos en nuestro administrador de dispositivos del OS, un nuevo puerto Serial. 
Como la mayoría de los microcontroladores que utilizan programación en circuito requieren una señal serial de dos hilos por ejemplo el Clock y el Data, para la programación del mismo, también requieren de una tensión elevada para acceder al modo programación (actualmente existen microcontroladores que utilizan bajo voltaje para esta programación LVP), La mayoría de los microcontroladores utilizan de 10 a 13V para entrar en modo programación lo cual como sabrán excede nuestros 5V del USB, la solución de los programadores en circuito del tipo serial, es aprovechar la norma RS232 que establece unos +/-10V en su norma lo cual aprovechado y canalizado de forma tal provee de esa tensión de programación a los microcontroladores.
Hasta aquí seguimos igual, ya que no usaremos puerto Serial sino USB, aquí el problema de los transceptores comerciales, la mayoría (el 99%) poseen una salida serial a nivel TTL, es decir en 0 y 5V lo que no nos permite programar el microcontrolador ya que requerimos mas de 10V para ello, Claramente es posible realizar una pequeña fuente del tipo SMPS Step-Up para elevar esa tensión en el pin de grabación pero aquí tenemos otra solución tan antigua como la anterior.
Los llamados Bootloader, estos son Cargadores de Arranque cumplen la función de canalizar el programa que programamos en un sector preestablecido de la memoria interna sin necesidad de programar a nivel hardware (con el acceso a programación que mencionaba anteriormente con los 10 a 13V) sino que el programa se aloja mediante otros pines que no son los de programación Data y Clock, es decir.
El microcontrolador debe programarse a nivel hardware una sola vez, donde se grabara el Bootloader, una vez grabado este ya no se requiere grabar nuevamente el microcontrolador.
Esto posee pros y contras: 
Pros, es que es mas sencilla la programación, no se requiere de placas especiales de programación y facilita la transferencia del archivo. 
Contras, se requiere el microcontrolador con el Bootloader grabado previamente y este mismo consume una pequeña parte de la memoria del micro la cual se restara al programa que realicemos. 
En el caso del Bootloader también se puede descargar gratuitamente desde la Web de Microchip (debe ser el que soporta el microcontrolador que vamos a utilizar y también debe detallar el clock que utilizamos).
En el caso de este PLC se utiliza un PIC16F876A el cual cumple su función correctamente pero siempre se pueden utilizar otros diferentes, por razones de costos este viene bien, pero claramente hay otros con puerto USB embebido mediante HID lo cual nos ahorra el MCP2200.
El software debe ser cualquiera que envíe el archivo vía serie que el puerto serial será el virtual creado por el driver del MCP2200 mencionado anteriormente. 
En mi caso he desarrollado un programa cargador para este fin en lenguaje Delphi, pero pueden realizarlo ustedes en el lenguaje que quieran solamente tienen que tener en cuenta que la velocidad de transferencia serial es 9600bps, pero en realidad pueden usar cualquier cargador de Internet.
En la nota de aplicación 851 pueden encontrar una versión del Bootloader de Micrcochip. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en012031

Especificaciones:

8 Entradas Digitales de 12/24V asiladas con opto-acoplador.

5 Entradas analógicas hasta 5V auto-reguladas.

4 Salidas a contacto de 12V a 250Vac 5A.

Puerto de alimentación de 12V con protección de cambio de polaridad.

Puerto USB, para la carga del programa y para comunicaciones seriales.

Botón de Reset, para reiniciar el sistema y para cargar el programa.

Microcontrolador a utilizar PIC16F876A

            Tipo de memoria de programa: Flash
            Memoria de programa: 14KB
            Velocidad del CPU: 5 MIPS
            Memoria RAM: 368 bytes
            Memoria EEPROM: 256 bytes
            ADC: 5 canales de 10bit de resolución
            Temperatura de trabajo: -40 a 125°C

A continuación se detalla el hardware como también su PCB.

 

 




30 comentarios:

  1. Respuestas
    1. Hola, como estas?, actualmente esta funcionando, no ha parado ya que se lo utiliza en una escuela secundaria para enseñar el lenguaje Ladder y realizar procesos automatizados.
      De todas formas el programa LDmicro te permite generar el .hex tanto para Microchip como para Atmel, asique no es necesario tener esta placa con interfaz de entrada salida, podes programar en ladder y pasarlo a un microcontrolador y luego ejecutarlo en un protoboard si queres, o en un simulador como proteus.
      Saludos!

      Eliminar
  2. Hola Como estas? vi el video que subiste en youtube, es muy bueno el material que subiste y la placa que armaste, pero la verdad, por sobre todo es admirable la intencion de compartir el conocimiento adquirido y los diagramas de la placa que construiste. Un aplauso de pie de este colega!!!

    ResponderEliminar
    Respuestas
    1. Hola como estas? Gracias!!!, lamentablemente la placa ya no la tengo en mi poder como para hacerle una review mas profunda, pero de todas formas es un hardware sencillo.
      Saludos!!

      Eliminar
    2. disculpa amigo yo quisiera saber cuales son todos los materiales que se ocupan para este plc

      Eliminar
  3. Hola
    Una pregunta, tienes la libreria del MCP2200 para isis? Lo he buscado pero no lo encentro.
    Saludos y muy buen trabajo.

    ResponderEliminar
    Respuestas
    1. Hola, como estas?, el MPC2200 no lo tengo en libreria, lo hice a mano es solo para el diagrama, no funciona en simulacion.
      Saludos!

      Eliminar
  4. Hola Sebastian, como va?. Antes que nada Feliz Día, Maestro ...
    Bien ya tengo montada esta placa aunque con algunas modificaciones porque solo necesito salidas a relé pero el resto del circuito es tal cual a este. Pero no logro que el AN1310 me reconozca el bootloader del micro (la pc me reconoce un dispositivo en un puerto y todo, creo que toda esa parte esta bien) cada vez que sigo los pasos para que me lo reconozca solo me dice "Bootloader not found".
    Por otro lado cuando quiero cargar ese bootloader en el micro (16f886) en la ventanita de mensajes de la interfaz de Pickit2 me dice "Warning:No configuration words in hex file" , todo esto siguiendo los pasos de la hoja de datos del AN1310, o sea seleccionando el micro en MPLAB, configurando los fuses y volviendo a compilar el programa.. Si me podes tirar un centro te lo agradecería.. saludos

    ResponderEliminar
    Respuestas
    1. Hola! Gracias! jeje llegue medio tarde al comentario.
      Que bootlader estas usando?, Lo que pasa que para que te funcione el AN1310 tenes que usar también el Reset en el BridgeUSB que va del RTS del Bridge mediante un diodo en inversa al RST del micro. En este caso no estaba usando el AN1310, estaba usando otro Bootloader.
      El Bootloader AN1310 también tenes que configurarlo desde el programador (en cuanto a los fuses).
      Esta placa responde a este proyecto mira:
      http://electgpl.blogspot.com.ar/2016/01/placa-de-desarrollo-usb-para-pic16f876a.html

      La placa con el AN1310, responde a este otro proyecto:
      http://electgpl.wixsite.com/board/hard-1

      Saludos!

      Eliminar
    2. Hola!
      El Bootloader que estoy usando es el que te da Microchip cuando instalas el AN1310, digamos entonces el AN1310 no me serviría por faltarme ese diodo en inversa. Tendria que usar otro cargador como el que propones vos, pero no tengo el bootloader para el 16f886.
      Hay que modificar mucho del programa del 876 para que funcione con 886? Gracias

      Eliminar
    3. Hola, no lo tengo para el 886 que responda a este hard, o no se donde esta, no lo encontre. Pero podes agregarle el diodo desde el RTS del bridge al Reset del micro y listo. lo podes improvisar por abajo del pcb si queres y listo. Ahi lo haces compatible con AN1310 y podes usar cualquier micro.
      Saludos

      Eliminar
  5. hola sebastian, como esta excelente estos proyectos felicitaciones, una pregunta me podrías indicar si no es mucha molestia donde podría localizar el bootloader para estos pic los he estado buscando sin ningún resultado muchas gracias de ante mano

    ResponderEliminar
    Respuestas
    1. Hola como estas, Bootloader oficiales tenes los de microchip basados en la nota de aplicación AN1310, en este caso (en este proyecto) no estoy usando ese bootloader, estoy usando uno propio, los archivos del proyecto están acá:
      https://sites.google.com/site/electgpl/storage/PLC%20USB.7z?attredirects=0&d=1
      Pero, si queres podes implementar el AN1310, solo que este requiere de una conexión estará mediante un diodo en inversa desde el RTS del bridgeUSB hasta el RST del MCU.
      Saludos!

      Eliminar
  6. Hola Sebastian, estoy desarrollando un equipo automatizado, pero no estoy seguro de utilizar servos o solenoides, la función que van a realizar es sostener una cuerda o soltarla en el caso del solenoide, o en el caso del servo, sería un ajuste para que en vez de tener un giro de 180º, gire aproximadamente 3 vueltas, es decir unos 1080º o más...
    de acuerdo con tu experiencia, si yo montara el sistema con una placa parecida a la tuya, que sería mejor, tomando en cuenta que las salidas para solenoide solamente usarian un bit, y en el caso de los servos usar pwm... necesito 10 salidas así.
    gracias

    ResponderEliminar
    Respuestas
    1. Hola como estas?, si necesitas salidas digitales podes usar cualquier microcontrolador, pero si necesitas salidas PWM tenes que buscar alguno que implemente PWM por hardware, aunque sinceramente 10 canales PWM es algo muy difícil de conseguir, se me ocurre que podes usar cualquier microcontrolador y agregarle un expansor PWM externo, esto seria un integrado extra que conectas por protocolo serial y te expande la cantidad de salidas PWM. por ejemplo el expansor PCA9685 es un integrado que se conecta por i2c y te da hasta 16 canales independientes PWM, con ello resolverías tu problema.
      Saludos!

      Eliminar
  7. como se graba el paso donde se descarga el bootloader al pic??????

    ResponderEliminar
    Respuestas
    1. Hola, como estas, en este link podes descargar el bootloader para grabar en el mcu y el programa cargador. https://sites.google.com/site/electgpl/storage/PLC%20USB.7z?attredirects=0&d=1
      Saludos

      Eliminar
  8. Hola me interesaria poder hacerlo, me encuentro dando mis primeros pasos en lo que PLC y quiaiera armar esa placa, me podrias pasar la lista de materiales? gracias compañero, muy buennos videos

    ResponderEliminar
    Respuestas
    1. Hola, no encuentro el diagrama para sacar el bom del programa, pero los componentes son los del diagrama, te diría que los saques de ahí, es mas, tal vez te convenga analizar si conseguís esos componentes o si tenes que cambiarlos por otro.
      Saludos.

      Eliminar
  9. hola, antes que nada que buen proyecto y me gustaria hacerlo, pero quisiera saber que optoacoplador estas usando, es que en el diagrama no aparece el modelo, gracias de antemano

    ResponderEliminar
    Respuestas
    1. Hola, es verdad, esta usando un 4N25, la segunda versión que aun no subo, esta usando los PC817 que son mas pequeños y mas económicos.
      Saludos.

      Eliminar
  10. Hola, Sebastian, lo armas para vender, también lo usariamos para enseñar a programar en una escuela agraria(La Plata), gracias

    ResponderEliminar
    Respuestas
    1. Hola, por el momento no tengo ninguna en stock, estoy desarrollando la versión 2 que es mas compacta aun con algunas mejoras, y otra diferente que en realidad es lo mismo pero basada en AVR con un atmega328 para poder programarla con el IDE Arduino. Ni bien la tenga si queres déjame un correo y te aviso, igual la voy a subir acá ni bien la tenga.
      Saludos.

      Eliminar
  11. disculpa en vez del mcp2200 podria usar un conversor usb a ttl

    ResponderEliminar
    Respuestas
    1. Hola, si, podes usar cualquier bridge USB UART, CH340, FT232, PL2303, etc...
      Saludos.

      Eliminar
  12. hola Sebastian C, me he de buen gusto saludarte quiero saber si tiene en venta, ejemplares del proyecto o si sera posible obtener los esquematicos para enviar a hacerlos en una pagina especializada en el desarrolllo de placas via internet. si se requere algun pago o aporte dejadme saber que la verdad me interesa obtener una de tus placas si es posible la nueva. mi correo es theliondjprodutions@gmail.com aqui me puede dejar saber lo que se necesita para ayudar a la causa y obtener este tan genial producto.
    las gracias anticipadas. ER

    ResponderEliminar
    Respuestas
    1. Buen dia, en este momento no tengo mas, tengo que volver a producir, también estoy haciendo algunas modificaciones a la nueva versión, seguramente salga la versión nueva directamente.
      Gracias!!
      Ni bien pueda lo subiré a este blog, estoy trabajando en una basada con AVR (Atmega328) para que sea también compatible con Arduino IDE, le interesa?
      Saludos.

      Eliminar
    2. saludo claro me interesa, si esta en la sisponibilidad de vender algunos cuando esten listo, nos ponemos en contacto y lo hacemos

      Eliminar
    3. Hola sebastian gracias por compartir estoy volviendo a ver los pic ya que en la universidad todo era asembler y lo veía muy complicado,esperenado tu nuevo proyecto cumpa lei que será como aduino esta nueva versión 2, gracias por compartir tus esquemas, el conocimiento es universal saludos de la paz Bolivia.
      Atte. Ing. Luis Gomez Flores

      Eliminar
    4. Hola, si, estoy haciendo una version 2 que es similar a esta (con algunas mejoras y protecciones) que esta basado en Atmega328P, podes utilizarlo tanto con AtmelStudio como con ArduinoIDE y sus derivados. Aun no lo tengo, pero estoy trabajando en ello.
      Saludos.

      Eliminar