PCB

Manual primer proyecto STM32. Parte 1: Diseño Electrónico

Hace años me costó bastantes dolores de cabeza tener todas las piezas claras y como sé que el artículo más visitado de LibreServo es Software para programar STM32, voy a intentar realizar un artículo que conglomere todos los pasos necesarios para poner a funcionar desde cero un microcontrolador STM32, tanto a nivel de diseño electrónico, como de programación. Como LibreServo está basado en el microcontrolador STM32f302K8, todo irá referenciado a éste microcontrolador por facilidad, pero los pasos son exportables a todos los microcontrolador más comunes de la familia STM32 ARM Cortex de ST, de hecho, si es tu primer proyecto no sería la mejor opción con la que empezar, más que nada por el encapsulado que trae. El STM32F302C8 sería el gemelo pero en un encapsulado mucho más sencillo de soldar. Pero hay literalmente decenas de microcontroladores según lo que cada uno requiera.

Esquema electrónico mínimo para STM32 Esquema electrónico mínimo para STM32

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 en LibreServo v1b

Con la web ya acabada, por fin tenía tiempo para seguir programando y probando mi LibreServo, pero la alegría ha durado poco.

Tras soldar las tres placas juntas, procedo a alimentar LibreServo por primera vez desde una batería en vez desde el programador ST-link... y un humo blanco precedido de unas chispas hace acto de presencia. El microcontrolador STM32F302 ha quedado totalmente fundido, y existe un corto como una catedral entre tierra y la línea de 3.3V. Tras mirar en profundidad, veo que existen virutas de estaño entre las patas de mi microcontrolador, ¡justo entre vdd y vss! (alimentación y tierra). Es posible que al soldar las tres placas no haya sido suficientemente cuidadoso y alguna viruta haya ido a parar a donde no debía.

Error en el diseño
Error en el diseño de LibreServo v1b

¡Primera LibreServo soldada!

El título lo dice todo... ¡he soldado la primera LibreServo!

Al final, no sé si por suerte o por gracia divina, soldar el stm32F302 ha sido relativamente fácil. Puse mucho flux, incluso pensé que había puesto demasiado y tendría que limpiar y repetir todo, pero fue hasta demasiado fácil soldar el microcontrolador. Curiosamente los "gate drivers" FAN3227TMPX, que también tienen los pines debajo del propio encapsulado, me dieron muchos más problemas, pero en principio a falta de probarlos, están bien soldados.

PCBs LibreServo v1b soldadas
PCBs LibreServo v1b soldadas

¡Ya han llegado las PCB

Tengo que decir que estoy ciertamente asombrado de manera muy positiva con JLCPCB. No me han cobrado absolutamente ningún extra por la fabricación (a pesar de que panelicé 6 circuitos en cada PCB), el transporte ha sido muy rápido y sin incidencia alguna en ambos pedidos y ¡hasta me han regalado bolígrafos! En tan sólo dos semanas las han fabricado y ya las tengo aquí en mi casa. ¡Muy buen trabajo!

PCBs LibreServo v1b
PCBs LibreServo v1b

Diseños, esquemas y PCB

Tras detectar el error en el diseño en la parte de comunicación serie como comenté en las prisas, esa mala consejera, tuve que actualizar los diseños y por lo tanto, los diseños anteriormente compartidos aquí y aquí están desactualizados. Como esto podría ocurrir más veces en adelante, y como también quiero compartir los ficheros en sí, dejo en ésta entrada la última edición de los diseños en foto y además, en Github dejo los ficheros subidos. Del fichero del diseño de la PCB, hay 4 versiones. Las versiones a, b y c corresponden a las versiones especiales que mandé a fabricar como comenté y expliqué en la entrada de mi primer pedido de LibreServo.

Esquemas y diseños
Buses

¡Primer pedido de LibreServo!

!Acabo de realizar el primer pedido de PCBs! Además, he realizado también el pedido de los componentes.

El pedido de PCBs lo he realizado a China (en este aspecto, su calidad/precio es incontestable). Generalmente suelo hacer los pedidos a seedstudio, pero la verdad es que siempre me suele generar problemas y sobre-cargos. O mis placas son "demasiado complicadas" o cualquier otro tipo de excusa vale. Investigando, esta vez opté por JLCPCB. Tienen una oferta muy llamativa de 10 placas a 2€ para tu primer pedido, y luego a 5€(ambos precios son extraordinariamente bajos). Además, la página web tiene alguna utilidad interesante, como que tenga un visor de los ficheros gerber files que has añadido al pedido.

Primer pedido de PCBs LibreServo v1
Primer pedido de PCBs LibreServo v1