Refrigeración por Agua de Bajo Coste para tu Ordenador de Placa Reducida: Cómo Lograr que tu ODROID Alcance Máxima Velocidad

La refrigeración por agua en los SBCs no es nada nuevo, hay personas que ya han implementado diseños utilizando componentes estándar para el ODROID-XU4 y otros SBC. Algunas de estas implementaciones se han presentado en ODROID Magazine en el pasado.

Diciembre 2016 https://magazine.odroid.com/wp-content/uploads/ODROID-Magazine-201612.pdf

Julio 2018 https://magazine.odroid.com/article/liquid-cooling-part-1-cluster/ https://magazine.odroid.com/article/liquid-cooling-part-2-server/

Inicialmente el objetivo de este proyecto era conseguir que la refrigeración por agua fuera de bajo coste y económica para el ODROID-XU4. Después de trabajar en el diseño del bloque de agua, descubrí una forma de que éste pudiera soportar una amplia gama de SBC, independientemente de su capacidad para soportar o no un disipador térmico adecuado. Este desarrollo fue el presagio del SBC Model Framework que completé con anterioridad. https://forum.odroid.com/viewtopic.php?f=53&t=33823 Ahora, cualquier SBC que soporte el SBC Model Framework puede utilizar este diseño para montar un bloque de agua universal de bajo coste y así implementar un sistema de refrigeración líquida.

Las implementaciones de sistemas refrigerados por agua que he visto utilizan componentes del entorno de escritorio INTEL/AMD, más grandes y con más capacidad de la necesaria para los SBC y, por ello, generalmente van acompañados de un coste relativamente alto.

Los sistemas de refrigeración cuyo coste es mayor que el del propio SBC no son rentables ni están justificados económicamente. Están bien a nivel de investigación y para usos muy específicos, pero no para utilizarlos de forma generalizada. De modo que, la primera pregunta que me hice cuando empecé este proyecto fue ¿cuánto cuesta un sistema de refrigeración que esté económicamente justificado?

Se puede decir mucho y de hecho se ha hablado bastante sobre el tema, yo he llegado a la conclusión de que el precio no debe superar el 20% del coste total del sistema o sobre el coste de un disipador térmico y ventilador razonable. Cuando monté mi clúster ODROID-XU4, el coste por nodo que incluía la fuente de alimentación, la tarjeta SD y el cableado de red, fue de aproximadamente 73$. Me preguntaba si sería posible montar un sistema refrigerado por agua por 14$ o menos. Ya sabía que no era posible, si usaba componentes comerciales, así que tuve que tirar de creatividad y diseñar nuevos componentes al mismo tiempo que reutilizaba componentes de otras industrias.

Hay una serie de problemas que debemos solventar para logar todos los objetivos de este proyecto. En este artículo trataremos específicamente la primera fase del proyecto, que incluye el bloque de agua universal y el método de conexión y bomba de bajo coste. El intercambiador de calor y la presentación final de todo el sistema de refrigeración se abordará en una segunda fase. Este proyecto, además, representa el primer paso hacia mi objetivo final de diseñar un clúster ODROID-XU4 refrigerado por agua escalable y de bajo coste. Estoy usando un único SBC para resolver muchos de los problemas de diseño antes de meterme de lleno con la implementación de un clúster.

Después de experimentar con varias técnicas para diseñar el bloque de agua, y teniendo en cuenta que en algunos SBC no resulta fácil ni práctico conectar un disipador de calor, empecé a experimentar con una carcasa refrigerada por agua a la que se podía acoplar bloques de agua de diferentes tamaños con un método de fijación universal.

Figure 1 - ODROID-XU4 SBC Water Cooled Case Design with RTC and UART holder
Figura 1 - Diseño de carcasa refrigerada por agua para el SBC ODROID-XU4 con soporte RTC y UART

El integrar el bloque de agua directamente en la carcasa, nos brinda la posibilidad de poder acoplarlo a la mayoría de los diseños de SBC actuando como un accesorio sólido y fiable. El bloque de agua podría moldearse fácilmente a cualquier tamaño o forma, y permitiría acoplar múltiples bloques de agua a cada lado de la PCB. Con la tendencia cada vez mayor de conectar hardware adicional a los SBC para manejar la IA, redes u otros procesos especializados, pensé que sería conveniente proporcionar también el medio para refrigéralos. Además, podría ser una forma de enfriar múltiples chips de memoria. Para transferir calor desde el SOC al sistema de enfriamiento se utiliza una pieza de cobre de 1/8”(3.19 mm) de grosor insertada en el bloque de agua.

