viernes, 22 de octubre de 2010

Petición de ayuda

En el artículo anterior, he comentado la reunión del grupo LCTM en Alicante que tuvo lugar recientemente, y en la que yo asistí con mi sistema de control, para que lo viesen en directo algunas personas que me habían manifestado su interés.

Sin embargo, la demostración que pude hacer, se limitó a mostrar el programa y la forma de definir un esquema de vías y el manejo de los aparatos desde el  ordenador, pero sin que al otro lado del cable conectado al PC hubiese realmente una serie de aparatos de vía funcionando.

Lo suyo hubiese sido montar un pequeño circuito de vías, con un par de desvíos al menos, y mostrar el manejo de los mismos, e incluso hacer circular algún tren. Como ya dije en el artículo anterior no dispongo de material de vía sobrante para poder hacer esta demostración. Sin embargo llevé un par de desvíos sueltos para que al menos se pudiese ver que funcionaban.

Como ya he comentado anteriormente en mi instalación tengo completamente separadas la alimentación digital de 5 V de la alimentación analógica de 12 V. Hay dos fuentes distintas con transformadores independientes. Sin embargo, para esta demostración, no quise llevar las dos fuentes con sus dos trafos, porque son muy engorrosas y voluminosas, y, porqué no decirlo, pueden dar la impresión de que mi sistema es mucho más complejo de lo que es en realidad. Así que decidí llevar una alimentación portátil de 12 voltios (de las se ponen en un enchufe de pared) para la corriente analógica. Y se me ocurrió que como el cable USB proporciona una alimentación de 5V, de hecho la placa de Micropik se alimenta así, sacar de allí un cablecillo y llevar esos 5 V a alimentar los circuitos integrados de mis placas. Lo probé y funcionó, así que me llevé este simple montaje a Alicante

Sin embargo cuando llegué allí y volví a montar el circuito no conseguí que funcionase. Es más empezaron a aparecer mensajes extraños en el ordenador ("Se ha superado la capacidad del Puerto de Comunicaciones") así que me vi obligado a hacer las demostraciones sin el hardware conectado. Como consecuencia de todo esto me vine convencido de que me había cargado la placa de comunicaciones de Micropik.

Al llegar a Madrid, desmonté el famoso cablecillo de alimentación de 5V lo conecté todo como había estado siempre. Descubrí que lo que se había estropeado era una de las placas del demultiplexor, lo cual no me preocupa, porque tengo 11 más y además supongo que con cambiarle el chip se solucionará el problema.

Supongo que el problema se debió a uno de los típicos casos que ocurren cuando se juntan masas analógicas y digitales, así que bendigo el momento en decidí tener absolutamente separadas ambas alimentaciones con sus dos fuentes distintas, y también la alimentación que proviene del USB.

En resumen que ya he vuelto a colocar los elementos que me llevé en su lugar y está todo funcionando otra vez, como antes del viaje a Alicante.

Sin embargo todo esto me ha llevado a la preocupación de que el corazón de mi sistema está basado en la placa de comunicaciones de Micropik, que es un elemento comprado y que no puedo reproducir, porque lleva un microcontrolador programable y yo no tengo ni medios ni conocimiento para programar un microprocesador.

Hasta aquí, hay un motivo de preocupación que ya había comentado, y que precisamente en Alicante me hizo interesarme en el famoso Arduino por si podía solventar esa dependencia tan crítica de mi sistema. Sin embargo en los últimos días esa preocupación ha pasado a un franco disgusto porque he visto que de la página Web de Micropik ha desaparecido la placa de comunicaciones USB1188.

Me disgusta sobremanera, en primer lugar porque me dejan "vendido" ante cualquier problema, De hecho ya había pensado en alguna ocasión pedirles alguna placa adicional para tenerla de repuesto o para algún montaje alternativo, por ejemplo para demostraciones. Y en segundo lugar porque yo he explicado en este blog este sistema y bastantes lectores se han mostrado interesados en reproducirlo para sus maquetas. Ahora todos los que tuvieran esa intención van a quedar defraudados. Incluso todos los enlaces que hay en este blog a la página de MicroPik apuntando a esa página quedan ahora como enlaces rotos.

