Pages: [1] 2 3   Go Down
Author Topic: Proyecto Arduino Mega 2560 como controladora industrial  (Read 25509 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Muy buenas, me presento pues es mi primer post es español.
Mi nombre es Sergi y vivo en Barcelona. Hemos iniciado con varios amigos una star-up y estamos diseñando una placa de control propia que se pueda montar en las máquinas que fabricamos, pues es fácil de usar, con una buena comunidad, y muy potente.

El objeto de este proyecto es crear un controlador robusto tipo PLC en una placa Eurocard estandar, con I/O optoacopladas y ampliable como por ejemplo Wifi, Ethernet, etc.

Llevamos ya 6 meses con el proyecto, pero aún está muy verde. Os explico que hemos hecho:
Sobre una placa MEGA 2560, hemos puesto otra conectada con pines macho y formato Eurocard. Alimentamos al arduino con una fuente conmutada TRACO de 9VDC que a su vez de alimenta de otra fuente industrial conmutada de 24Vdc.
Las I/O se realizan mediante conectores Molex de 2,54 mm. de crimpar y cable de cobre mono-hilo.
Las salidas digitales tienen activada la resistencia pull-down interna del arduino.
El interfaz HMI consta de una pantalla LCD alfanumerica de 40x4 con conexión en paralelo mediante cable de red UTP-5e apantallado en un extremo. La alimentación de la pantalla se realiza mediante una fuente conmutada TRACO de 5VDC que a su vez es alimentada por la misma fuente de 24VDC anterior.
También consta de dos botones pulsadores y un encoder Alps con pulsación (que gira a izquierda y derecha para seleccionar un menú).
Las salidas se realizan por transistores tipo TIP120 o TIP122 con su correspondiente diodo N4001 y alimenta a un contactor tipo Telemecanique de 3+1, trifásico 9A bobina a 24Vdc. (Los 24VDC los proporciona la misma F.A.).
La programación del mismo está ya acabada, pero nos encontramos con un problema sin salida para poder seguir. El cual paso a describir:

Problemas encontrados:
- La pantalla presenta muchas interferencias o se queda colgada cuando se enciende un contactor:
Solución1: apantallar cable con cable de red UTP-5e apantallado conectado a masa por un extremo -> Elimina todas las interferencias exteriores, pero el contactor sigue provocando basura y cuelgues en la pantalla de forma casi instantánea (sobre todo al desactivar la bobina del contactor, claro).
Solución2: Colocar resistencia pull-down 10k en las salidas -> No ocurre nada, ni a mejor ni a peor.
- El contactor de 24VDC provoca tanto interferencias en la pantalla como EN EL PROPIO ARDUINO!, es decir activa y desactiva entradas digitales (que ya estan conectadas a masa con la resistencia pull-down interna del Arduino) y genera basura en la pantalla.
Solución1: Conectamos la masa de la F.A. de 24VDC a tierra -> No ocurre nada.
Solución2: Sustituimos el contactor por una de 230Vac y lo activamos mediante un relé optoacoplado de Phoenix Contact -> SIGUE SUCEDIENDO EL MISMO ERROR! Así pues decidimos desconectar la salida del arduino y activar el contactor A MANO, sin ninguna conexión física que una Arduino y Contactor aparte de la conexión de 230Vac que alimenta las F.A. del arduino y SIGUE SUCEDIENDO EL MISMO ERROR!
Solución3: Colocamos un núcleo de ferrita en cada cable I/O que llega al arduino -> Exactamente igual.

Llegados a este punto, creemos que lo mejor es colocar un filtro RC al contactor (aunque desconocemos el tipo óptimo a colocar), pero creo que esa es una solución chapuza si es que con ello solucionamos el problema.
Desconozco si lo que afecta el arduino son interferencias por cable: OJO: Deberían entrar por la parte de la alimentación a 230Vac, y pasar los dos F.A.
O bien son interferencias electromagnéticas.


El problema se ha probado en dos placas de arduino diferentes. Cuando no se activa el contactor o solo se activan relés pequeños no sucede el problema.
¿Alguien puede aportar luz en este tema? Estamos desesperados y bloqueados.

Iré informando sobre el progreso del proyecto.
Logged

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Después de tantas pruebas y diagnósticos yo haría la última, comprobar si como dices las interferencias entran por cable o son electromagnéticas.

Para ello puedes hacer la activación a mano que indicas del contactor alimentando los 230 V de la misma toma pero con una pequeña manguera que te permita alejar el contactor del Arduino unos metros, probando a actuarlo cerca y lejos. En función del resultado de la prueba puedes hacer lo mismo pero esta vez tomando la alimentación del contactor desde otra toma alejada con un cable largo.

Al menos así comprobarás si las interferencias vienen por un camino u otro o un poco por los dos...
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Problema solucionado!

Solución: Existen diferentes tipos de contactores, unos más "bastos" para activar a través de pulsadores y otros sistemas eléctricos y otros adecuados para activar desde PLC que ya integran el filtro RC y demás.
Yo pensava que todos los contactores DC lo integraban, pero no es así.
Actualmente esta funcionando con un contactar 24Vdc de Telemachanique (los de LOVATO no funcionan) y he encargado un contactar ABB específico para PLC. A ver que tal!

Lo siguiente en lo que estamos trabajando es integrar un trafo de aislamiento para la F.A. de continua, así fuentes parasitarias o sobrecargas del exterior no deberían afectar al Arduino y sensores, y de paso aislamos la parte DC de la AC.
Aunque para aislarla al 100% deberíamos colocar optoacopladores en las salidas a relé. Tiempo al tiempo.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Que tenemos pendiente:

- Estamos usando una pantalla LCD alfanumérica de 40x4 conexión en paralelo. Vamos a sustituirla por la misma pantalla pero en conexión serie. Vamos a ver que tal funciona, porque lo interesante es que nos ahorramos 7 pines I/O.

- Optoacopladores y transistores tipo darlington en las I/O, actualmente usamos transistores TIP120 o 122, que funcionan bien pero hay que soldarlos uno a uno + su diodo y resistencia. Hay chips darlington de 8 I/O con su resistencia y diodo ya incorporado y claro es mucho menos trabajo de soldadura.

- Conectores de placa: Estoy indeciso sobre si usar los actuales molex de crimpar de 2,54 mm. o cambiarlos por los PhonixContact de 5,08 mm. con terminal roscado.

- Conexión USB: La vamos a eliminar y en su lugar usaremos el cable FTDI para la programación, así el coste por placa de la fabricación debería ser más económica.

- Frecuencia de trabajo: Es posible trabajar a 20 Mhz en vez de los 16 Mhz??? Asi aumentaríamos las prestaciones sin gastar un €.
Si alguien sabe como por favor hechar un cable.
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Que tenemos pendiente:

- Estamos usando una pantalla LCD alfanumérica de 40x4 conexión en paralelo. Vamos a sustituirla por la misma pantalla pero en conexión serie. Vamos a ver que tal funciona, porque lo interesante es que nos ahorramos 7 pines I/O.
te recomiendo esta, llevo usandola desde hace 2 o 3 años, y funciona genial. Tengo 3 o 4. por cierto, yo la uso por I2C así tengo los 3 puertos de serie del mega disponibles. tengo una libreria que no se si esta disponible en arduno 1.0.1, si la necesitas dimelo. no es mia.
http://www.ebay.com/itm/I2C-Serial-2004-LCD-Module-20X4-IIC-TWI-LCD-for-ATmega328-1280-2560-board-/160700138365?ssPageName=ADME:L:OC:ES:3160

- Optoacopladores y transistores tipo darlington en las I/O, actualmente usamos transistores TIP120 o 122, que funcionan bien pero hay que soldarlos uno a uno + su diodo y resistencia. Hay chips darlington de 8 I/O con su resistencia y diodo ya incorporado y claro es mucho menos trabajo de soldadura.

- Conectores de placa: Estoy indeciso sobre si usar los actuales molex de crimpar de 2,54 mm. o cambiarlos por los PhonixContact de 5,08 mm. con terminal roscado.

- Conexión USB: La vamos a eliminar y en su lugar usaremos el cable FTDI para la programación, así el coste por placa de la fabricación debería ser más económica.
he visto hacer esto en otras placas, de verdad crees que vale la pena el ahorro economico? estamos hablando de algo "industrial" y cuanto puedes ahorrar haciendo esto, 3 o 4 euros por placa? creo que la sencillez y conveniencia lo supera frente al ahorro. no se, piensalo.

- Frecuencia de trabajo: Es posible trabajar a 20 Mhz en vez de los 16 Mhz??? Asi aumentaríamos las prestaciones sin gastar un €.
Si alguien sabe como por favor hechar un cable.

una pregunta, tus entradas digitales optoacopladas que voltaje admiten? me gustaria saber si puedes recomendarme como hacer una entrada optoacoplada para una tensión de 70Voltios DC y leerlo con un pin digital del arduino. Es lo que haceis vosotros,no? pero con otro voltaje seguramente.
« Last Edit: October 06, 2012, 09:04:08 am by Sergegsx » Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por tus consejos Sergegsx, no podemos usar esa pantalla ya que es solo 20x4, necesitamos 40x4.
Sobre el USB, realmente no aporta nada, ya que entiendo que programar con el cable FTDI es exactamente igual a hacerlo con el USB. Entonces porque debo añadir una complicación/coste adicional?

Sobre las entradas a 70V, aún no hemos empezado a usar optoacopladores en las entradas. Pero sin haberlo probado yo usaría un transistor que se active a esos 70V y la salida si debe estar optoacoplada que active un optoacoplador tipo 4N25 que son muy económicos. Desconozco si existen optoacopladores que permitan un voltaje de entrada tan alto o si se puede acoplar una resistencia en serie o diodo zener para bajar el voltje antes de entrar al optoacoplador.


Aprovecho para lanzar dos preguntas:
1.- Es necesario montar el regulador de voltaje de 3,3 Vdc cuando se hace una placa de arduino propia? Para que sirve?
2.- Existe alguna pantalla más grande que la de 40x4 de uso simple y económico para arduino? Es decir no solo que muestre más carácteres, sino que se vean grandes.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 65
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Lo veo realmente muy Interesante este proyecto ya que implementar un PLC  en una maquina basica sale muy costoso, aparte de su programacion ,me interesaria  saber si puedo compartir algunas de mis  experiencias contigo  Jordi.  Tengo algo de experiencia en electronica Industrial.
Mi primera idea seria apantallar por completo la placa de control del  Microcontrolador, esto se puede  realizar  mediante  malla metalica puesta a tierra, es decir, una jaula de Faraday.
Tambien muy importante que la linea de alimentacion del  Atmega se toma de una fuente propia muy estable y aislada de la potencia, mi idea seria usar una bateria -tampon que alimente al Atmega, esta bateria estaria alimentada por un circuito de carga muy estable y a una cierta  distancia de los contactores, desde esta fuente con cable apantallado alimentar al  Atmega
Las salidas  y las entradas del  Atmega yo las realizaria mediante   Optoaclopadores.
realizaria una placa independiente para los contactores, todos ellos con circuitos de proteccion en sus bobinas para evitar  el ruido electrico en su actuacion. Con bobinas de  20 mH y condensadores.
Para mi es Basico el aislar completamente  la alimentacion de Potencia de las lineas de alimentacion del  Atmega, por que  seguramente por estas es por donde se trasladan los armonicos realizados en las comuntaciones de los  contactores de potencia. Es decir, el circuito de control debe de estar aislado de todas las interferencias  creadas por los contactores.
 
Espèro que esta idea te haya podido ayudar, estoy a tu entera disposicion no lo dudes.

                                                  Manuel
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 65
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A tu pregunta  te dire que la alimentacion del Atmega esta comprendida entre 3,3 y  5 V  nominal
Si alimentas con el minimo voltaje, puede que la tension de control  para los reguladores  internos del Atmega sea insuficiente. Lo ideal es alimentarlo a 5 V si es posible desde  una bateria-tampon externa que sea autoalimentada por una fuente estabilizada. Si alimentas la  placa desde su conector de serie, se ha de calcular entonces la caida de tension  presente en el regulador de la placa, que es de unos 1, 5 V por ello hemos de alimentar a un voltaje superior, es decir, 5 V + 1,7 V  = 6,7 V
Se me ha ocurrido una idea y te la comento a ver que te parece. Por que no utilizar Reles de estado Solido en sustitucion de los contactores de  potencia ?   Con esto evitas las tensiones inducidas en las bobinas de los contactores, ya que los reles de estado solido son estaticos y estan optoaclopados  internamente.
Los reles de estado solido pueden ser  actuados directamente desde las salidas del Atmega ya que su corriente de actuacion es de unos  50 mA  nominal, y la carga que soportan es desde los 300 W a los  5000 W  en modelos comerciales.
La gran ventaja es que al no tener elementos mecanicos,  su vida es muy elevada y al no disponer de bobina de exitacion estan libres de generar  sobretensiones  inversas y  ruido en los cables de alimentacion

   Espero que estas  ideas te sean de utilidad.

                                                     Manuel
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 40
Posts: 682
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Si las salidas usas tip estas usando CC, y debes tener unos buenos picos de sobre tension. deberias poner un filtro rc y un varistor en paralelo a la bobina del contactor.

   .047   47ohms
------||---^^^------
  |    _           |
  ---|/|------------
    -/
varistor segun voltaje de bobina

esto quita mas interferencia y suprime la chispa del despegue de la bobina.

perdon por el dibujo
Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Jr. Member
**
Karma: 0
Posts: 65
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sigo opinando que la solucion utilizado reles de estado solido es la mas eficaz ya que no producen ninguna sobre tension en los estados de conmutacion puesto que estan  optoacplopados  internamente en sus  circuitos de entrada / salida
Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Para las salidas podrías usar un ULN2003.
¿Que tipo de maquinas fabricas?
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Cordoba
Offline Offline
God Member
*****
Karma: 40
Posts: 682
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

haa eso me olvidaba.. no vimos el esquema pero imagino las entradas y salidas estan aisladas!! cada una con su fuente.
Trabajaje muchos años fabricando automatismos en una empresa y usaban ese diseño en ambientes muyyyyy ruidosos sin problemas
Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Muchas gracias por todas vuestras respuestas!

Os cuento lo que tenemos hasta el momento:

- Controladora/micro: Atmega1284P, porque es muy fácil de implementar en placa (soldar el Mega2560 es imposible para mi) y con más posibilidades que un Arduino Uno. La idea es hacerlo funcionar a 20Mhz pero con todo el soporte IDE de Arduino. ¿Alguien sabe si se puede modificar en alguna manera el bootloader para soportar los 20Mhz con las librerias de Arduino?

- Relés de estado sólido: Son una gran cosa, pero su implementación es algo difícil, pues la parte de control (la CPU con sus I/O, etc.) debe ir separada de la parte de potencia. Es decir que si un usuario mete mano a la CPU no quede frito. Entonces es mucho más fácil una salida de 24Vdc que active un contactor en carril DIN.

- Sobre el filtro RC: No lo implementaremos en placa, ya que descubrí que hay contactores con el filtro ya integrado en el propio contactor por el mismo precio (les llaman contactores para PLC).

- Sobre la fuente de alimentación: Comparto que es un tema crucial. De momento alimentamos de la siguiente manera: 230Vac a 230Vac mediante trafo de aislamiento, luego F.A. conmutada estándar de 24Vdc marca Pulse que alimenta a una FA conmutada en miniatura marca Traco de 5Vdc 1A, entre la FA de 24Vdc y la de 5Vdc he puesto un condensador cerámico entre Vcc y Gnd, una bobina Vcc a Vcc y otro condensador cerámico Vcc a Gnd, tal como sugiero Traco en su datasheet para cumplir con una normativa IEC.
¿Alguna sugerencia?

- A cada IC se le pondrá un condensador cerámico de 0,1uF.

- Pantalla: Salida a pantalla LCD alfanumérica de 40x4 en paralelo. He visto que se puede poner un conversor I2C a paralelo, así que haré esto para ahorrarme 8 salidas! espero no sea muy difícil.

- Salidas panel de mandos: Ayer descubrí por indicación del foro que existen conversores I2C a paralelo con interrupción, y que por lo tanto si detectan un cambio activan una interrupción en el Arduino. Esto puede ser genial! Ya que gano mucha velocidad en detectar las pulsaciones.
Por lo tanto probaré con el:  MCP23016-I/SP

- Otras salidas: Gran duda!
Las PWM conectaran con drivers de motores paso a paso, que protección puedo poner???
Otras iran con un expansor tipo multiplexor o demultiplexor. En este punto estoy estancado:
He visto que algunos fabricantes ponen un diodo Zener de 5,1V en algunas salidas, supongo para que actue a modo de fusible, en otras drivers darlington, en otras optoacopladores... Es decir parece que según el tipo de función que tenga cada salida hacen una cosa u otra... fff esto me tiene dándole vueltas a la cabeza...


El lunes postearé fotos de como va quedando, mientras tanto si alguien tiene alguna otra sugerencia se lo agradeceré un montón.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

haa eso me olvidaba.. no vimos el esquema pero imagino las entradas y salidas estan aisladas!! cada una con su fuente.
Trabajaje muchos años fabricando automatismos en una empresa y usaban ese diseño en ambientes muyyyyy ruidosos sin problemas

¿Cómo las aislabais?
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Si las salidas usas tip estas usando CC, y debes tener unos buenos picos de sobre tension. deberias poner un filtro rc y un varistor en paralelo a la bobina del contactor.

   .047   47ohms
------||---^^^------
  |    _           |
  ---|/|------------
    -/
varistor segun voltaje de bobina

esto quita mas interferencia y suprime la chispa del despegue de la bobina.

perdon por el dibujo

Usaremos contactores para PLC, que ya integran la protección, valen lo mismo y te ahorras un faenon.
Logged

Pages: [1] 2 3   Go Up
Jump to: