domingo, 30 de octubre de 2011

Introducción a los Microcontroladores PIC


Es el momento de dedicar una entrada a todos aquellos usuarios amantes de la electrónica. He de confesar, que mis conocimientos en éste campo son realmente escasos. Pero no por ello nulos. Con lo cual voy a contaros un par de cosas acerca de Microchip, y unos componentes muy interesantes y de coste reducido que están dando que hablar los últimos años. Los microcontroladoes PIC.

¿Qué demonios es un PIC?

Según este fragmento sacado de la wikipedia española:
Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de General Instrument.
El nombre actual no es un acrónimo. En realidad, el nombre completo es PICmicro, aunque generalmente se utiliza como Peripheral InterfaceController (controlador de interfaz periférico).
Para los seres humanos, en apariencia un PIC es un circuito integrado (objeto rectangular negro, con letras blanquecinas ilegibles y bastantes patas). Hay muchos componentes que responden a esta descripción y no necesariamente tienen que ser ni PIC's ni microcontroladoes. Asique no vayamos a meter la pata cuando veamos cualquier cosa que se le parezca.

Los PIC como se cita ahi arriba, son un producto de la multinacional Microchip. Hay otras casas que fabrican microcontroladores, como Motorola, Atmel, Dallas Semiconductor, Intel, Philips, Siemens, Temic, etc. Sin embargo no tengo ninguna experiencia con otras marcas.

¿Para que sirve un microcontrolador?

La respuesta es sencilla. Sirve para "todo". Un microcontrolador es muy parecido al procesador de tu ordenador. Parte de la arquitectura Harvard. Tiene una unidad de control, una ALU, memoria de código y de datos separadas, un sistema bastante interesante de E/S, etc. Es decir, puede recibir señales de sensores u otros periféricos, y actuar en consecuencia.

Un ejemplo práctico de todo ésto que se hace en prácticas de Tecnología de Computadores se me ocurre ahora mismo es un termostato. Tenemos repartidos por casa unos sensores de temperatura y una caldera calefactora. La idea es que al pasar por debajo de 15ºC, la calefacción comience a calentar la casa. Pero para evitar escenas como la del final del señor de los anillos, también nos interesa que al llegar a 21ºC el sistema se detenga. Ésto es precisamente lo que hizo famosos a los microcontroladores. Con unos conocimientos no muy amplios de electrónica digital y un escaso presupuesto, podemos hacer desde unas luces de navidad, hasta una nevera que nos dispare una cerveza directa al sofá. Bueno, no os voy a engañar. Todos los comienzos son duros, y hay que tener una buena base de electrónica y ensamblador para hacer algo decente.

Como siempre me gusta hacer, os voy a poner un ejemplo de la relacción conocimientos-resultados. Con 16 años, la ley de ohm, y un datasheet del PIC 16F84, (y la siempre incuantificable ayuda de mi padre) me hice un juego de luces al estilo kit, el coche fantástico. No parece gran cosa, pero Albert Einstein tuvo que aprender a sumar antes de ponerse a hablar de la relatividad.

Ahora voy a explicaros un poco (muy poco) como se afronta un proyecto con microcontroladores PIC.

  • Lo primero es pensar bien, qué quieres hacer y qué necesitas. Y hacerte con todo ello. Cables, herramienta para pelar cables, fuente de alimentación estabilizada de mínimo 5 voltios, un PC, un programador compatible con el PIC, un PIC, y recomiendo MUY encarecidamente, una placa como ésta, y los sensores, motores, etc.
  • Lo segundo es obtener un IDE (Integrated Developement Enviroment) como MPLAB. Con éste sowftware escribiréis y suimularéis el programa que va a ejecutar vuestro PIC. Necesitaréis conocimientos de lenguaje ensamblador, y tener el datasheet a mano. En él, además de toda la información electrónica y física del aparato, viene el juego de instrucciones que maneja. En microchip.com podéis descargaros cualquier datasheet de sus productos gratuitamente y sin registro.

Consideraciones:

El programador
Recomiendo PicKit 2 en ebay. Cualquier versión china sirve. Pero tendrá lo bueno y lo malo de ser chino.
Será una copia del original que fabrica microchip, pero mucho más barato. Si dispones de amplio margen presupuestario, cómprate el original. Viene con garantía. Pero no nos precipitemos. Antes de comprar nada, hay muchos términos que debéis conocer. Como por ejemplo, lo que es "debug en circuito". Es algo que explicaré en el futuro.

El proyecto
Comenzad con un proyecto sencillo. Hacer parpadear un led, hacer un juego de luces con varios led, etc.


El PIC
Una vez que tenemos claro lo que queremos hacer, hay que elegir el pic. Para empezar yo utilizaría el PIC 16F84A. Es el que os comente antes. Y para cosas sencillas teneis para una temporada. No lo mencioné porque no quiero alargar mucho el post. Pero veremos que los PIC tienen una memoria Flash que permite reprogramarlos muchas veces con distintos programas. Y el programa es un fichero hexadecimal que podemos guardar en nuestro PC. De manera que el trabajo que hayamos hecho, nos puede servir en el futuro.

La información
La información más técnica y concreta sacadla de microchip.com si vuestro nivel de inglés lo permite. No suelen equivocarse. Sino recurrid a la comunidad en vuestro motor de búsqueda preferido. Hay mucha información y tutoriales.