Pero no acaba aquí la cosa: He intentado ponerme en contacto con Micropik para averiguar si tienen intención de retirar definitivamente este elemento o van volver a fabricarlo o sustituirlo por otro producto similar, y me encuentro con que el correo electrónico que aparece en su página Web como contacto, y que ya utilicé en ocasiones anteriores ¡¡ no funciona !!.

Supongo que esta empresa está como tantas otras en crisis, y que no reponen sus existencias, posiblemente con la perspectiva de cerrar, o al menos de dedicarse a meros distribuidores, sin intención de fabricar elementos propios, como era el caso de estas placas.

Así que sintiéndolo mucho, por mis lectores y por mi mismo, creo que habrá que buscar alguna solución alternativa aunque de momento, mientras mi placa funcione voy a continuar con ella.

Un amable lector de este blog (raulnd) puso un par de comentarios en el artículo anterior, acerca de Arduino y sus alternativas. Como parece que está bastante puesto en esta materia, le rogaría que si lee este artículo, escriba una respuesta recomendando lo que él usaría en esta situación. En concreto se trata de recibir la señal que proviene del ordenador por la conexión USB y presentarla en ocho bits de salida, y también recibir una señal de 8 bits de entrada y transmitirla por USB al ordenador. Desde el PC la señal de entrada y salida se maneja mediante un puerto de comunicaciones COM3 o COM4

Por supuesto la petición se hace extensiva a cualquier otro lector que pueda aportar una solución.