Figure 2 - ODROID-XU4 Water Block
Figura 2 - Bloque de agua ODROID-XU4

Diseño de la carcasa refrigerada por agua

Algunas de las características adicionales del diseño de la carcasa refrigerada por agua incluye:

  • Soporte universal SBC
  • Hasta 4 bloques de agua, arriba y/o abajo
  • Separadores integrados y/o proporcionados por el usuario
  • Tapa de la carcasa ciega o atornillada con o sin avellanado
  • Accesorios predefinidos (soporte UART, soporte RTC, soporte para la parte inferior de la carcasa ODROID-XU4, grabados, ventilador de múltiples formas o agujeros para cables, etc.)
  • Accesorios sustractivos o aditivos definidos por el usuario

Problemas y sugerencias

Han sido tres problemas principales en los que he tenido que trabajar para que este diseño siga adelante. El primero fue encontrar accesorios que fueran económicos, pequeños y lo suficientemente fuertes como para que funcionasen adecuadamente. Los accesorios de los sistemas de refrigeración líquida INTEL/AMD son demasiado grandes para la mayoría de los SOC SBC. Dos de ellos no se ajustarán al tamaño de muchos SOC. Al estar familiarizado con los sistemas de riego por goteo, decidí usar púas de riego por goteo que son fuertes, pequeñas, se pueden pegar fácilmente en su correspondiente lugar y disponen de versiones rectas y de 90 grados.

https://www.digcorp.com/homeowner-drip-irrigation-products/1-4-barbed-fittings

Para realizar las pruebas necesité un método sólido, aunque reversible para fijarlas con el objeto de poder reutilizarlas. Tras probar varios pegamentos, el cianoacrilato (Super Glue) parecía ser el que mejor funcionaba. Corté la púa de un extremo y la pegué en su lugar. Era lo suficientemente sólido como para absorber una carga de trabajo considerable y las púas aún podían retirarse debido a la fragilidad del pegamento. Se puede usar otro pegamento más fuerte y permanente o soldadura de acetona ABS para el prototipo final. Incluso puede ser posible tocar un extremo de la púa para conseguir una solución en rosca.

El segundo problema fue encontrar una bomba adecuada que fuera económica, que proporcionara un servicio continuo, que tuviera el caudal adecuado y funcionara con 5 voltios. Después de buscar en la industria médica y alimentaria pude adquirir por 5$ (entregados), una microbomba 23 5v 1.5w serie ET-Tech con capacidad de servicio continuo. También tenía la ventaja de ser muy silenciosas. http://www.et-pump.com/brushless_23.html

El tercer problema a solventar tuvo que ver con la creación de la carcasa. El punto débil del diseño estaba relacionado con la fabricación del bloque de agua utilizando la tecnología de impresión 3D. Cada capa del bloque de agua suponía una posible fuga de agua. Además de esto, la ubicación del SOC ODROID-XU4 supuso un auténtico desafío debido a su proximidad al cabezal GPIO de 12 pines. A causa del grosor requerido del bloque de agua, éste no contaba con el adecuado espacio para el conector. Ninguno de los otros SBC que probé tenía este problema, era específico del ODROID-XU4. Para colmo, si forzamos el ensamblaje de la carcasa, la presión arquea ligeramente la parte superior de la carcasa, creando suficiente presión como para abrir micro grietas en las capas de impresión que con el tiempo pierden agua.

Después de varios meses trabajando en este problema, no logré resolverlo y dejé el diseño a un lado. El diseño funcionaba para otros SBC, pero el ODROID-XU4 era la razón principal por la que me interesaba esta solución. Después de muchos más intentos para abordar lo que consideraba un problema de diseño importante, me di cuenta de que el cuerpo del cabezal GPIO de 12 pines se podía retirar fácilmente de los pines, proporcionando así el suficiente espacio como para que el bloque de agua hiciera el adecuado contacto con el SOC. En términos generales, el planteamiento para por nunca hacer modificaciones permanentes al SBC. Observé que esta solución era razonable ya que la base se podía reinstalar con facilidad. Ten en cuenta que, debido a la poca soldadura utilizada en la fabricación de la PCB y la ausencia de la base que alojan los pines, es muy fácil que se suelte alguno, así que ten mucho cuidado si retiras la base del cabezal GPIO.

Figure 3 - ODROID-XU4 case closeup
Figura 3 - Primer plano de la carcasa del ODROID-XU4

