Proyecto Arduino Mega 2560 como controladora industrial

Para que quieres subir a los 20 MHhz ¿ un microcontrolador a 16 Mhz ya es potente de sobras, solo es cuestión de optimizar el código de Programa
Estamos hablando de tiempo de instrucción de 20 nanosegundos , mi consejo es que se optimice el código lo suficiente evitando tiempos de espera, delays, y bucles infinitos que enlentecen el programa, con un código bien optimizado el Micro es rapidísimo en su respuesta
Los relés de estado sólido pueden conmutar tanto AC como DC y esta puede ser de 12 o 24 V con lo cual no hay problemas si se manipula en la placa de control. Piensa que una salida a relé te va a producir picos de tensión inducidos en su bobina, y aunque se atenué, siempre produce armónicos en las líneas de alimentación
La parte de Potencia evidentemente ha de estar protegida para evitar accidentes al manipular pero esto es así en todos los casos al manejar más de 24 V tanto en DC como en AC
Opino que implementar tantas fuentes conmutadas no es una buena solución ya que trabajan internamente a 30 khz y por consiguiente son fuentes de radiación de interferencias magnéticas. Para el control de la placa yo aconsejo una Batería de litio recargable, y bien filtrada con condensadores electrolíticos. Me refiero que la alimentación del Atmega sea independiente totalmente de las demás lineas de alimentación. Con ello tenemos una estabilidad absoluta en la alimentación más todavía si se alimenta desde una batería de litio recargable.
Sobre la pantalla….porque ha de ser interfaz paralelo ¿ una interfaz Serie te requiere solo tres cables y es mucho más fácil de implementar.

manumoli:
Para que quieres subir a los 20 MHhz ¿ un microcontrolador a 16 Mhz ya es potente de sobras, solo es cuestión de optimizar el código de Programa
Estamos hablando de tiempo de instrucción de 20 nanosegundos , mi consejo es que se optimice el código lo suficiente evitando tiempos de espera, delays, y bucles infinitos que enlentecen el programa, con un código bien optimizado el Micro es rapidísimo en su respuesta
Los relés de estado sólido pueden conmutar tanto AC como DC y esta puede ser de 12 o 24 V con lo cual no hay problemas si se manipula en la placa de control. Piensa que una salida a relé te va a producir picos de tensión inducidos en su bobina, y aunque se atenué, siempre produce armónicos en las líneas de alimentación
La parte de Potencia evidentemente ha de estar protegida para evitar accidentes al manipular pero esto es así en todos los casos al manejar más de 24 V tanto en DC como en AC
Opino que implementar tantas fuentes conmutadas no es una buena solución ya que trabajan internamente a 30 khz y por consiguiente son fuentes de radiación de interferencias magnéticas. Para el control de la placa yo aconsejo una Batería de litio recargable, y bien filtrada con condensadores electrolíticos. Me refiero que la alimentación del Atmega sea independiente totalmente de las demás lineas de alimentación. Con ello tenemos una estabilidad absoluta en la alimentación más todavía si se alimenta desde una batería de litio recargable.
Sobre la pantalla….porque ha de ser interfaz paralelo ¿ una interfaz Serie te requiere solo tres cables y es mucho más fácil de implementar.

Gracias por tu respuesta!

  • Quiero hacerlo a 20Mhz porque el micro puede, y como sobretodo se trata de aprender experimentando quiero saber hasta donde puede llegar. Ya se que es mucho más fácil seguir el estándar y hacerlo a 16Mhz, pero entonces: ¿Dónde está la diversión?
  • Quizá una muy buena opción sea implementar relés de estado sólido de carril Din, voy a ver, seguro que deben existir, lo que no tengo tan claro es que existan para trifásica.
  • Si no es mucha molestia, podrías adjuntarme un link con un esquema para implementar el circuito de alimentación con bateria? Es que me parece una idea genial, pero no se ni por donde empezar a meterle mano.
  • La pantalla será con interfaz paralelo porque son mucho más económicas, pero en la placa de la pantalla irá integrado un conversor I2C a paralelo, por lo que efectivamente será como un interfaz serie.

Gracias por tu aporte manumoli!

tengo un problema no me deja subir el esquema, te dejo mi correo electronico para si te interesa que te lo envie via E-mail por aqui no me deja adjuntar archivos creados con POFICAD no se bien por que me lo deniega constantemente, Un saludo svall

manumoli2006@gmail.com

Bueno, seguimos avanzando.
Como el proyecto no tendrá puerto USB, lo programaremos por ICSP. Pero: Es tan difícil!

