"Magic Smoke" en LibreServo ¡Otra vez!

Estaba muy contento con el blanco del led Asmb-mtb0-0A3a2 y empecé a configurar el puerto serie.

El puerto serie debido a la altísima velocidad que puede alcanzar (9Mbps) hay que configurarlo mediante DMA, en otras palabras, que el envío y recepción de datos se haga en background sin usar ciclos de reloj de nuestro microcontrolador. El envío es fácil, pero la recepción requiere que se sepa de antemano el número de bytes a recibir... lo cual no sabemos. Habrá que darle alguna vuelta a la programación, pero tengo alguna idea.

Sea como fuere, primero empecé a configurar el puerto serie de transmisión, TX. Y tras unas pruebas... fumata blanca.

TX de LibreServo v1.c funcionando
TX de LibreServo v1.c funcionando

Resistencias para el LED RGB [Asmb-mtb0-0A3a2]

Tras muchísimos cálculos matemáticos... Todo se ha ido al garete y la realidad es bastante distinta a la calculada. ¡Menos mal que decidí comprar un montón de valores de resistencias para poder hacer las pruebas! El mayor problema que he tenido, es que el datasheet de Asmb-mtb0-0A3a2 no muestra dato alguno para cuando el led funciona a menos de 5mA, que es precisamente en el rango en el que funciona en LibreServo el LED.

Primera LibreServo v1.c soldada

Ya tengo la primer LibreServo v1.c soldada y estas son las impresiones tras soldar los componentes.

Hice varios cambios en el diseño para facilitar soldar los componentes con encapsulado QFN, como el microcontrolador y el driver de mosfets, alargando los pines de los footprint y la mejora ha sido notoria. Mucho más fácil soldar y comprobar que todo está bien soldado.

También hice cambios con la elección de componentes, el más evidente fue con el regulador lineal. El nuevo regulador lineal y su nueva disposicion, han conseguido reducir la "altura" mínima de LibreServo ¡en 1.9mm! Ahora es mucho más compacto.

Primer LibreServo v1.c soldado
LibreServo v1.c saldado

¡Ya me ha llegado LibreServo v1.c!

Tras 2-3 semanas ya tengo la nueva versión de LibreServo v1.c. A primera vista, lo que mejor se aprecia es el texto en las placas, ahora muchísimo más claro y conciso que en las anteriores ediciones.

Tenía bastante miedo con el fresado (corte interno en la panelización), pero ha quedado perfecto. Estoy muy contento por ese lado.

Pedido de LibreServo v1.c
LibreServo v1.c pedido

Problemas con JLCPCB

Como comenté en nuevo diseño y pedido de LibreServo, realicé el último pedido el domingo 7 de Octubre. Desgraciadamente el martes 9 de octubre fue cancelada la compra y me devolvieron el dinero.

Había mandado el mismo diseño que había mandado anteriormente, pero según propias palabras de jlcpcb, en el primer pedido hacen un poco de manga ancha y dejan pasar muchos diseños que en órdenes posteriores van a bloquear por no ajustarse a sus estándares de fabricación.

Tras cruzas 16 emails con jlcpcb, ya tengo el diseño final:

Diseño final en fabricación de una de las PCB
LibreServo v1.c final

Nuevo diseño y pedido de LibreServo [v1.c]

Tras un mes desde que detecté el error, cómo corre el tiempo..., ¡ya tengo una nueva versión de LibreServo y ya están fabricándose en JLCPCB!.
Ahora mismo ando con muy poco tiempo, pero la tardanza no sólo ha sido por mi poco tiempo, también he decidido introducir varios cambios y mejoras:

  • Cambiar tamaño y limpieza de textos
  • Cambiar encapsulado del regulador lineal
  • Cambiar condensadores y resistencias para que no entorpezcan
  • Modificar el valor de las resistencias del led RGB
  • Poner agujeros pasantes para un futuro encóder
  • Modificar footprint de varias resistencias y condensadores para optimizar el espacio
  • Modificar pistas serie para que sean curvas
  • Modificar cableado conectores (orden al revés)
  • Mover el gateMosfet para que no coincida con el conector
  • Agrandar footprints de los gateMosfet y del microcontrolador
  • Generar dos pines de alimentación
  • Añadir normbre y versión a la placa
LibreServo v1.c
LibreServo v1.c

Error in LibreServo v1b

With the website finished, I finally had time to continue programming and testing my LibreServo, but the joy was short-lived.

After soldering the three PCBs together, I proceed to power the LibreServo for the first time from a battery instead of the ST-link programmer ... and a white smoke preceded by sparks made an appearance. The STM32F302 microcontroller has been completely blown up, and there is a huge short between ground and the 3.3V line. After looking closely, I see that there are tin chips between the legs of my microcontroller, right between vdd and vss! Is it possible that when welding the three PCBs I was not careful enough and some "chips" has ended up where it should not?

Design error
Error en el diseño de LibreServo v1b

Así se ha fabricado LibreServo

Interesantísimo documental sobre cómo se fabrican las placas PCB. Si ya de por sí es interesante, da la casualidad que el reportaje es precisamente sobre la fábrica de JLCPCB, que es precisamente donde he fabricado la primera partida de placas de LibreServo.

¡No dudéis en echarle un ojo al reportaje!

Reportaje sobre JLCPCB, fábrica de LibreServo
https://youtu.be/ljOoGyCso8s

Control led RGB usando TIM17

Una de las primeras versiones que hice de LibreServo, sólo en esquemas y mirando posibles configuraciones con CubeMX, el led RGB se hubiera controlado mediante el timer 2, TIM2, directamente con sus salidas PWM. Es la forma más sencilla y directa de hacerlo. Pero más adelante y por petición de varias personas, decidí añadir cierta compatibilidad con un posible futuro encóder magnético. Eso me forzaba a reservar TIM2 para una posible lectura del encóder y por tanto dejaba al led RGB sin la salida directa de TIM2. Finalmente lo tuve que instalar en salidas digitales "normales" y dejar recaer en un futuro software el control del led RGB con un sólo timer, en éste caso, el timer 17.

La idea de este programa es además de configurar y usar el timer 17, controlar el led RGB mediante interrupciones del timer 17. Es un sencillo programa que nos obligará a utilizar y configurar más características de nuestro LibreServo de cara a futuras características.

Control led RGB mediante interrupciones con el TIM17

Subscription

Receive an email for each new article.

This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

7 + 4 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.