8 comentarios:

  1. Yo solo puedo decirte que me ha gustado el Arduino y voy a intentar usarlo en la estación oculta. Hay toneladas de información en Internet sobre el arduino y creo que es un microcontrolador que tiene cantidad de ejemplos y proyectos realizados con lo cual hay mucho código escrito que podemos reutilizar en nuestros proyectos. Mi modesta opinión es que es una buena elección, obviamente tengo cero experiencía con Arduino pero estoy pensando en comprarme uno y comenzar.En cuanto disponga de "pasta" me lo compro.Animo compañero.

    Un saludo

    Javier

    ResponderEliminar
  2. Hola Ignacio, he estado mirando la placa "Wiring" y me parece que puede serte muy util, tiene 6 puertos de 8 bits de entrada/salida, con lo que podrías controlar hasta 6 demultiplexores.

    Esquema de puertos:
    http://wiring.org.co/hardware/#digitalports

    Ejemplo de uso de un puerto. El ejemplo muestra un contador binario de 0 a 255 encendiendo y apagando 8 leds:
    http://wiring.org.co/learning/basics/ledport.html

    Y una modificación del ejemplo para sacar por el puerto de salida el byte que llegue por el puerto serie:

    /***************************************/

    // Puerto de salida
    int port = 0;

    // Valor a recibir por puerto serie
    byte value = 0;


    void setup()
    {

    // Inicialización del puerto de salida
    portMode(port, OUTPUT);

    // Inicialización del puerto serie
    Serial.begin(9600);

    }

    void loop()
    {
    // Si hay datos en el puerto serie leemos un
    // byte y lo enviamos al puerto de salida
    if( Serial.available() > 0) {
    value = Serial.read();
    portWrite(port, value);
    }
    }

    /***************************************/


    No se si esto funcionaría en Arduinio, lo voy a probar y te digo algo.

    Espero haberte sido de ayuda.
    Saludos.

    ResponderEliminar
  3. Hola de nuevo, ya lo he probado en Arduino, y a pesar de usar el mismo lenguaje que Wiring, Arduino no tiene definidas las funciones de acceso a puertos. La única manera que hay es hacerlo a bajo nivel, y no siempre se pueden usar los 8 bites:

    http://www.arduino.cc/en/Reference/PortManipulation

    Lo que si se puede hacer es descomponer el byte obtenido por el puerto serie en 8 bits y asignarlos uno a uno a pins de salida. Pero mi opinión es que esta solución es algo engorrosa y lenta de ejecutar por el micro.

    Creo que la mejor opción es "Wiring", pero al no tener una placa para hacer pruebas no puedo decir que esta sea la solución correcta.

    Saludos.

    ResponderEliminar
  4. Muchas gracias por vuestro interés.

    Mi problema es que soy absolutamente novato en este campo y como en efecto hay "toneladas de información" no se por dónde empezar. No se siquiera si debo elegir un dispositivo tipo Arduino o un programador que me permita programar muchos tipos de PIC. No tengo criterio para decidirme por una u otra opción y ni mucho menos por uno u otro dispositivo.

    En cuanto al software de programación, se que hay también muchos, pero supongo que unos serán válidos para unos dispositivos y no para otros, y los habrá más o menos universales y más o menos fáciles de utilizar.

    No me asusta la programación, porque he sido programador toda mi vida laboral, pero siempre con lenguajes de alto nivel (últimamente casi todo VisualBasic) así que el pequeño programa que me incluyes me suena a chino.

    En resumen ¿¿¿ Por donde empiezo ???

    ResponderEliminar
  5. Los PIC suelen programarse en ensamblador o en C, han salido algunos compiladores como PicBasic o GCBasic pero por lo que he leido dejan mucho que desear.

    Con respecto a Arduino o a Wiring, se programan en un lenguaje de alto nivel muy parecido a C, por ejemplo el código que he puesto antes (para placas Wiring). Ese código tal cual está es un dispositivo de 8 salidas (0..7) a partir de un USB. Cambiando la variable port puedes controlar otras 8 salidas (port=1 --> salidas 8..15). Así, con la placa de demultiplexores y 6 puertos de salida de 8 bits cada uno puedes llegar a controlar hasta 1536 salidas.

    Yo personalmente también soy programador de VB y ahora estoy empezando a trabajar con PIC. Cuesta un poco acostumbrarse a pensar en memorias limitadas, movimientos de bits, tipos de datos no dinámicos... Pero todo es acostumbrarse, en definitiva, un algoritmo es un algoritmo en C, en VB, en Java... El problema de pic es el que hay que hacerselo todo uno mismo, como por ejemplo la comunicación USB con un chip FTDI.

    Tengo que mirar mas a fondo Netduino (http://www.netduino.com), un Arduino programable con .Net Micro Framework de Microsoft, creo que utiliza C# pero en un futuro se podrá programar en VB.Net.

    En definitiva:
    Facilidad y resultados inmediatos: Arduino
    Complejidad y fiabilidad: PIC

    Espero no estar metiendote más dudas en la cabeza.
    Un saludo.

    ResponderEliminar
  6. Como decia hay mucha información en Internet.Aqui un par de enlaces para poder integrar el IDE de Java con Arduino y segun explican algunas API que usa Java.Estoy de acuerdo un algoritmo es igual en cualquier lenguaje y si ya tienes experiencia programando no te sera dificil hacerte con un nuevo lenguage.

    http://java.dzone.com/news/arduino-development-using

    http://silveiraneto.net/2009/03/01/arduino-and-java/

    http://www.malditoraton.com/arduino-0017-y-java/

    Saludos


    Javier

    ResponderEliminar
  7. Bueno, muchas gracias a los dos.

    De momento aparco el tema, pero no lo olvido. Voy a seguir buscando toda la información que pueda, y por lo que me dice Raul creo que voy a orientarme hacia los PICS. De hecho mi primer objetivo sería reproducir exactamente la placa de Micropik, que lleva un PIC18F2550.

    Seguramente el camino es algo más complejo que los Arduino y compañía, pero como en efecto tengo experiencia en programación no creo que tenga demasiados problemas.

    ¿Alguna sugerencia para el software de programación? He comprado un libbro sobre "PIC BASIC"

    Conoceis este programador?:

    http://es.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=7055195

    ¿Alguna otra sugerencia?

    ResponderEliminar
  8. No conocía el PIC18F2550, pero es una pasada, lleva inegrado el driver USB.

    Con respecto al programador, yo uso uno parecido pero más sencillo, es este:
    http://cgi.ebay.es/ws/eBayISAPI.dll?ViewItem&item=230527592441

    Acabo de instalarme la demo de Pic Basic, voy a testearlo.

    Saludos.

    ResponderEliminar

Gracias por expresar tus opiniones.

Los comentarios aparecerán en el blog normalmente en unos pocos segundos