Publico un problema que he publicado en otros foros, pero pongo aquí para dar continuidad y tenerlo todo centralizado:

Problema con AVRISP mkii con Snow Leopard.

Tengo un mac con el Arduino IDE 1.01, y quiero subir los sketchs y bootloaders a través de un AVRISP mkii que me acabo de comprar en RS. La placa en cuestión es un UNO R3 y un Mega2560 R3.
El tema es que selecciono la placa en el IDE, el programador, conecto el AVRISP al ICSP del arduino con el cable rojo mirando al puntito del puerto, conecto la alimentación al arduino, el AVR se pone con luz verde, le doy a "subir usando programador" se pone otra luz verde en el AVR, y acto seguido:

avrdude: stk500v2_command(): command failed
avrdude: stk500v2_program_enable(): bad AVRISPmkII connection status: SCK fail
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

Y se pone a parpadear en rojo una luz del AVR.

fff estoy atascadísimo! Es que acaso es taaaan complicado?

La verdad es que yo con Mac no tengo experiencia alguna. Siempre ha sido desde PC o compatible
Hasta el punto que yo se, el Bootloader se puede reprogramar desde un Atmega que ya lo tenga hasta otro atmega en una Protoboart
Eso si, siempre el mismo modelo de Atmega evidentemente.
Yo he programado Microcontroladores PIC y no hay dificultad alguna en ello, ya que implementan la comunicacion de datos desde el puerto serie RS232, tan solo se envian los datos desde tres pines hacia el Microcoontrolador poniendo en estado bajo el pin de MCRS
Por lo que yo se del Atmega, se ha de modificar un par de lineas del codigo del Bootloader ants de su grabacion en el Atmega no programado, luego de esto realizar la grabacion, y por ultimo reprogramar las lineas modificas en el master

Por cierto, una duda, ya seleccionas el puerto COM al que envias los datos desde el mac hacia el programador ?
Lo digo esto por que en el PC si se ha de seleccionar previamente el puerto de comunicaciones hacia el Programador
En el caso de los portatiles por ejemplo que no incorporan puerto RS232 se ha de crear un puerto virtual por emulacion con los drivers correspondientes para que el Programador se comunique con el Portatil

Te envio un enlace a una pagina para Mac y la configuracion del Programador que tu utilizas, pero esta todo en ingles no se si te podra ayudar. Un saludo cordial.

http://www.ladyada.net/learn/avr/setup-mac.html

El mensaje de error que te da es un problema de conexionado
Estos son los pines de conexion del puerto ICSP
1- VPP: Tensión de programación.
2- VDD: Alimentación positiva.
3- VSS: Alimentación negativa
4- ICSPDAT / PGD / DATA: Datos.
5- ICSPCLK / PGC / CK: Reloj.

Es posible que la configuracion del programador no se corresponda con este esquema en la placa que contiene el Atmega, deberias de verificar este punto en concreto. Un saludo

Bueno, parece ser que parte del problema está solucionado.
Al parecer mi estupidez es solo superada por mi ignorancia: Estaba usando el conector ICSP equivocado. Se ve que tanto el UNO como el MEGA2560 tienen DOS conectores ICSP, uno para programar situado justo al lado del AREF, y otro no se para que pero mucho más accesible.

Pues ahora el error que me sale es:

  • Microcontrolador encontrado incorrecto. Expected signature for ATMEGA328P is 1E 95 0F.
    Eso probado con dos Arduino Uno oficiales y correctamente seleccionados en el IDE.

Por otra parte, tengo otra pregunta: existe algun IC como el CD74HC4067E pero con una señal de interrupción?
Es que estamos probando la expansión de I/O, tanto con multiplexación como con buses, y veo que en las entradas es imprescindible la salida a interrupción, pues de no disponer de ella si el programa del micro esta liado haciendo lo que sea en el loop puede no detectar la pulsación de por ejemplo un botón.
Por lo tanto: Es imprescindible la ejecución de interrupciones como mínimo en las entradas.
¿Algun IC recomendado?

Estas seleccionado mal el Microprocesador. El Aurdino Uno usa el Atmega 328-PU
Y es posible que en programador tenga seleccionado por defecto el Atmega 328-P
Verifica este punto que es muy sutil pero produce muchos dolores de cabeza
A tu segunda pregunta, todos los Integrados Multiplexores disponen de un pi n ENABLET
, pero ten en cuenta que esta señal que se activa a nivel bajo afecta a todas sus entradas o salidas, es decir, las inhibe en grupo no de forma individual.
Es decir. La señal de interrupción afecta al chip Multipelxor, tendrás por lo tanto que implementar por Software que esta señal también sea reconocida en el ciclo de programa
Se me ocurre que tendrás que implementar una entrada directa de interrupción hacia un pin libre del Atmega, o en su caso, implementar a circuitería lógica cableada lo cual complica bastante el tema a mi entender. Un saludo

