viernes, 22 de abril de 2016

Montando un pequeño pero robusto ordenador de sobremesa por 300€

Entrada dedicada a los amantes de los infalibles PC’s de escritorio a secas (nada de modding), en este mundo ya saturado de smartphones y tabletas. Sí, cada vez somos menos pero todavía existimos. Simplemente, fieles seguidores de un movimiento anti-obsolescencia forever! Pero existe un límite y aunque duela todo llega a su fin; si crees que ya no vale la pena cambiarle más piezas a esa arcaica torre, ya sé que se le coge cariño, quizás es hora de ensamblar una nueva con los restos funcionales de aquella. A continuación describiré mi montaje.

Así pues, con un modesto presupuesto de 300€ uno mismo puede ensamblarse un potente ordenador todoterreno para ofimática, multimedia, internet… (350-400€ si no aprovechamos ninguna pieza de otro ordenador). En mi caso, y como suele ser habitual cuando me meto en estos berenjenales, he reutilizado una anterior lectora DVD, un SSD y un HDD.

Presupuesto de referencia:
image
 
Además, y con las prestaciones escogidas, tampoco se esperan cuellos de botella a corto plazo si más adelante decidimos añadirle alguna decente tarjeta gráfica dedicada (otros 70-90€ más, claro) para mover videojuegos y/o programas de diseño gráfico más exigentes. No obstante, con los actuales gráficos integrados en la CPU (HD4600) se pueden mover casi todos los juegos entrados en años sin problemas (TotalWar, AOEIII, etc.) u otros no tan viejos como el Battlefied 4 en resoluciones no muy altas, 720p ó 900p.
 
IMG_20160331_182854
Paquete básico para empezar.

Pero llegados a este punto más de uno se preguntará, yo también lo hice en su momento, ¿por qué ensamblarla por uno mismo antes que comprarse una torre ya montada en oferta? La respuesta deberá valorarla cada uno en función de lo siguientes asertos:

PROS:
- Conoces exactamente la calidad y coste de TODOS los componentes individuales utilizados.
- Pagas sólo por lo que necesitas e inviertes más en aquello que más valoras.
- Reparaciones rápidas, al ser tú mismo quien lo ensambla y configura.
- Total libertad con la configuración, acceso a la placa madre y futuras ampliaciones del sistema (sin precintos en la caja que anulen la garantía).
- Garantía de componentes independientes (sin tener que enviar toda la santa torre por que falle, por ejemplo, el lector óptico).

CONTRAS:
- Romper algo en la instalación evidentemente no estará cubierto por ninguna garantía y los fabricantes ya se las saben todas, es por ello que para meterse en algo así es necesaria una mínima motivación, conocimiento y cuidados (bastaría con no ser un manazas).
- El coste del SO propietario preinstalado (OEM) por los fabricantes de equipos resulta mucho más barato. Sin interés si utilizamos algún SO libre.
 
En cuanto al coste global del equipo, haciendo un estudio de mercado, podría decirse que es prácticamente el mismo a excepción del precio súper-rebajado del SO (licencia OEM) que prácticamente te sale regalado. Es decir, sólo por esto último sería beneficioso acogerse a una oferta premontada. No obstante y en mi opinión, en la mayoría de ofertas estás pagando por accesorios que no necesitas o no se adaptan a tu configuración ideal, sacrificando con ello prestaciones de otros componente más críticos. Por no hablar de los precintos de la torre que anulan la garantía si la abres, algo inadmisible, al menos, para mi.

Pero dejándonos de divagaciones que tampoco pretenden convencer a nadie, porque quien tenga el gusanillo de montarse su propio PC ya lo habrá meditado y lo acabará haciendo llueva o truene (ya que, además, entretenido es), pasemos a ensamblarlo de una vez:

 


CAJA


Ya cansado de las aparatosas torres o semitorres, que por su tamaño muchas veces se acaban ubicando cerca del suelo exponiéndolas a más golpes y polvo, opté por probar las atractivas mini torres slim (o de perfil bajo) que ocupan bastante menos.
 
Ordenando bien todos los cables queda espacio más que de sobras para la correcta ventilación, eso sí, su instalación requiere más habilidad y paciencia que en las enormes torres, precisamente por aprovecharse el espacio al máximo. Además, con las bahías de que disponen estas pequeñas torres ya se suplen igualmente todas las necesidades básicas:
Una bahía 5.25’’ para unidades ópticas, que ya apenas usamos pero que siempre tranquiliza conservar; dos huecos internos para discos duros, uno de tamaño 3.5’’ ó 2.5’’ (por ej. para un disco ‘almacen’) y otro necesariamente de 2.5’’ (por ej. los actuales SSD para el sistema operativo); y espacio para placa madre de formatos μATX (con hasta 4 slots de expansión), flexATX o miniITX (desaprovechando algunos slots al menos desde la placa madre).

 
image
Bastidor minitorre slim (aquí Tacens Orum III) con el ventilador de 8cm 12v (0.3A) incluido y su fuente SFX

image
Otros accesorios incluidos con la caja Slim: Lector de tarjetas externo por USB, cable adaptador de USB 3.0 a 2.0, generosa cantidad de tornillos, soportes de plástico en U y tacos de neopreno para colocarla en vertical u horizontal respectivamente. Además, también incluye un pequeño zumbador para las tareas de diagnóstico con la motherboard o para volver a jugar al Prince of Persia ‘89 tal y como exigirían los más puristas.

 

FUENTE


Un inconveniente de estas torres slim es que es necesario buscarles fuentes de menor tamaño, con un factor de forma SFX o SFX12V (ya no las clásicas ATX) que, si bien antes eran difíciles de encontrar, ahora cada vez son más populares y ya no será un problema buscarles substituta.
 