Para terminar, os comento que hace tiempo que alguien se dió cuenta de lo tedioso que es programar en ensamblador y lo difícil que resulta hacer código reutilizable. Por eso, existe la opción de programar los PIC en lenguaje C. Es una adaptación del C tracidional. Pero los que tengáis conocimientos de C, no encontraréis problema alguno. Lo malo es que el compilador CCS es de pago, y muy caro.

Creo que para introducirnos en el mundo, por hoy es suficiente.

Un saludo.

MarcosR. 

sábado, 29 de octubre de 2011

Flasheo de impresora Samsung ML-1660



Hace aproximadamente un año, decidí invertir la mitad de mi fortuna en una impresora que a primera vista me pareció una opción rentable para imprimir mis apuntes de la facultad. Por algo menos de 50€ me compré una Samsung ML-1660. Es una impresora Láser monocromo. Es una buena opción si quieres imprimir un gran volumen de páginas y no te importa mucho la calidad. Estaba muy contento con ella hasta que un triste día, después de estar un par de semanas sin utilizarla me encuentro con que se ha agotado el toner.

Ésto que os voy a contar es algo que sucede muy a menudo en las impresoras modernas. Para aquellos que no lo sepan, os diré que la mayoría de las impresoras actuales cuentan con una solución trollware (un circuitín) que avisa a la impresora de que se ha agotado la tinta/toner. Lo llamo trollware porque la mayoría de las veces, el chip avisa de que no queda tinta, pero ésto no es verdad (comprobado). De ésta manera, muchas veces tiramos cartuchos a media carga, porque no hay manera de obligar a la impresora a que imprima de todas maneras. Entonces un servidor se tiene que gastar la otra mitad de su fortuna en un tóner nuevo.

Ésto no es todo. Existe en el mercado una opción alternativa a comprar cartuchos nuevos. Se puede comprar la tinta, o el polvo de toner muy barato en ebay. Pero con el jodido chip de las pelotas que os comentaba, aunque recargues el toner, la impresora cree que esta agotado. 

Rebuscando cinco minutos por la red he encontrado una solución solo para ésta impresora. Existe un software que en cuestión de 3 segundos inhibe este sistema. Solo hay que seguir unos sencillos pasos. Antes de nada, quiero advertiros que cuando yo lo hice, no tenia el controlador de la impresora instalado en el PC, estaba utilizando W7 32bits y por supuesto, ya había "terminado" el toner. También quiero deciros, que si bien yo no tuve ningún problema, todo flasheo conlleva ciertos riesgos. Es importante no desenchufar ni apagar la impresora hasta que el proceso termine. Y con todo ésto, no me hago responsable de cualquier inconveniente.

Ahora veamos el proceso a seguir:
  • Antes de conectar la impresora al PC y a la corriente, sacar el toner y tapar el circuito alojado en la parte derecha del mismo con un trocito de celo, cinta aislante o similar. No hagáis una bola de celo ahí, sed curiosos, y no utilicéis ninguna cinta rara que pueda conducir la electricidad (no seríais los primeros). El aspecto del chip asesino es una plaquita verde con cuatro pistas de cobre a modo de conexión. No tiene perdida. Después volved a colocar el toner bien en su sitio. Ahora la impresora debería estar exactamente igual que antes, pero con el chip del toner tapado. Ed. sin conexión.
  • Extraed los ficheros que os descargaréis haciendo click aquí. Dentro deberían aparecer 2 carpetas. Y las instrucciones que yo seguí. Si queréis podéis echarle un vistazo. Abrid la carpeta "V30" y dentro veréis 1 fichero con extensión .fls y un ejecutable.
  • Conectad la impresora a la red, encendedla y conectadla al PC.
  • Cuando este reconocida por el mismo, arrastrad 1665-30.fls sobre el ejecutable.
  • Ahora la impresora debería comenzar a parpadear, luego el led se pondrá naranja y acto seguido verde. Voilá. Vuestra impresora esta flasheada y podréis rellenar vuestro tóner las veces que queráis.
Si algo falla, hay varias opciones.

La primera es que seáis tan despistados como yo, y el led esté en rojo avisándonos de que no queda papel en la bandeja. Poned un par de hojas y esperad a ver si cambia a verde. Según he leido, cuando el flasheo no funciona, el led indicador se queda parpadeando. Dejadla 5 minutos. Si entonces no ha dejado de funcionar, apagadla y seguid leyendo.

La segunda opción es que hayáis hecho mal algo de lo anterior. Volved a hacerlo todo de nuevo comprobando que el chip esté bien tapado y no haya conexión.

La tercera opción es que la impresora sea de una versión posterior a la fecha en la que se hizo el programa de flasheo o el firmware v30. Para intentar solucionarlo, probad a repetir todos los pasos pero con el otro firmware. Es decir, en lugar de hacer utilizar el contenido de la carpeta V30, probad con el de la carpeta V82.

Si tras haber hecho todo lo anterior no funciona, siento deciros que tendréis que pagar por un nuevo toner, o seguir buscando en la red. 

Para los que os haya funcionado, deciros que enhorabuena, y que como véis, compartir es la clave ;)

Un saludo.

MarcosR.