Software para programar STM32

Recuerdo como si fuera ayer que cuando empecé a programar para microcontroladores ARM (casi siempre de ST), el tortazo que me pequé fue como poco curioso y eso que tenía un buen trasfondo de conocimientos en AVR. No fue hasta que me aconsejaron CooCox hasta que empecé a avanzar. Aún así, la configuración de los periféricos del microncontrolador, o incluso, ser capaz de arrancar el microcontrolador y simplemente hacer parpadear un led era ya todo un logro. No debería de ser el único "torpe", porque ST decidió sacar en Febrero del 2014 la herramienta CubeMX. En su lanzamiento tenía más bugs que funcionalidades y como yo ya me manejaba perfectamente con ARM lo instalé y lo dejé olvidado en un rincón de mi disco duro.

Configuración de LibreServo en CubeMX
Configuración de LibreServo en STM32CubeMX

¡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

Las prisas, esa mala consejera. Segundo pedido de LibreServo

Quería realizar el pedido antes de llegar junio, así que intenté correr a última hora para poder terminar el diseño de las primeras placas de LibreServo, y nada más entrar en fabricación, ya no se puede cancelar el pedido, me doy cuenta que la parte de comunicación serie no la había terminado de hacer. ¡Menudo desastre!

En la entrada de selección de componentes de LibreServo ya comenté que iba a usar un puerto serie normal estándar pero en modo bus y full-duplex. Para poder realizar eso, a parte de software, hace falta un poco de protección en la parte hardware. Es la primera vez que realizo algo así, así que muy probablemente los valores de las resistencias no sean las más adecuadas.

Cambios en el esquema en LibreServo v1b
Detalle pads

¡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

Diseños, PCB

No es objetivo de esta entrada explicar las decisiones de "routing" que se han llevado a cabo, eso sí, apuntar que todo el routado lo he realizado a mano. Comentaré sólo ciertos aspectos generales.

Debido al estrechísimo espacio que dispongo, me veo obligado a usar 3 placas separadas interconectadas por un "bus" de siete pines formado por una tira de pines con paso de 2mm, y por otros dos pines. Además, el potenciómetro es tan "grande", que a dicho nivel sólo se subirán los pines necesarios.

Buses en LibreServo
Buses

Diseños, esquemas

Sin poder entrar en todos los detalles y decisiones tomadas, en el propio diseño electrónico y esquemático, se ha seguido siempre el propio datasheet de los componentes seleccionados, en algún caso aumentando los condensadores de desacoplo. Dejo a continuación el esquema general completo (se ha corregido a posteriori algún detalle), y comentaré las partes en los que ha habido algún pequeño cálculo.

Primer diseño esquemático de LibreServo
LibreServo sch

Selección de componentes

Una de las principales características de LibreServo, es que no sólo valga para mis Hitec 5990TG, sino para otros servomotores de tamaño estándar. Con la idea de que éstos sean potentes y baratos y LibreServo los haga precisos e inteligentes.

 

Banco de pruebas, servomotores

Con dicha idea en mente, decidí comprar posibles servos baratos de características mecánicas similares a mis hitec. La idea es:

  • No gastar más de 30-35€ en cada servo (los hitec rondaban los 100€ y los Dynamixel MX-28T, del mismo par pero inteligentes... ¡250€ a día de hoy!).
  • 30Kg/cm de fuerza o más.
  • De tamaño estándar.
  • Engranajes de titanio. Esta característica encarece mucho el precio...
  • Motores coreless. Los motores brushless que ahora se empiezan a usar, son un tanto complicados de manejar, y por otro lado, los motores normales de escobillas tienen una vida útil bastante limitada, así que los coreless serán nuestra elección.

Teniendo todo esto en cuenta nos encontramos [...]

Objetivos LibreServo

Como ya mencioné en Un poco de historia sobre mi, en mi primer bípedo me encontré varios obstáculos, el precio de los servomotores y la calidad de los mismos fueron de los mayores condicionantes. Para mi segundo bípedo (ya tenía un trabajo), decidí echar la casa por la ventana y no mirar el precio de los servomotores. Quería unos potentes, de buena calidad y que el paso del tiempo y el uso no los dañara. Acabé comprando unos Hitec 5990TG, servomotores de 30Kg/cm de fuerza y engranajes de titanio. Los conseguí a muy buen precio, con un cambio euro-dólar extraordinariamente favorable. Aún así, el precio del bípedo se me había triplicado y tras su uso detecté un nuevo problema, eran potentes y de calidad claramente superior a los que tenía antes, pero seguían siendo "tontos". Finalmente y por diferentes razones (entre otras el precio desorbitado que suponía construir un bípedo a mano), dejé de construir bípedos y me volqué con los coches (siguelíneas, rastreadores...).

DY-BOT v2
DY-BOT v2

Suscripción

Recibir un email cuando se publique un nuevo artículo.