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.
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.
QUE TAL FUNCIONA
ResponderBorrarHola, 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.
BorrarDe 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!
Excelente aporte, esto hacermas al usuario a la naturalesa propia de lo que es un plc, ya que la industria y muchas institucones ponen al plc como algo super complejo y que solo ellos pueden desarrolar.
BorrarBueno, tene en cuenta que un PLC industrial de primera marca puede ser bastante complejo en su diseño y programación, en este caso solo estoy mostrando una solución de bajo costo y muy resumida o sencilla de lo que podría ser un PLC para usos domésticos. Saludos.
BorrarHola 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!!!
ResponderBorrarHola 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.
BorrarSaludos!!
disculpa amigo yo quisiera saber cuales son todos los materiales que se ocupan para este plc
BorrarHola
ResponderBorrarUna pregunta, tienes la libreria del MCP2200 para isis? Lo he buscado pero no lo encentro.
Saludos y muy buen trabajo.
Hola, como estas?, el MPC2200 no lo tengo en libreria, lo hice a mano es solo para el diagrama, no funciona en simulacion.
BorrarSaludos!
Hola Sebastian, como va?. Antes que nada Feliz Día, Maestro ...
ResponderBorrarBien 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
Hola! Gracias! jeje llegue medio tarde al comentario.
BorrarQue 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!
Hola!
BorrarEl 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
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.
BorrarSaludos
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
ResponderBorrarHola 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á:
Borrarhttps://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!
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...
ResponderBorrarde 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
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.
BorrarSaludos!
como se graba el paso donde se descarga el bootloader al pic??????
ResponderBorrarHola, 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
BorrarSaludos
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
ResponderBorrarHola, 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.
BorrarSaludos.
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
ResponderBorrarHola, 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.
BorrarSaludos.
Hola, Sebastian, lo armas para vender, también lo usariamos para enseñar a programar en una escuela agraria(La Plata), gracias
ResponderBorrarHola, 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.
BorrarSaludos.
disculpa en vez del mcp2200 podria usar un conversor usb a ttl
ResponderBorrarHola, si, podes usar cualquier bridge USB UART, CH340, FT232, PL2303, etc...
BorrarSaludos.
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.
ResponderBorrarlas gracias anticipadas. ER
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.
BorrarGracias!!
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.
saludo claro me interesa, si esta en la sisponibilidad de vender algunos cuando esten listo, nos ponemos en contacto y lo hacemos
BorrarHola 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.
BorrarAtte. Ing. Luis Gomez Flores
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.
BorrarSaludos.
buenas noches saludos estoy interezado en saber si lo logro hacer con arduino
BorrarHola aca tenes una version con arduino: https://github.com/electgpl/PLCArduino
BorrarSaludos!
HOLA estimado Sebastian, te felicito y te doy gracias por tus aportes, te quería preguntar, en PCB de plc de arduino nano, el pcb, y la plaqueta es simple capa o doble capa
Borrarhola disculpa de cuanto fue el cristal que le pusiste al pic?
ResponderBorrarHola, es verdad no se ve, el cristal es de 4MHz, igual depende del bootloader que uses en el PIC, porque podrias usar otro bootloader que funcione en 20MHz tambien o 16.
BorrarSaludos!
Buen día compañero. He diseñado un PLC con el MCP2200 y el PIC 16F877A,realizado las configuraciones tanto del Pic en la PC como del mcp cargado previamente el bootloader. Quiero cargar el programa al Pic y me dice herror de escritura que podría ser compañero. Pienso que esta mal el bootloader. Quisiera que vendas el bootloader para Pic 16F877A a 4mhz y 9600 Bps. Mi correo es gumerbd@hotmail.com
ResponderBorrarClaro, si estas usando el bootloader del 16F876, no va a funcionar bien en el 16F877, dejame ver si lo tengo el del 877 y lo subo.
BorrarSaludos
Disculpe compañero quería preguntarlo si lo tiene el bootloder del pic 16f877A Gracias de Antemano.
ResponderBorrarHola, como estas, si, tengo el bootloader basado en AN1310, no ese que esta disponible ahi en la nota de este plc, Solo tenes que cambiar el programa de windows por el oficial de microchip an1310.
BorrarLo voy a subi hoy.
Saludos.
Buen día amigo, muy buen trabajo con tu PLC yo quiero hacer el mio tambien, seria mucha molestia que pudieras proporcionarme el PDF de la PCB para que pueda hacerlo y salga bien las medidas de la placa, un saludo, Gracias Buen Trabajo
ResponderBorrarHola ahora mismo lo subo a github. Saludos.
Borrarhttps://github.com/electgpl/PLCUSB/blob/master/PLC%20USB%20A4.pdf
Borrarhola amigo! la lista de materiales que se usaron?
ResponderBorrarHola, ahi te paso:
Borrarhttps://raw.githubusercontent.com/electgpl/PLCUSB/master/Bill%20Of%20Materials%20For%20PLC%20USB.TXT
Saludos.
hola buenas, soy estudiante de ingeniería y me gustaría poder compartir en escuelas, instituciones y grupos sociales cuan bonito es el mundo de la programación, la automatización y la tecnología. para esto estoy confeccionando una maleta de experiencias que constara con luces piloto, un motor, una correa transportadora (con sus sensores), un tanque para medir nivel, etc. me intereso tú idea de plc, porque quiero aprender el porque de las cosas y es justamente lo que quiero transmitir con mi proyecto. mi pregunta es, si puedo hacer programaciones donde pueda conectar sensores reales de variables físicas como sensores capacitivos, inductivos y motores.
ResponderBorrarsi tengo que modificarlo o no, si es conveniente según estas especificaciones. y por ultimo algún consejo teniendo en cuenta lo que deseo hacer. de ante mano muchas gracias.
Saludos.
Hola como estas?, en este caso esta placa cuenta con entradas digitales lentas (no es un bus digital), aunque tal vez analizando la propagacion de los optoacopladores se pueda hacer algo, pero no esta pensado para ello. la unica interfaz que tiene es serie/usb, en cuanto a los canales analogicos, son 0 a 10V 0 a 5V, pero no esta pensado para que ingreses 4 20mA o algo asi, en realidad es una placa de expansion pero basica, si queres que tenga entradas especiales y demas, habria que agregarle estas para que puedas agregar otro tipo de sensores (no solo salida contacto seco u opendrain).
BorrarSaludos.
tienen el link del archivo para modificar lo o simplemente me den las dimensiones del pcb
ResponderBorrarBueno, te dejo el link: https://github.com/electgpl/PLCUSB
BorrarHola como estas? Me pasa algo parecido a otro usuario , el MCP2200 se instalo solo cdo lo conecte por 1ra vez, esta en COM1 a 9600 en la PC, o sea entiendo me reconoce el chip. El tema es que cuando quiero seguir el paso del cargar el bootloader que dejaste en el proyecto se queda "Buscando.." Probe con otro programa el Tiny Bootloader y me dice que no encuentra el Pic. Los leds titilan como que hay transferencia pero no pasa mas de ahi. Que podra ser? Desde ya muchas gracias por cualquier ayuda que puedas darme. sds
ResponderBorrarHola, muy buen trabajo, me gustaria saber si dispondrias del proyecto a la venta?, gracias.
ResponderBorrarhola buenas tardes, disculpa me podrías decir el nombre del componente que esta conectado del cristal "U1"la verdad no lo habia visto antes y quisiera investigar mas.
ResponderBorrarbuen dia estimado una comnsulta este circuito funciona tambien si reemplazo el pic por el f877 o f877a
ResponderBorrarBuenas tardes ....Donde puedo conseguir la tarjeta? Muy interesante el video y lo que explica
ResponderBorrar