Para garantizar de que las micro fugas no fuesen un problema continuo, también desarrollé una técnica para reforzar todo el bloque de agua. Usando un bastoncillo de algodón y acetona, sumergí el bastoncillo en la acetona y luego lo froté con cada lateral del bloque de agua y las esquinas. Repetí este proceso 2-3 veces por cada lado para que el ABS se derritiera y formara una película continua, minimizando significativamente la posibilidad de que se formasen microgrietas en el bloque de agua. No he tenido ninguna fuga recurriendo a este método. Si la carcasa se fabricara con un molde, este problema no existiría. Al tratarse de proceso de fabricación por capas de impresión 3D tuve que lidiar con este problema.

Otro consejo que vale la pena mencionar para por sumergir el tubo de 1/4” en agua hirviendo para formar las curvas necesarias con la finalidad de que las conexiones no estén bajo tensión una vez ensambladas. Sumergido el tubo unos segundos bastará para ablandar el plástico lo suficiente como para formar cualquier forma que pueda necesitar y ésta se volverá permanente una vez que el plástico se enfríe. Gracias a este truco también nos resultará más fácil colocar el tubo sobre las púas.

Lanzamiento Beta del Diseño

Estoy en un punto en el que puedo hacer una versión beta del diseño a pesar de que el intercambiador de calor no está completo. Muchos radiadores incorporan una bomba dentro, por lo que cualquier persona que tenga alguno procedente de un sistema INTEL/AMD podría crear un económico SBC refrigerado por agua utilizando este diseño beta.

No es práctico probar todas las configuraciones posibles de SBC y carcasas; También puedes recurrir a versiones refrigeradas por aire. Ya han pasado varios meses desde que hice varias pruebas con SBC y éstas estaban limitadas por el SBC ODROID que poseía. No se han realizado pruebas operativas en este caso.