Me quedé con una fuente del mismo fabricante que la caja, la Tacens‑Anima APS500, por resultar muy barata pero al menos ser de una marca mínimamente conocida. Tiene unos comerciales “500W” y con ello sería capaz de alimentar holgadamente a la CPU, las tres unidades SATA y hasta una futura tarjeta gráfica de gama baja o media, si se necesitase.
 
Las lecturas de voltaje que he podido observar en este modelo, si bien no son muy exactas como tal vez sí ocurra en fuentes de gama alta, se mantenían dentro del ±5% de tolerancia exigido por el estándar ATX, así que en principio el sistema se mantendrá estable.
 
IMG_20160331_190954
Fuente Tacens-Anima APS500 (SFX form factor)

En cuanto al ruido del ventilador de la fuente, hay que decir que sería algo excesivo para ensamblar, por ejemplo, un equipo HTPC (Home Theatre PC) pero tolerable como PC de escritorio, sobre todo tras malacostumbrarnos a los ruidosos ventiladores de algunos laptops. Esto es habitual con las fuentes de alimentación económicas. Una rápida solución sería abrir la fuente y cambiarle su ventilador de 8cm (los hay de muy baratos y silenciosos), o directamente haber escogido otra fuente superior.
Realmente, este es el único ventilador audible teniendo la caja cerrada ya que los otros dos (ventilador de CPU y chasis), controlados por la placa madre, reducen su velocidad en condiciones de trabajo normales (ofimática, web browsing…) hasta apenas 900‑1000rpm, volviéndose prácticamente inaudibles.
 
image
Vista posterior con el ventilador de la fuente y la parte trasera de la placa base.

 

CPU


Tras mucho calentarme la cabeza, y leyendo interminables peleas discusiones en la red, opté por Intel, sí, fanáticos overclockers no me abucheéis demasiado… xD La verdad es que hay que reconocer que está a la vanguardia tecnológica y AMD, al menos en cpu’s, siempre anda un par de años atrás. Y esto seguirá así hasta que Intel no sepa cómo meter más transistores en unos pocos átomos de silicio, cosa que ocurrirá no dentro de mucho (diámetro atómico del silicio ~0.2nm, litografía actual de Intel 14nm) (curiosamente ojear: efecto túnel y qué pasa con los nanómetros ). Eso sí, esa tecnología tiene un precio que hay que pagar y los de Intel van a aprovecharlo bien.

Si nuestra mayor preocupación es la generación de calor y la temperatura de trabajo media (a fin de cuentas la vida útil del conjunto CPU y placa madre), el rendimiento por ciclo (lo que rinde cada ‘gigahercio’ anunciado) y no vamos a marearnos con overclockings ni moddings ni ostias del estilo; ni tener que estar vigilando la tª de la CPU a todas horas,… en fin, siendo prácticos, en el rango medio y alto de CPU’s duraderas yo ya lo tengo claro, Intel.

Por otro lado, si queremos sacar el máximo rendimiento a una CPU muy barata (a veces hasta la mitad de precio comparando dentro del mismo segmento) a base de overclocking, refrigeración especial (por que la que viene de serie con los chips AMD deja mucho que desear y en esto sí coincide todo el mundo; sin embargo las soluciones térmicas (pasta térmica+disipador+ventilador) que incluye Intel de serie en sus cajas funcionan perfectamente para el uso normal de la CPU, y subrayo normal, sin overclock, claro), etcétera. En fin, si estás en este segundo grupo, entonces creo que puede ser rentable, aparte de entretenido, meterse en el apasionante mundo de exprimir AMD’s.

Y la verdad, no tengo nada contra AMD, es más, el hecho de poder llegar a sacar tal rendimiento a procesadores tan económicos y a priori inferiores (siempre comparando peras con peras, claro) me parece muy interesante para estrujar el cerebro, llevar al límite una arquitectura y de paso intentar equilibrar un poco el mercado. Simplemente es que ya lo he sufrido en primera persona: CPU’s comparables en rendimiento entre ambos fabricantes y siempre con el ventilador de serie, Intel en todo momento ha trabajado al menos 10-15ºC por debajo en las mismas condiciones, eso sí, pagando el doble de precio. No hay que decir mucho más.
 
Quizás una mala decisión en AMD de los últimos años haya sido incorporar soluciones térmicas tan sencillas y ruidosas no del todo acordes con el calor generado por sus chips, pero tiene su misma explicación, reducir costes. Además, tampoco es que las CPUs de AMD sean más calientes de por sí, en esencia es que para alcanzar los rendimientos de Intel, por lo general, aquellas necesitan trabajar a frecuencias significativamente mayores.
 
IMG_20160331_212618IMG_20160331_212630
Solución térmica de Intel, PCG 2013D, incluida con las CPU i5 serie 4000 standard power (84W TDP).

Pues bien, al final me decanté por un i5 4460 [4x3.2GHz] (microarquitectura “Haswell” a 22nm) que si bien ya lleva un tiempo en circulación (Q2'2014), se ha comprobado ampliamente su rendimiento y ya ha alcanzado una de las mejores relaciones precio-prestaciones en este segmento. Otras buenas soluciones de la misma serie 4000 también habrían sido el i5 4590 [4x3.3GHz] ó 4690 [4x3.5GHz], todos con socket LGA1150, con velocidades ligeramente superiores y precios crecientes. Por otro lado, también sería interesante revisar la más actual serie i5 6000 (“Skylake” a 14nm) presentados el año pasado (Q3'2015), todavía más eficientes térmicamente pero con rendimientos similares y ya con un socket diferente, LGA1151, lo que actualmente encarecería un poco el precio del conjunto.
image

 


RAM


Aquí no me mareé mucho, escogí la de mayor velocidad soportada por la CPU y chipset de la placa base, es decir una DDR3 a 1600MHz. Fueron recomendables instalar 8GB de memoria (2x4GB en Dual Channel) para andar suficientemente holgados, considerando la memoria compartida necesaria para la gráfica integrada.


Por ejemplo, la gama HyperX Fury de Kingston tenía muy buena relación calidad-precio (DDR3 1600-1800MHz CL10).

   

 

MOTHERBOARD


Condicionados por la CPU y su socket LGA1150, basta con elegir cualquier placa μATX para esas CPU’s y con el chipset más básico de esta arquitectura, aquí Intel H81, más que suficiente para nuestras aspiraciones con este modesto pero eficaz PC. Eso sí, ya que anteponemos fiabilidad ante todo, en el mercado de placas base no debemos salirnos de las marcas más reconocidas: Gigabyte y Asus en una 1ª posición, MSI y AsRock en 2ª posición. A ser posible, placas con todos los condensadores de estado sólido por su mayor durabilidad.
 
IMG_20160401_043423
Placa base (aquí ASUS H81M-PLUS) ya instalada.
Véase compacta organización de cables y la ubicación del disco duro ‘grande’ (3.5’’) en vertical.

imageIMG_20160401_054404
Véase pantalla abatible para fijar lectora y disco duro ‘pequeño’ (2.5’’).


Algunas notas y consejos de montaje:

· La placa madre se atornilla sobre los separadores dorados que incluye la torre. No debe apretarse en exceso para evitar dañarla o hacer algún corto entre pistas. No son necesarias arandelas aislantes (jamás metálicas) pero hay que verificar que la misma no toque por debajo con ninguna parte del chasis.

· La CPU se instala fácilmente siguiendo cuidadosamente las instrucciones del fabricante. Es recomendable usar guantes antiestáticos o procurar descargarse de electricidad estática de vez en cuando, sobre todo en ambientes secos.

· Los pines de contacto del zócalo de la CPU son muy delicados y se debe recordar que cualquier daño sobre estos anularía la garantía, abstenerse manazas (no está de más ser pesado en esto).

· El paso concreto de fijar la CPU con la palanca metálica del socket de la placa madre hay que hacerlo cuidadosamente pero sin miedo. La palanca ofrecerá bastante resistencia para fijar el chip firmemente.

· Es muy importante cerciorarse de la correcta instalación del ventilador y disipador, SIEMPRE con su pasta térmica (ya incluida con el kit de la CPU), sobre el microprocesador. El conjunto se asegura pulsando generosamente las cuatro fijaciones que lleva, de dos en dos, hasta oír clic.

· Se deben agrupar y fijar bien todos los cables para mejorar la ventilación, asegurándose de que ninguno se suelte y pueda bloquear algún ventilador. Yo he usado bridas que tenía por casa aunque también se suelen usar cintas de velcro o alambres plastificados para poder soltarlos fácilmente en un futuro.

IMG_20160331_212520Instalando el vietnamita encapsulado del i5 en su zócalo LGA1150.
Temperatura CPU (i5 4460): 30ºC idle, 50º full (Tª ambiente 22º) con disipador y ventilador de serie.
Larga vida al chip!

martes, 1 de septiembre de 2015

Montando un osciloscopio de ~0.1MHz, Dso138

Saludos de nuevo, en la presente entrada voy a evaluar mi última e impulsiva adquisición electrónica. Se trata de un pequeño osciloscopio digital portátil de un solo canal, el modelo DSO130 de JYE Tech, presentado en forma de kit para ensamblar uno mismo.

image

De antemano hay que decir que no es para nada un osciloscopio profesional pero, dado su bajo coste (~25$), es una muy buena opción para estudiantes e iniciados entusiastas que desean conocer el funcionamiento y limitaciones de estos aparatos sin dejarse un riñón por el camino. Un decente DSO (Digital Storage Oscilloscope) económico no cuesta menos de 300€. De cualquier forma, si conseguimos montarlo con éxito, tendremos un osciloscopio funcional para medir señales mínimamente limpias con un ancho de banda de hasta unos 100KHz, llegando a ser una práctica herramienta para “diagnosticar” algunos equipos de audio analógico, fuentes de alimentación conmutadas de baja frecuencia, transceptores IR, etc.

Dada su popularidad, han salido muchos clones del original DSO138, precisamente yo adquirí uno de ellos sin saberlo, así que debéis fijaros bien donde lo compráis. En la web del fabricante explican como detectar los fakes. Desgraciadamente para los de JYETech, debo deciros que al menos mi copia china sí funcionó. Problemas: Tuve que cambiar un condensador variable muy desviado, por lo demás, todo medía dentro de rangos admisibles. Sinceramente, si podéis ir a por el original, eso que os ahorraréis, no vendrá de 5$.

No voy a contar nada del proceso de montaje porque no entraña mayor dificultad y está muy bien documentado en las instrucciones del fabricante. Además, los componentes SMD (sobre todo el pequeño microcontrolador STM32) ya vienen soldados. Así que, alguien con experiencia en soldadura electrónica, en una tarde podría tenerlo completamente montado. Si se está empezando, bastará con dedicarle un poco más de paciencia y cuidado. Nota aparte, sé que es apasionante esto de soldar pero… proteged los pulmones.

  • Descripción y características:

El cerebro del osciloscopio es un microcontrolador STM32 F103 con una CPU ARM Cortex-M3 trabajando a 8MHz. Este se encarga de manejar todas las funciones del osciloscopio, desde la conversión analógico a digital de la señal hasta el almacenamiento y ejecución del programa del osciloscopio y la salida por pantalla.

Kit-Review-JYE-Tech-DSO138-Digital-Storage-Oscilloscope-tronixstuff-8

El monitor es una pequeña pantalla TFT LCD retroiluminada (ILI9341) de 2.4 pulgadas y resolución 320x240px.

IMG_20150901_054024 (1)

En cuanto a los controles, tenemos 3 pequeños conmutadores deslizantes de tres posiciones o vías (throws) y dos polos (poles) cada uno (2P3T) y 5 pulsadores NO (normally open):

Switch 1: Acoplamiento - GND, AC, DC
Switch 2: Sensibilidad 1 - 1V, 0.1V, 10mV
Switch 3: Sensibilidad 2 - X5, X2, X1

Tales controles te permiten cubrir el rango de 10mV/div hasta 5V/div (50Vpeak máximo). Un conmutador giratorio hubiese sido más cómodo pero, claro, también más caro.
Como se ha dicho, cada conmutador tiene 2 polos, uno para tratar con la propia señal y otro para informar al microcontrolador en que posición se encuentra. De esta forma la pantalla siempre muestra la sensibilidad y el acoplamiento seleccionados.

En cuanto a los pulsadores, funcionan llevando a masa diferentes puertos del micro y su operación es intuitiva, no me extenderé. RESET: para reiniciar el microcontrolador y con ello al osciloscopio. SEL: Selección de las diferentes funciones en pantalla. + y –: Modificación de parámetros seleccionados. OK: Pausa imagen, tara offset, muestra mediciones, etc.

En cuanto a la base de tiempos o división horizontal se pueden seleccionar desde 500s/div hasta 10us/div, cubriendo así todo su ancho de banda.

El fabricante anuncia un ancho de banda de hasta 200kHz, no obstante, tomando sólo 1Msps (muestras por segundo) y sin técnicas de muestreo más avanzadas, no alcanzaremos más de 100kHz de manera estable y sin aliasing o falsas frecuencias. Otra cosa sería tratar con señales senoidales puras/ideales que, según el popular teorema Nyquist-Shanon, nos daría para reproducir hasta 500kHz, algo imposible en la práctica debido al ruido e imperfecciones propias de toda señal que generarán infinitos armónicos. Así que, siguiendo una regla bastante usual en la industria, podremos trabajar con un mínimo de 10 muestras por ciclo o, en este caso, ≤100kHz.

Continuando con las prestaciones, este DSO tiene una memoria para 1024 muestras. Bastante limitada, aunque puede ser suficiente para registrar cortos eventos aislados o para desplazarse por un tramo de alguna caprichosa forma de señal.

Como todo osciloscopio que se precie, cuenta con una salida auxiliar de onda cuadrada a 1kHz como señal de prueba (generada por el propio microcontrolador), muy útil para calibrar y compensar la pequeña capacitancia de las sondas mediante los dos condensadores variables (C4 y C6 en la placa) y el propio que incluya la sonda.

La precisión vertical, según el fabricante, es de un 3% de la escala vertical seleccionada, bastante cierta según las pruebas que he podido realizar. Sobre todo, tras una modificación planteada por un usuario en un foro (MorganFlint AnalogGround MOD) que reduce a menos de la mitad el ruido en la señal generado por el propio microcontrolador.

 image
Analog Ground MOD, que además, también es una recomendación del datasheet del μC.

  • Cómo funciona? (ayuda seguir el circuito incluido en el manual)

La señal analógica de entrada es tratada mediante un circuito integrado TL084 el cual contiene 4 amplificadores operacionales. Su primera etapa actúa como seguidor, justo tras la selección del acoplamiento (GND, DC, AC) y el atenuador de la señal de entrada (1x, 0.1x, 0.01x). A continuación, le sigue otro atenuador pasivo (selección 1x, 2x, 5x) y una segunda etapa del TL084 que proporciona una ganancia de 1.7 hacia la entrada de un Conversor Analógico a Digital (ADC) del microcontrolador (la ganancia se ha aumentado de 1.7 a 7.7 en la última versión v060, R11 pasa de 1.5K a 150Ω). Tras todo este tratamiento, la señal analógica se ha introducido al ADC con un rango dinámico entre 1.75-1.59V (1.99-1.35v en la última versión) y un voltaje de referencia de 1.67V.

Por otro lado, la señal del disparador (trigger), que permite sincronizar cada trazado de la señal registrada superponiéndola de forma estacionaria en pantalla, se genera mediante una tercera sección del mismo TL084, usado como comparador, cuyo valor umbral de disparo viene generado por el propio microcontrolador. La cuarta sección del TL084 no se utiliza.

La fuente de alimentación consiste, por un lado, en un par de clásicos reguladores de tensión positiva dispuestos en cascada para obtener los voltajes positivos (+5v y +3.3v). Por el otro lado, y para generar la línea de tensión negativa requerida para la alimentación simétrica del TL084 (-5v), se dispone de un convertidor reductor (inverting buck-boost converter) de tensión negativa. Este se conforma mediante el conjunto de transistor, diodo, bobina y condensador (ver circuito del manual), y otra fuente de onda cuadrada generada por el propio microcontrolador que: conmuta dicho transistor a 18kHz, cargando y descargando la bobina e invirtiendo en cada descarga su polaridad hacia el condensador. Igualmente, esta línea de -5v se acaba con otro regulador/estabilizador, en este caso de tensión negativa, para obtener un voltaje continuo sin el rizado de la conmutación.

  • Experiencia:

He conseguido medir señales complejas de hasta 100kHz de alguna fuente conmutada, aunque con dificultades para estabilizar el trigger y con un significativo aliasing.

Asimismo, también se produce un esperable aliasing en las escalas de tiempo más grandes debido a la limitada memoria de muestras disponible y a que, por esa misma razón, el osciloscopio reduce mucho la tasa de muestreo para poder mostrar una traza de pantalla completa. No obstante, con un poco de experiencia esto es fácilmente detectable y basta con reducir la escala de tiempo para volver a reproducir la señal original.

A pesar de sus limitaciones, el aparatito me ha sorprendido bastante ya que lo compré planteando como un reto el mero hecho de hacerlo funcionar y finalmente puede haber resultado en una herramienta funcional, con sus limitaciones, pero muy didáctica.

IMG_20150901_052615

  • Complementos:

El osciloscopio se puede alimentar de 8 a 12vcc, con un consumo de 160-190mA (más de 12v nos quemarán el transistor Q1 del buck, comprobado en un descuido, xD). Para que sea lo más portátil posible, lo voy a alimentar con una batería recargable de Li-Po 3.7v y un circuito elevador de tensión, DC-DC Step-Up (ambas cosas por ~6€ en el mercado chino). Además, el hecho de alimentarlo desde una batería (o mediante aislamiento galvánico≡verdadero transformador), nos evitará los fatales cortocircuitos a través de masa.

Para medir señales débiles y sensibles al ruido es mejor utilizar alguna sonda específica para osciloscopio (las hay de muchos tipos/precios), ya que lo que viene en el kit son unas meras pinzas de cocodrilo. Aparte, tampoco estaría de más apantallar el circuito de la entrada analógica hasta el amplificador operacional.

Tenía previsto introducirlo en alguna elegante caja pero finalmente se me apoderó y me conformé con fijarlo a una placa cortada a medida para protegerlo y, sobre todo, evitar provocarle cortocircuitos con cualquier herramienta metálica suelta por la mesa de trabajo.

IMG_20150901_060346Osciloscopio terminado junto a su batería LiPo de 3.7v y módulo elevador de tensión conmutado para llegar a los 9v necesarios.

Acabando, ya en modo experto, la misma placa también podría aprovecharse como tarjeta de desarrollo y aprendizaje del microcontrolador STM32, ya que incorpora los puertos necesarios para su programación y depuración así como un puerto USB, no empleado en el osciloscopio.

Para aquellos que se animen, espero que disfrutéis con su ensamblaje, y si no os funciona a la primera, no desistáis, en el foro oficial ya se ha encontrado solución para los fallos de montaje más comunes. Ya contaréis la experiencia.

 

Nota (1/2016): El fabricante ha sacado una nueva versión del DSO138 (13803K/04K), cuya única diferencia con el anterior es el valor de una resistencia (R11: 1.5K –> 150Ohm) y nuevo firmware (v.050, v.060…). Recordad cambiar esa resistencia R11 para actualizar firmware. Parece que en esta versión han logrado reducir significatívamente el ruido, aprovechando más el margen dinámico del convertidor ADC del microcontrolador y mejorando así la SNR sustancialmente. Ver web del fabricante y manuales para actualizar firmware.


Enlaces de interés:

http://www.jyetech.com/Products/LcdScope/e138.php – Web del fabricante. Manuales, firmwares, foros…
http://forum.banggood.com/forum-topic-61279.html – Modificación propuesta por un usuario para minimizar ruido (Analog Ground MOD).
http://skiras.blogspot.com.es/2014/05/entendiendo-los-osciloscopios-i.html – Algún concepto básico de osciloscopios.
https://www.youtube.com/watch?v=xaELqAo4kkQ – EEVblog. Cómo no “volar” (literalmente) tu osciloscopio.

jueves, 27 de agosto de 2015

Programando un microcontrolador 8051 ( STC 89c52 )

Para introducirme en la programación de microcontroladores (en adelante μC) adquirí hace tiempo una placa de desarrollo para la anciana arquitectura del 8051 de Intel (8bits), ya considerada un estándar de la industria. La placa incluía el μC STC 89c52RC de la casa STC Microcontrollers. Ésta es otra compañía china que fabrica derivados del original 8051 de los 1980’s, totalmente compatibles. Tales evoluciones del 8051 u 8052, igualmente compatibles, existen también de muchos otros fabricantes como la serie AT89 de Atmel, la XC800 de Infineon, la C8051 de Silicon Labs. y otros de NXP, Philips, Dallas, etc. e incluso la primera generación de la popular serie AVR de Atmel, AT90, aunque en este caso requiriendo alguna modificación menor. Por otro lado, también serían “adaptables”, al menos al mismo soporte físico (con el mismo pin-out o mediante adaptadores), los AVR posteriores de Atmel usados incluso en Arduino como el ATMega162, etc.

Adquirí este modelo precisamente porque era el más barato que encontré por el mercado chino y porque, a fin de cuentas, es más que suficiente para dar unos primeros pasos en este área.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIZiI7IMZs2J-jJIgHgZM_Hdw24dnEt7Mi05_BUZqyTD6t8-a32l-8Kx0Iyt_oYWtS6Jr2HS5sjKmUQ-BcJFX4BkFKMdXC_vViLEaJGcLOUN5HdEX-LCv3kyQUnIczoeJX10YuhpBoC-D6/s310-no/
El μC STC 89c52RC en un clásico encapsulado DIP de 40 pines. 
El principal problema de estos económicos µC’s STC es su menor documentación en idiomas distintos al chino y un peor reconocimiento por los programas habituales de programación. Sin embargo, una vez programados funcionarán igual que sus análogos de otros fabricantes. Por ello, me pareció interesante recopilar aquí toda la información encontrada del proceso que seguí para lograr programar uno de ellos (para continuar se recomiendan unos conocimientos mínimos de electrónica y lenguajes de programación, no obstante, intentaré explicarlo de la forma más llana y descriptiva).