Ok, problema solucionado. Al final, como no, una tonteria: Cuando hacía las pruebas, conectaba los pines del Arduino a unos interruptores y demás que tenía a la breadboard, y justo estaban usando los pines 13, 12 y 11, por lo que al ser compartidos con los del ICSP daba error.
Así que: Moraleja: Desconecta los pines antes de hacer upload con ICSP.

Sobre los multiplexores, la idea es que para los que sirven para entradas, notifiquen via interrupción a la CPU que hay un cambio y por lo tanto se ejecute via interrupción la lectura de los integrados, todos ellos.

Alguien conoce algun software sencillo de usar para maquetar el cableado en placas perforadas de una cara de 2,54 mm. de separación?

Estoy pasando las pruebas individuales de las breadboards a una placa perforada de una cara y 2,54 mm. tamaño eurocard, y antes que liarme a soldar a lo loco los componentes, quisiera hacerme un esquema.

Por que no utilizas PROTEUS....aparte de crearte el esquema, podras simular el circuito antes de cablearlo.
Yo como Software para diseño de placas PCB conozco varios....pero placas perforadas de 2,54 entre nodos....desconozco que haya alguno, cosa que dudo puesto que hace referencias a prototipos no a diseños ya profesionales.

Hola svalls,

La velocidad máxima del 2560 es 16Mhz, no 20Mhz -->http://www.atmel.com/devices/atmega2560.aspx

A ver si nos cuentas que tal lo llevas!

Un saludo

Muy buenas,

A finales de Enero tendremos hecho el primer prototipo de una de las 5 pcb en que consta el proyecto. Nuestra intención es hacer una pcb por mes, para acabar a finales de Mayo. Pero claro: dependera de lo que tardemos en afinar las versiones beta.

Como el coste se ha disparado, seguramente nos veais aparecer en kickstarter.com.
Por cierto, no se si lo comenté, al final el proyecto se llamará Workduino.com, cuando tenga tiempo ya haremos la web.

Ya daré más detalles cuando los tenga, y si veis que me olvido responder a este post, que estoy suscrito y recibo las contestaciones por mail.

svalls:
Alguien conoce algun software sencillo de usar para maquetar el cableado en placas perforadas de una cara de 2,54 mm. de separación?

Estoy pasando las pruebas individuales de las breadboards a una placa perforada de una cara y 2,54 mm. tamaño eurocard, y antes que liarme a soldar a lo loco los componentes, quisiera hacerme un esquema.

fritzing? o cualquir ploteador configurado para que salte cada 2.54, egle lo hace y pones el tipo de ruteado a 90 grados

Hola ,mi nombre es raul ,hace poco he terminado una maquina industrial con arduino mega , tengo tambien el problema de la pantalla , sin embargo arduino tras muchas horas de funcionamiento , sin problemas .
Tengo practicamente todos los pines ocupados , utilizo sensores inductivos a 12vdc sin optoacoplar ,sin problemas.
He conseguido una caja para PLC carril DIN , creo que podria tener salida comercial un sistemas soportado con arduino .
Referente al display , creo que una buena solucion seria , utilizar contactores electronicos .
Estoy pensado en una shield para arduino due con clemas , un codigo comun basico , y librerias .
Alguien se apunta .
Saludos colegas .

Mi correo rauldora2@gmail.com o rauldora2@hotmail.com . tlf 661734172

Prueba a poner un diodo 1N4007 en los contactores. A mí me dejó de hacer cosas raras el display

DR002:
Hola ,mi nombre es raul ,hace poco he terminado una maquina industrial con arduino mega , tengo tambien el problema de la pantalla , sin embargo arduino tras muchas horas de funcionamiento , sin problemas .
Tengo practicamente todos los pines ocupados , utilizo sensores inductivos a 12vdc sin optoacoplar ,sin problemas.
He conseguido una caja para PLC carril DIN , creo que podria tener salida comercial un sistemas soportado con arduino .
Referente al display , creo que una buena solucion seria , utilizar contactores electronicos .
Estoy pensado en una shield para arduino due con clemas , un codigo comun basico , y librerias .
Alguien se apunta .
Saludos colegas .

Mi correo rauldora2@gmail.com o rauldora2@hotmail.com . tlf 661734172

asi?
http://www.winkhel.com/index.php/es/inicio.html