Figure 4 - ODROID Water Cooled Cases (MC1, N1, C2 and XU4)
Figura 4 - Carcasas ODROID refrigeradas por agua (MC1, N1, C2 y XU4

Desde entonces, he reescrito completamente el algoritmo de la carcasa para OpenSCAD y he agregado nuevas funciones. El ODROID-N2 fue lanzado y el ODROID-H2 volvió a estar disponible, así que tenlo en cuenta y enviame cualquier comentario o sugerencia que tengas si has probado uno de estos SBC, no es que el ODROID-N2 necesite refrigeración por agua o un nuevo sistema de refrigeración.

Archivos de Diseño de la Carcasa de Refrigeración por Agua del SBC

Es necesario tener el SBC Model Framework y su directorio debe instalarse en el mismo directorio principal que el directorio SBC Water Cooled Case. Si deseas utilizar una estructura de directorio diferente, las declaraciones de inclusión y uso en sbc_water_cooled_case.scad deben cambiarse en consecuencia.

use <../sbc_models/sbc_models.scad>
include <../sbc_models/sbc_models.cfg>
Puedes conseguir el SBC Model Framework en los foros ODROID en https://forum.odroid.com/viewtopic.php?f=53&t=33823

Prueba Inicial del Bloque de Agua

No sabía muy bien cómo funcionaría un bloque de agua de un tamaño tan reducido. Sé que el ODROID-XU4 tiene un SOC relativamente pequeño, es uno de los SBC más controvertidos a la hora de refrigerar cuando se ejecuta a 2Ghz, y sí, funcionó. Este éxito es una muy buena señalar para su implantación en la mayoría de SBC. Después de más de un año y medio de trabajo en el proyecto, finalmente llegó el momento de hacer la prueba inicial y averiguar con certeza si estaba ante un diseño viable. No es una prueba exhaustiva, ya que la definitiva vendrá cuando el intercambiador de calor se incorpore al sistema.

Banco de Pruebas y Parámetros Operativos

Se utilizó un radiador de cobre de 120 mm y un ventilador de 120 mm para probar el bloque de agua utilizando la imagen HK Minimal Ubuntu 18.04. Todas las pruebas se llevaron a cabo con A15@2ghz, A7@1.5ghz, memoria a 933mhz con la configuración del regulador en “Performance” para la CPU y la GPU.

$ uname -a
Linux c2n1 4.14.127-164 #1 SMP PREEMPT Wed Jun 19 17:28:22 -03 2019 armv7l armv7l armv7l GNU/Linux

Figure 5 - Waterblock Test Bed
Figura 5 – Banco de pruebas del bloque de agua
Kernel compile at 2ghz @ 71F(21.66c) Ambient Temperature
real 25m12.282s
user 172m3.503s
sys 16m48.678s
Figure 6 -Kernel Compile Test 2ghz
Figura 6 - Prueba de compilación de Kernel a 2ghz

Me pareció interesante ver que el tiempo de compilación es ligeramente mejor que el tiempo de compilación cruzada del ODROID-H2 probado en un estudio reciente de cnx-software.com. https://www.cnx-software.com/2019/07/14/odroid-h2-review-ubuntu-19-04/ El autor comparó la compilación cruzada en ODROID-H2 de un kernel ODROID-XU4 con un tiempo de compilación nativo ODROID-XU4Q. La temperatura ambiental durante esa prueba fue más alta. Desafortunadamente no tengo un ODROID-H2, así que no puedo duplicar la prueba para comparar el rendimiento con la misma temperatura ambiental. Otra nota en relación a la prueba de compilación del kernel; tras completar la prueba, me di cuenta de que ésta se había estado ejecutando sobre un kernel stock que tenía habilitadas las denominadas transparent huge pages (THP). No estoy seguro de si esto ayudó o perjudicó al tiempo de ejecución, pero como me interesaban los resultados térmicos, no le di demasiada importancia. La prueba BOINC usó el mismo kernel.

Temperatura Ambiental de la Prueba Boinc 8 hilos de ejecución @ 72(22.22c)

La carga de trabajo de 8 hilos de ejecución de BOINC Universe@home fue usada para las siguientes pruebas a 2ghz, 1.9ghz y 1.8ghz durante aproximadamente 1 hora cada una. Se usó la misma carga de trabajo pausando el procesamiento de BOINC hasta que el SOC se enfriase, se ajustó la frecuencia del reloj y luego se reanudó la carga de trabajo de BOINC. Como es evidente en el cuadro que aparece a continuación, dos hilos de ejecución terminaron aproximadamente 10 minutos antes durante la prueba de 1.8 ghz. Creo que los resultados siguen siendo válidos considerando que no hubo cambios en los últimos 10 minutos de las pruebas de 1.9ghz o 2.0ghz. Al observar la drástica diferencia de temperatura una vez que se completaron los 2 hilos de ejecución, inicialmente supuse que ambos estaban funcionando con núcleos A15, pero después de examinar los datos de la prueba más de cerca no pude corroborar esta conclusión porque la temperatura en todos los núcleos A15 cayó proporcionalmente. Esto parece indicar que podrían haber sido los dos núcleos A7. No se hubiera esperado tal disminución y uniformidad en la temperatura del núcleo A15 si ese fuera sido el caso. No he hecho ningún otro análisis o prueba para confirmar esta hipótesis, por lo que aún está por determinar. Por simplicidad, el gráfico muestra el núcleo A15 más popular para cada frecuencia probada.

Figure 7 - BOINC Test at 2ghz, 1.9ghz and 1.8ghz
Figura 7 - Prueba BOINC a 2ghz, 1.9ghz y 1.8ghz

Figure 8 - BOINC htop
Figura 8 – htop BOINC

Resumen

La prueba de compilación del kernel pudo mantenerse aproximadamente en los 68 °C y las cargas de BOINC también funcionaron bien en las distintas frecuencias de la prueba. Es posible realizar algunas pequeñas mejoras en el rendimiento térmico añadiendo un fluido con mejores propiedades de absorción térmica, velocidad de flujo variable o ajustando los patrones de flujo a través del bloque de agua. Espero terminar el diseño del intercambiador de calor para poder realizar pruebas más exhaustivas con el sistema completo.

Listado Materiales XU4 Coste (USD)
Púas 1/4”, ABS $.09 x 2 $0.18
Tubo 1/4” 1’ $0.15
Cobre 1/8” 15.5mm x 16.75mm $0.38
Bomba 5v 1.5w .5 L/min $5.00
Filamento Plastico ABS, 30g $0.34
Pegamento y Electricidad $0.25
Sub-Total $6.30

Del presupuesto de 14$, quedan $ 7.70 para el intercambiador de calor. Tengo varios diseños en los que estoy interesado actualmente. Aunque la bomba actual ha funcionado bien, también he estado viendo otras opciones para reducir su tamaño y coste. Si este proyecto tiene éxito, la refrigeración por agua del SBC puede ser económica y permite ampliar la envoltura térmica al permitir que un SBC funcione sin estrangulamiento a temperaturas ambiente altas mientras aumenta el rendimiento en el mundo real de SOC utilizando procesos de fabricación más antiguos.

Los archivos de diseño de OpenSCAD, los datos de prueba y los scripts gplot están disponibles en el foro https://forum.odroid.com/viewtopic.php?f=98&t=35751.

Be the first to comment

Leave a Reply