Conceptos básicos necesarios para preparar y comprender el proceso:
  1. Una placa de desarrollo del µC.
  2. Un compilador cruzado.
  3. Un programador.

  1. Placa de desarrollo del µC.
    Consiste en una PCB (placa de circuito impreso) que aloja al chip del µC e incluye otros componentes para probar los programas. Tales componentes pueden ser otros IC (circuitos integrados) o componentes discretos como LED’s, botones y relés, así como pines, conectores y zócalos de expansión.

    Placa de desarrollo basada en microcontrolador (single-board microcontroller).
    Ésta en concreto es una 51/AVR Development Board con el STC 89c52RC incluido, arquitectura “8051”. Muy económicas ~20$ por el mercado chino, ya sean totalmente montadas o en kit para ensamblar uno mismo.
  2. Compilador cruzado:
    Un compilador cruzado es aquel capaz de crear el código máquina ejecutable de un programa para otra plataforma distinta a aquélla en la que el compilador se ejecuta. Precisamente lo que vamos a hacer, compilando desde la arquitectura del PC x86 ó AMD64 hacia la del μC 8051.

    Existen multitud de opciones pero la más simple para empezar sería Keil que ya incluye un IDE (entorno de desarrollo) µVision5 y el compilador cruzado C51 para lenguaje C.
    Hay una versión gratuita (https://www.keil.com/demo/eval/c51.htm) con la única limitación de 2kB para el programa objeto, algo suficiente para nuestros comienzos (nuestro µC sólo almacena hasta 8KB).

    Existen otros compiladores o IDE’s de código abierto y gratuitos válidos para el 8051 como:
    Atmel Studio 6 (http://www.atmel.com/tools/atmelstudio.aspx)
    MCU 8051 IDE (https://sourceforge.net/projects/mcu8051ide/)
    SDCC - Small Device C Compiler (http://sdcc.sourceforge.net/)
    Éstos últimos pueden ser más complicados de configurar así que, al menos para empezar, Keil sería una buena opción.


  3. Programador:
    Es una herramienta para transferir el código máquina generado por el compilador a la memoria del µC. Está conformado por una parte de hardware y una de software.
La parte física sería la placa o tarjeta programadora y su conexión con el PC.  En nuestro caso podremos programar directamente el µC mediante los puertos serie UART que dispone el µC y la propia placa de desarrollo (ya sea mediante interfaz RS232 o directamente a los pines del µC con niveles TTL, como veremos más adelante). Por supuesto, también podríamos programarlo mediante alguna tarjeta programadora dedicada.
La parte de software es el programa específico para reconocer y programar correctamente una serie de µC’s de un fabricante. En concreto, para nuestro STC necesitaremos el programa gratuito que facilita tal fabricante: STC-ISP v6.86 (en inglés) www.stcmcudata.com/STCISP/stc-isp-15xx-v6.86G.zip (revisar futuras actualizaciones).
Alternativamente y para entorno Linux, existen también los programadores STCgal y STCdude
(símiles del conocido AVRdude).


Una vez hayamos recopilado todas las herramientas necesarias y comprendamos algo su funcionamiento, vamos a programar el µC paso a paso con algún sencillo código de ejemplo.

Entrando en materia:

Paso 1: Instalar los drivers de algún adaptador USB-Serie (los hay ya muy económicos gracias a la invasión Arduino), sólo si no disponemos de ningún puerto 'serie' o COM; algo casi extinto en computadores actuales.

Tenemos dos opciones de adaptador serie: El USB-Serie RS232 que nos habilita un clásico ‘puerto serie’ UART con niveles lógicos de la interfaz RS232 (-10V, +10V), o bien un adaptador USB-Serie TTL cuyo puerto serie UART generado es de niveles TTL (0V, 5V).

El primer tipo [USB-Serie RS232] lo conectaríamos al puerto RS232 (generado por algún IC driver como MAX232) mediante el conector DE9 de la tarjeta programadora, mientras que el segundo tipo [USB-Serie TTL] lo podríamos conectar directamente a los pines RxD y TxD del µC (pins 10 y 11 del 8051, respectivamente), fácilmente accesibles en cualquier placa de desarrollo mediante cables Dupont. En este último caso, recordar permutar las conexiones Rx-Tx y Tx-Rx entre dispositivos y emplear cables cortos (<1m). (Aquí no son necesarios, si los hubiera, los pines RTS, CTS ni VCC. Sólo GND (tierra) y los RxD y TxD mencionados)

Los drivers del adaptador USB-Serie que empleemos se corresponderán con el modelo de chip que lleve, son habituales los siguientes: Prolific PL2303, HL340, FTDI FT232, CP2102, … fácilmente localizables por la web. Una vez instalados y conectado el adaptador, comprobamos que se haya creado correctamente un nuevo puerto serie (COM n) en el administrador de dispositivos.

http://dxg49ziwjgkgt.cloudfront.net/wp-content/uploads/2011/06/win7-04.png 
Paso 2: Probar el software programador, STC-ISP:

Descargar, descomprimir y simplemente ejecutar stc-isp-15xx-v6.86G.exe (al fin en inglés).
(Versiones anteriores a ésta última dejaron de soportar la serie 89c a partir de la v4.80 (sólo en chino) o la v1.80 (en inglés), además, en éstas anteriores puede ser necesario instalar algunas dependencias para correrlo en Win7 o bien ejecutar alguna versión instalable de las mismas. Por lo tanto, recomiendo ir directamente a la última versión de la web del fabricante si todavía existe).

En este punto podemos aprovechar para verificar el correcto funcionamiento del puerto serie y las conexiones. Conectamos la placa de desarrollo a un puerto serie de cualquiera de las formas ya explicadas y comprobamos que la herramienta STC-ISP detecta el µC. Para ello, desde su ventana principal pulsamos ‘Check MCU’ y justo después alimentamos o encendemos la placa de desarrollo, no antes. Si todo está correcto, nos devolverá el modelo de µC detectado y podremos continuar al siguiente paso.
image

Paso 3: Instalar un entorno de desarrollo (o la cadena de herramientas: editor de texto, compilador, enlazador, ensamblador, depurador). Por sencillez, instalaremos el IDE Keil µVision y a continuación lo configuraremos para utilizarlo con nuestro modelo de µC.
Tras descargarlo de la web de Keil (Herramientas de desarrollo - C51) e instalarlo, necesitamos configurarlo para usarlo con los microcontroladores de STC. Aunque este fabricante no está disponible por defecto en la librería de dispositivos del Keil, afortunadamente STC Microcontrollers proporciona los recursos para incorporarlo a dicha base de datos.
Podemos hacerlo de dos formas:
  • Automáticamente, mediante una función incluida en el software programador que ya descargamos, STC-ISP v6.85 (este método sólo es válido desde la v6.16).
    Dentro del STC-ISP, pestaña "Keil settings", clicar en "Add MCU type to Keil", para añadir el faricante STC a la librería del Keil (nos pedirá la ubicación del programa).
O bien:
  • Manualmente, por si lo anterior falla, lo podemos descargar de STC Artifact o la web del fabricante.
  1. Copiar uv4.cdb en c:\keil\uv4\uv4.stc.cdb o la ubicación del Keil.
    (usar uv4.cdb para versión uVision 4 o posteriores)
  2. Actualizar el archivo c:\keil\tools.ini con lo siguiente: [uv2]
    CDB0=uv4\uv4.stc.cdb ("STC")
Desde ahora ya podremos ver los todos dispositivos de STC disponibles en el Keil µVision (File->Device Database).
image
Añadir las funciones específicas de los µC de STC (opcional): STC tiene su propio conjunto de SFR (Special Function Registers), éstas se definen en C mediante un archivo de cabecera de STC, consultar STCMCU.com o STC Artifact.

 
Paso 4: Escribir un programa sencillo en C usando el IDE Keil:

Iniciar Keil (IDE µVision5), crear un nuevo proyecto (Project - New µVision Project), darle nombre y seleccionar nuestro µC de la lista como Target Device.

Crear un archivo de código fuente en C y añadirlo al proyecto (doble clic sobre carpeta Source Group y añadir el archivo *.c con el código en C). (Os subo aquí este código de ejemplo de un sencillo programa que va activando secuencialmente las salidas de un puerto del µC 8051: ddisp2.c, ddisp2.hex)
image 
Compilar (Project – Build target) y depurar si oportuno, como haríamos en cualquier otro IDE.

Tras conseguir compilar sin errores, ya podemos crear el archivo *.hex que contiene el código máquina binario (codificado en sistema hexadecimal) que podemos cargar en nuestro µC. Para ello, configuramos algunos parámetros del µC, habilitamos la salida del archivo *.hex y compilamos de nuevo, tal y como se muestra en las siguientes imágenes:

image
image

Tras compilar de nuevo se nos habrá generado, entre otros, el archivo *.hex del programa, buscarlo en la carpeta de nuestro proyecto del Keil.


Paso 6: Cargar el código *.hex en el microcontrolador:
1 - Conectamos la placa al puerto serie, COM n (podemos comprobar en el administrador de dispositivos de windows el número de puerto asignado).
2 - Abrimos el programador de nuestro µC, en este caso STC-ISP (alternativa linux: STCgal).
3 - Seleccionamos nuestro tipo de µC de la lista.
4 - Cargamos el archivo *.hex del programa (por ejemplo ddisp2.hex), pulsando en Open Code File.
5 - Dejando el resto de parámetros por defecto, iniciamos la carga pulsando Download/Program.


Portapapeles-2
En este momento el programador se pone a la espera de un reinicio del µC. No se transferirá nada hasta entonces.
6 - Tras reiniciar o alimentar la placa de desarrollo comenzará automáticamente la descarga del código del programa a la memoria Flash ROM del µC.
Si todo termina sin errores, inmediatamente después ya veremos ejecutarse nuestro programa en la placa de desarrollo. Espero que la entrada haya sido útil y/o mínimamente didáctica.



image

Placa de desarrollo 'AVR/85' con el µC recién programado mediante un adaptador USB a Serie en niveles TTL (directamente a los pines RxD y TxD del µC). Alimentada también aprovechando el pin VCC de +5V del propio puerto USB.


Fuentes y enlaces de interés:

http://www.8052.com/ – Biblia de esta familia de microcontroladores y derivados (8051, 8052, 8031, 8032, …).
http://www.keil.com/download/list/c51.htm – Programas de ejemplo en C para la familia 8051.
http://openhardware.ro/stc-microcontrolers/ – Información y recursos para los microcontroladores STC.
http://www.stcmcu.com/ (chino) – Traducida al ingles – Web del fabricante STC Microcontrollers (software, datasheets, etc).

Los enlaces, programas y demás documentación caerán, cambiarán de dominio o quedarán obsoletos; solución: motor de búsqueda.

lunes, 17 de agosto de 2015

BGA Rework Machine. GarageRework.

Proyecto de una BGA rework (reball & reflow) machine modesta y funcional para este verano. Muy útil para reparaciones esporádicas, ejecutada con un presupuesto low-cost y filosofía DIY. Humildemente bautizada como GarageRework.

IMG_20150817_212235b


Descripción y proceso constructivo:
  • Chasis o bastidor:
    Mediante perfiles de acero y aluminio, chapa de acero de 0.5-1mm y demás placas, eles, remaches y tornillería. También podríamos aprovechar, como otros han hecho, algún gabinete de aparatos obsoletos (VHS, DVD, torre de PC,…) y ahorrarnos unas cuantas horas de trabajo. En mi caso ya fue por pura adicción al bricolaje.

    IMG_20150620_231036IMG_20150624_165323
  • Pre-Heater:
    Se optó por un pre-calentador con superficie útil de 20x30cm concebido mediante lámparas halógenas de cuarzo de 24cm (3x400W), portalámparas y reflector todo extraído de un calefactor por radiación doméstico (en concreto uno en oferta del Amazonas, ~20€).

    estufa halog 1200w    IMG_20150621_225613

    Para alcanzar las temperaturas de precalentamiento, 130-150ºC (usualmente ~70% de la temperatura de reflow máx.), las lámparas no trabajan ni a la mitad de su potencia máx. con lo que se espera una larga vida de las mismas a pesar de su dudoso origen.
  • Top-Heater:
    Para el calentador superior elegí un pequeño emisor de IR cerámico de 60x60mm y 250W (Aliexpreso, ~15€), alojado en un conveniente foco artesanal. Asimismo, también mecanicé unas placas obturadoras para obtener diferentes huellas de calor acordes con el tamaño del chip (de 25x25, 35x35 y 45x45mm), todo protegido con pintura anticalórica.
    IMG_20150715_134045IMG_20150715_132919IMG_20150716_223101b
    En mi caso, emisor 60x60mm, con sumo cuidado logré trabajar con las típicas GPU’s de hasta 33x33mm sin problemas, al menos en el reflow con bolas de Sn-Plomo a ≤200ºC. La extracción de bolas sin plomo ≤230ºC se hizo de rogar pero también se consiguió. Sin embargo, para estos y otros chips más grandes serían recomendables emisores de 80x80mm o mayores (la zona uniforme aprovechable de la huella de calor siempre es bastante menor que el emisor).
  • Electrónica de control:
    La más sencilla para lograr resultados aceptables y replicada por igual para el Pre y el Top-Heater. En total: dos controladores PID de temperatura, dos relés SSR y dos clásicos reguladores de potencia por ángulo de fase mediante triac. Estos últimos, fundamentales para controlar y poder corregir las pendientes de temperatura a voluntad. Todo ello, evitando recurrir a los controladores de perfil completo por rampas, más costosos y/o complejos, como el PC410 u otros implementados mediante microcontroladores en Arduino u otra plataforma que, por supuesto, hubiesen sido una mejor solución.
    En fin, concretando componentes: 
    • Controladores PID de acción inversa: se optó por el modelo más sencillo disponible, REX-C100F (marcas Berme, RKC,… ~15€/ud), con sondas termopar Tipo K. 
    • Relés de estado sólido o SSR de ≥20A (Fotek, ~5€/ud), con una larga vida útil para estos niveles de potencia.
    • Y reguladores de potencia mediante triac BT139 de 16A (u otro similar). Para ensamblar estos últimos podemos basarnos en infinidad de circuitos en la red (como éste) o podemos comprarlos ya ensamblados (~5€/ud).
    IMG_20150706_173124IMG_20150708_022732b
También se dispusieron en la placa frontal del gabinete los correspondientes interruptores para alimentar a voluntad cada resistencia y módulo del equipo.
  • Seguridad eléctrica y refrigeración:
    • Toma de tierra, siempre obligatoria para todo aparato eléctrico con chasis metálico accesible. Garantizar la buena interconexión entre todas sus partes (cuidado con los metales galvanizados que pueden llegar a aislar de tierra una parte del chasis cuando menos te lo esperas). (PRECAUCIÓN, aquí trabajamos con tensiones peligrosas! Siempre bajo la propia responsabilidad individual. Repetida advertencia en todo proyecto de electricidad con tensiones superiores a 50v que nunca estará de más recordar; al invisible riesgo eléctrico jamás se le puede perder el respeto.)
    • Fusible de protección (10A) o algún magneto-térmico contra sobrecargas y cortocircuitos.
    • Aislamiento adecuado y resistente al calor de todos los conductores y borneras. Eliminar o evitar los bordes afilados del chasis. Deben fijarse bien todos los conductores al chasis y es muy recomendable proteger o enfundar los cables más finos (de sondas, potenciómetros, ...).
    • Lámina de mica, alúmina o silicona aislante para los triacs BT139, fijados directamente al chasis (su patilla estará a la tensión de red!), o usar algunos con la patilla aislada como los BTA16, …
    • Pasta térmica entre los triacs, los relés SSR y una amplia chapa del chasis (para la potencia empleada no se requiere más refrigeración pasiva que esa).
Pruebas y calibración:

IMG_20150721_235829bIMG_20150814_212503
En estas imágenes podemos observar la máquina acabada funcionando con sus dos sondas termopar tipo K conectadas como señal 'salida de proceso' (o punto actual) hacia los respectivos PID (conceptos básicos de controladores PID). A la derecha tenemos los ensayos de huella de calor del top-heater, imprescindibles para conocer su posicionamiento óptimo y obtener una adecuada distribución de temperaturas sobre el chip.

Es muy recomendable, al menos en los primeros reworks que hagamos, disponer de sondas de temperatura adicionales situadas en las esquinas del chip para corroborar la uniforme distribución de temperaturas sobre el mismo.

El proceso es delicado, así que más vale empaparse bien de información al respecto, ya sea desde las especificaciones y estándares de la industria que rigen estos procesos (JEDC/IPC J-Std-020D, especificaciones del flux utilizado como el NC-559, etc.) hasta la experiencia compartida en la red por expertos y aventureros (consultar bgamods, reballing.es, eevblog u otros foros dedicados). Por otro lado, no deberían adoptarse valores de temperaturas como dogmas de fe ya que éstos, o mejor expresado, su efectividad en las bolas del chip, se verán muy influenciados por el diseño y configuración específicas de cada máquina; disponer de ellos confundiría más que ayudar (por ello he evitado en lo posible precisarlos aquí, aunque para saber por donde nos movemos más abajo dejo un perfil de temperaturas de referencia). Es decir, habrá que tener muy presente la desigualdad siempre existente entre la temperatura medida por las sondas y la realmente alcanzada por las bolas. Así pues, calibrar un adecuado perfil de temperaturas Tª/t para nuestra máquina (pendientes, tiempos, temperatura preheat y temperatura máx.), realizando las pruebas necesarias, será un paso previo fundamental para no mandar a la basura chips potencialmente reparables.

 
Un posible perfil de temperaturas para bolas Sn-Pb (usar sólo como referencia).
Cada etapa ocupa unos 90 segundos. Enfriamiento entre 2-4ºC/s
https://upload.wikimedia.org/wikipedia/commons/archive/a/a9/20121209171017%21Bga-1.jpg
Ejemplo de un buen reballing.

Primeros resultados (futuras entradas del blog?):
-Rework de chip GPU nVidia 8600m-GT G84-600-A2 602 603 de laptop en tarjeta MXM-II. OK.
-Rework de memorias DDR de ATI All-in-Wonder Radeon 9000 Pro para pruebas preliminares. OK.