Cuando ya tuvimos el código preparado, todos los componentes hardware conectados, y el desarrollo de la interfaz de usuario terminada, llegó el momento de hacer pruebas.
Fue justo en este momento cuando nos encontramos con un fenómeno curioso, extraño y desesperante a la vez. No siempre pasaba, pero al arrancar o apagar el compresor desde el PIC32, se perdía la sincronización del USB, con lo cual la comunicación entre la interfaz de usuario y el PIC32 se perdía y nos tocaba reiniciar todo el sistema.
Un suceso muy desesperante, pues por mucho que modifiqué el código del USB en el PIC32 no conseguimos ninguna solución.
Lo primero que pensamos fue que debido al alto consumo del compresor teníamos algún efecto (un armónico, o caida/subida de tensión, etc...) que nos llegaba desde la alimentación (ya que al final los dos componentes usan la misma fuente de alimentación). Así que nos liamos a separar las alimentaciones. Pero descubrimos que no, que seguía pasando el mismo fenómeno.
Lo siguiente fue cambiar el compresor (a ver si eso...), pero no, seguía pasando, incluso peor, con el nuevo compresor en el 100% de los casos, al arrancar el compresor, se perdía la comunicación USB.
También intentamos proteger el USB, pero sin ningún resultado.
Haciendo pruebas llegamos a desconectar completamente el compresor, tanto la alimentación como las señales, y lo arrancábamos/parábamos manualmente con un interruptor aislado, pero nada, seguía pasando lo mismo, al arrancar el compresor, se queda dañada la comunicación USB...
Así que acudimos a preguntar en foros, y a consultar a expertos. Ya teníamos un sospechoso, las emisiones electromagnéticas que se tienen que estar produciendo en el arranque del compresor. Las consultas confirmaros nuestras sospechas.
Lo que nos aconsejaron fué utilizar un filtro RC en la alimentación del compresor para absorber las radiaciones. Y trenzar todos los cables (en especial los de alimentación y señales del compresor) ya que el cableado podía estar haciendo un efecto de antena.
Y parece que esa es la solución, en nuestras últimas pruebas, ya no se ha vuelto a producir el maligno efecto "compresor-caida del USB".
11 septiembre 2014
04 septiembre 2014
Desarrollando el programa para el PIC32
Al principio del proyecto, mientras estuve en Alemania e Italia, no tenía ningún dispositivo físico para poder probar lo que iba desarrollando. Así que tan sólo pude hacer algunas pruebas sobre el simulador, para aclarar los conceptos y preparar código de algunos temas básicos como las interrupciones (sumamente importantes para los PIC).
Así que en Alemania hice el corazón del programa, desarrollando la estructura, planteando todas las funciones y dejando establecida la lógica que regirá el funcionamiento de mi proyecto.
El entorno de trabajo (MPLAB X) no es complicado de usar, tiene muchos pequeños detalles muy de agradecer por los desarrolladores, aunque a veces tiene funcionamientos extraños (a veces muestra errores donde no los hay, o dice que el proyecto no tiene ficheros, cuando está lleno de código....) que supongo irán depurando y solucionando.
En Junio. y ya en España, insistí mucho en que necesitaba una placa de pruebas para poder seguir con el desarrollo, y me proporcionaron el Ethernet Startet Kit de Microchip. Esta es una interesante placa de pruebas, tiene conexiones Ethernet y USB, y para poder trabajar con entradas/salidas estandard, tiene 3 pulsadores y tres led con los que trabajar. El PIC que monta es un PIC32MX795F512L, más avanzado que el que vamos a utilizar en el proyecto, pero como punto de partida (y hasta que tenga la placa real para poder probar), me vale.
Con eso ya pude completar el desarrollo, por fín pude comprobar como se trabaja con las interrupciones y pude ajustar bien el tema de tiempos (con los simuladores no se puede). Y lo más importante, pude empezar con el desarrollo de las comunicaciones USB.
La placa de control (con el PIC32) hará las funciones de un dispositivo USB, así que tuve que buscar información y ejemplos de como implementar el USB. Por suerte Microchip distribuye una amplia colección de ejemplos con su librería Harmony (y muchos otros en su propia web), y como todo el tema corría prisa, decidí partir del ejemplo de dispositivo USB CDC (en el PC se ve como un dispositivo Serie), e ir avanzando.
Por desgracia la mayoría de la información que se puede encontrar en internet se refiere a la antigua librería de Microchip (deprecada y retirada para los PIC32), así que hay que usar solamente lo que proporciona el fabricante (Microchip Harmony).
Como ya comenté estas librerías han sufrido muchos cambios en poco tiempo (espero que la recién publicada versión 1.00 sea más estable que las anteriores), y me ha tocado rehacer varias veces parte del código para utilizar una versión más actualizada (y todo esto un poco a ciegas, puesto que Microchip no publica los cambios entre versiones, ni cuales son los errores corregidos entre una y otra).
Pero lo conseguí, finalicé el código del proyecto, incluyendo las comunicaciones USB, y otros temas delicados como el conversor analógico digital (ADC), y las comunicaciones I2C (aunque con este último me tuvieron que echar una mano, lo reconozco).
(continuará)
Así que en Alemania hice el corazón del programa, desarrollando la estructura, planteando todas las funciones y dejando establecida la lógica que regirá el funcionamiento de mi proyecto.
El entorno de trabajo (MPLAB X) no es complicado de usar, tiene muchos pequeños detalles muy de agradecer por los desarrolladores, aunque a veces tiene funcionamientos extraños (a veces muestra errores donde no los hay, o dice que el proyecto no tiene ficheros, cuando está lleno de código....) que supongo irán depurando y solucionando.
En Junio. y ya en España, insistí mucho en que necesitaba una placa de pruebas para poder seguir con el desarrollo, y me proporcionaron el Ethernet Startet Kit de Microchip. Esta es una interesante placa de pruebas, tiene conexiones Ethernet y USB, y para poder trabajar con entradas/salidas estandard, tiene 3 pulsadores y tres led con los que trabajar. El PIC que monta es un PIC32MX795F512L, más avanzado que el que vamos a utilizar en el proyecto, pero como punto de partida (y hasta que tenga la placa real para poder probar), me vale.
Con eso ya pude completar el desarrollo, por fín pude comprobar como se trabaja con las interrupciones y pude ajustar bien el tema de tiempos (con los simuladores no se puede). Y lo más importante, pude empezar con el desarrollo de las comunicaciones USB.
La placa de control (con el PIC32) hará las funciones de un dispositivo USB, así que tuve que buscar información y ejemplos de como implementar el USB. Por suerte Microchip distribuye una amplia colección de ejemplos con su librería Harmony (y muchos otros en su propia web), y como todo el tema corría prisa, decidí partir del ejemplo de dispositivo USB CDC (en el PC se ve como un dispositivo Serie), e ir avanzando.
Por desgracia la mayoría de la información que se puede encontrar en internet se refiere a la antigua librería de Microchip (deprecada y retirada para los PIC32), así que hay que usar solamente lo que proporciona el fabricante (Microchip Harmony).
Como ya comenté estas librerías han sufrido muchos cambios en poco tiempo (espero que la recién publicada versión 1.00 sea más estable que las anteriores), y me ha tocado rehacer varias veces parte del código para utilizar una versión más actualizada (y todo esto un poco a ciegas, puesto que Microchip no publica los cambios entre versiones, ni cuales son los errores corregidos entre una y otra).
Pero lo conseguí, finalicé el código del proyecto, incluyendo las comunicaciones USB, y otros temas delicados como el conversor analógico digital (ADC), y las comunicaciones I2C (aunque con este último me tuvieron que echar una mano, lo reconozco).
(continuará)
03 septiembre 2014
Iniciando un proyecto con un PIC32
Hace mucho que no escribo aqui, y la verdad es que es imperdonable por mi parte, y más cuando estoy metido en un proyecto que da para muchas entradas...
Por medio de una amiga he entrado en un proyecto de desarrollo de una máquina más o menos compleja, con varios componentes hardware como una bomba, un compresor, sistemas de refrigeración, sondas de temperatura, controles de drivers externos, etc...
La parte que verá el usuario es una interfaz gráfica hecha en Java que corre en una placa Nitrogen (que al final es como un pequeño ordenador), y el control de todos los dispositivos hardware se realiza desde un microchip PIC32 (concretamente un PIC32MX575F256H) montado en una placa que otra gente del equipo ha diseñado para ello.
La parte de la que me encargo yo es de la programación del PIC32. Esto supone un reto, y una forma de volver a acercarme a la parte "hardware" de la informática, aunque como la programación se realiza en C (mejor dicho, un "C" adaptado por el fabricante) no me ha costado demasiado realizarlo.
Ya habíamos hecho algunas reuniones para ir aclarando puntos, pero no recibí las primeras especificaciones hasta finales de Mayo, cuando me tocó ir a Alemania e Italia por cosas de trabajo.
Así que acudí a la página de Microchip (el fabricante de los PIC) para bajarme el entorno de desarrollo (el MPLAB X). Y descubrí, con alivio, que este entorno de trabajo proporciona un simulador que viene muy bien para las tomas de contacto con la herramienta. Evidentemente me bajé toda la documentación que encontré sobre estos micros, así como códigos de ejemplo, librerías, etc...
Y ahí empezaron mis problemas. Descubrí que las librerías que la mayoría de desarrolladores utilizan en sus proyectos con los PIC están descatalogadas para los PIC32, y me tocó acudir a unas librerías de Microchip denominadas Harmony. Estas librerías aún no se encuentran en una situación estable, e incluso cambian bastante entre una release y la siguiente. Lo que me ha obligado a quedarme atado a una versión en concreto para evitar problemas (hasta hace unas semanas no han sacado la versión "1.0", y cuando empecé con todo esto la versión disponible era la "0.7").
(continuará)
Por medio de una amiga he entrado en un proyecto de desarrollo de una máquina más o menos compleja, con varios componentes hardware como una bomba, un compresor, sistemas de refrigeración, sondas de temperatura, controles de drivers externos, etc...
La parte que verá el usuario es una interfaz gráfica hecha en Java que corre en una placa Nitrogen (que al final es como un pequeño ordenador), y el control de todos los dispositivos hardware se realiza desde un microchip PIC32 (concretamente un PIC32MX575F256H) montado en una placa que otra gente del equipo ha diseñado para ello.
La parte de la que me encargo yo es de la programación del PIC32. Esto supone un reto, y una forma de volver a acercarme a la parte "hardware" de la informática, aunque como la programación se realiza en C (mejor dicho, un "C" adaptado por el fabricante) no me ha costado demasiado realizarlo.
Ya habíamos hecho algunas reuniones para ir aclarando puntos, pero no recibí las primeras especificaciones hasta finales de Mayo, cuando me tocó ir a Alemania e Italia por cosas de trabajo.
Así que acudí a la página de Microchip (el fabricante de los PIC) para bajarme el entorno de desarrollo (el MPLAB X). Y descubrí, con alivio, que este entorno de trabajo proporciona un simulador que viene muy bien para las tomas de contacto con la herramienta. Evidentemente me bajé toda la documentación que encontré sobre estos micros, así como códigos de ejemplo, librerías, etc...
Y ahí empezaron mis problemas. Descubrí que las librerías que la mayoría de desarrolladores utilizan en sus proyectos con los PIC están descatalogadas para los PIC32, y me tocó acudir a unas librerías de Microchip denominadas Harmony. Estas librerías aún no se encuentran en una situación estable, e incluso cambian bastante entre una release y la siguiente. Lo que me ha obligado a quedarme atado a una versión en concreto para evitar problemas (hasta hace unas semanas no han sacado la versión "1.0", y cuando empecé con todo esto la versión disponible era la "0.7").
(continuará)
19 junio 2014
16 mayo 2014
Viaje a Leipzig (IV): mejor nos vamos a Italia
El proyecto en tierras alemanas ha resultado ser un completo desastre. Espero que nuestra experiencia no sepueda extrapolar a toda la población alemana, por su bien.
La fama de personas frías y distantes se la tienen bien ganada. No hablan ni saludan, salvo lo justito, mantienen mucho las distancias, son como su clima, frío y nada acogedor.
Hacen sus horas diarias de forma muy puntual, llegan a trabajar con una tremenda puntualidad, y con la misma se van al acabar su jornada de trabajo (no hacen ni un minuto de más, ni de menos). Lo normal era empezar a trabar a las 8.30 y a las 16.30 se acaba la jornada. De forma que los españoles eramos los que solíamos cerrar la oficina todos los días.
La mayoría comía delante del teclado, calentaban el taper y lo comían mientras seguían conectados al ordenador. Además la hora de comida es muy temprana, entre las 11.30 y las 12.30... Y nosotros acabábamos comiendo solos prácticamente todos los días.
En cuanto al trabajo, les gustan las reuniones, mucho, pero mucho. Todas las semanas tenían reuniones de toda la oficina, que duraban horas. Y luego muchas reuniones por cada grupo de trabajo. No sé si tendríamos que sentirnos excluidos por que nunca estuvimos en ninguna...
En nuestro proyecto no hay documentación, ni está claro lo que hay que hacer, ni siquiera tenemos clara la estructura jerarquica, y parece que les tiene sin cuidado lo que hagamos o dejemos de hacer..
Aunque pensándolo fríamente, creo que el problema era que el proyecto es para una empresa Italiana, y el trabajo lo íbamos a realizar unos españoles, aunque el producto sea aleman... ¿posiblemente los alemanes sufran de un chovinismo aún mayor que el que se les supone a los franceses?
Otra cosa que nos ha quedado muy clara de los alemanes es que la fama de cabezas cuadradas se la ganan a pulso. Cuando tienen una idea es imposible hacérsela cambiar, da igual que sea correcta o equivocada, ellos escogen un camino y no admiten separarse ni medio paso de la ruta que han fijado... Simplemente bajan la cabeza y siguen todo recto, ignorando completamente todo lo que hay a su alrededor...
Lo cierto es que hemos decidido acabar cuanto antes nuestro trabajo en Alemania, pues no es productivo, ni vemos que produzca ningún tipo de avance. Y por ello adelantamos nuestro viaje a Italia, que es donde está el cliente, donde están las máquinas y donde se realizará el trabajo.
En concreto, ya llevamos más de una semana en Milán... (últimamente no le he hecho ni caso al blog....)
Suscribirse a:
Comentarios (Atom)



