Tenemos un ganador. Resultados de las pruebas en PCB test 2


LibreServo enviando datos por RS485 a Arduino

Tras varias pruebas y análisis, el hardware de LibreServo ya está finalmente elegido y funcionando, ¡incluso el puente en H que me daba muchos problemas! En general todas las partes de LibreServo se quedan como estaban, porque ya funcionaban correctamente, salvo lo comentado en este artículo.

Nueva PCB Test v2 para LibreServo


Hola Mundo en PCB test v2 de LibreServo

Hace un mes analizaba los resultados y conclusiones obtenidos con la placa de test v1 de LibreServo e intentando no perder el impulso en este mes he diseñado, he mandado a fabricar y ¡ya he montado la placa de test v2 de LibreServo! 🥳

Es la primera PCB que diseño de 4 capas para LibreServo y espero que eso mitigue ciertos problemas con el puente en H que creo que vienen, en parte, por el ruido electrónico. Por lo demás, es una PCB en la que ya están los componentes finales, es más cercana al diseño final y en la que me he obligado a poner los componentes lo más cerca posible entre sí para ver el límite real entre lo que se diseña y lo que luego se puede soldar fácilmente sin complicar en exceso las cosas, el papel lo aguanta todo pero luego hay que llevarlo a la realidad.

Resultados y conclusiones de las pruebas

RS-485 9 Mbps Hola Mundo
RS485 Hola mundo a 9 Mbps

Tras analizar todas las partes de LibreServo, he decidido realizar de nuevo varios cambios de diseño. Estoy contento con los resultados obtenidos con la placa de test ya que sin ella hubiera sido imposible analizar todos los componentes por separado y detectar todos los errores y fallos que he encontrado, es algo que tendría que haber hecho desde un primer momento y que me hubiera ahorrado muchísimo tiempo. Los temas a tratar son:

  • Sensor de Corriente
  • Protección ante cambio de polaridad de alimentación
  • Nueva alimentación, mpm3610
  • Sensor de temperatura NTC
  • Nuevo led RGB más compacto
  • Comunicación serie RS-232 vs RS-485
  • Nuevo sensor magnético AEAT-8800
  • Puente en H
  • Próxima PCB (4 capas)

Análisis alimentación (MPM3610 + Ferrita + AP2112)

Circuito MPM3610 y AP2112 con Ferrita Circuito MPM3610 y AP2112

Una de las partes que más he cambiado y pensado en las versiones de LibreServo es la alimentación. En versiones anteriores fue un regulador lineal que reduje de tamaño, pero la verdad es que no estaba para nada agusto ya que si LibreServo era alimentado con tan sólo 12V, el regulador lineal debería de disipara hasta 1,74 Watios y en 16v 2,54 Watios... algo que era realmente irreal que pudiera hacerlo.

Hace unos meses descubrí el MPM3610, y esto hizo que por fin pudiera diseñar la alimentación como quería. Este diminuto componente es un más que potente step-down de 1,2A que admite hasta 21V de entrada y que ¡además tiene la bobina y el diodo incorporado! Es esto último lo que lo hace perfecto para mi diseño, por el reducido espacio utilizado, siendo el único step-down que se fabrica que tenga integrado bobina y diodo en el mismo encapsulado. La diferencia entre usar un step-down y un regulador linel es que un regulador lineal de 3,3V a 12V da una eficiencia de un 35%, mientras que el step-down del 80% o superior, el resto se disipa en calor, con lo que uno es mucho más propenso a sobrecalentarse que el otro. Lo malo de usar un step-down es que son bastante ruidosos y su salida no es tan limpia como la de un regulador lineal.

Análisis del sensor de corriente ZXCT1010

Circuito básico ZXCT1010 con protección Zener MMSZ5226BS Circuito básico ZXCT1010 con protección Zener

El primer componente que voy a analizar en mi nueva placa para testear LibreServo es el sensor de corriente ZXCT1010, el cual es una versión mejorada del sensor ZXCT1009. La mejora sobre todo es en la parte baja del sensor, cuando hay poca caída en Rsense, parte en la que quería estar ya que no quiero que se desperdicie tensión en Rsense. Además, aparejado al sensor de corriente está el diodo Zener MMSZ5226BS para evitar que la tensión de salida del sensor de corriente pueda superar los 3,3V y quemar el microcontrolador.

Nueva PCB para testear LibreServo

PCB para test LibreServo Placa para Tests de LibreServo

Ha pasado mucho tiempo desde mi última actualización, una pandemia de por medio y muchos cambios. Sea como fuere, LibreServo sigue avanzando, poco a poco, pero sigue 💪.

Durante las versiones anteriores de Libreservo me he encontrado continuamente con diferentes problemas en el diseño y sin saber exactamente cómo se iban a comportar diferentes componentes de LibreServo, además, intentar luego debuguear la placa siendo tan compacta y sin espacio extra para poder sacar ni un cable para poder ver las señales complicaba siempre todo demasiado.

Compras y cambios de los últimos meses en LibreServo

DS1054Z LA1010 GPS3010D DS3235 Nuevo material y herramientas para LibreServo

LibreServo va a sufrir varios cambios importantes y he decidido cambiar el método en el que estoy realizando las pruebas. Además, he decidido rascarme el bolsillo y comprarme algo más de equipamiento para medir todo lo necesario de una manera externa y precisa y así saber de antemano qué esperarme en LibreServo.

LibreServo cambia de Dominio

Cambio de dominio a Libreservo.com LibreServo pasa a ser LibreServo.com

Este último mes y medio he tenido varios problemas con mi dominio LibreServo.eu que finalmente han desembocado en un cambio de dominio.

Hace dos meses me llegó un email de mi "gestor de dominios" indicando que la autorrenovación había tenido un problema. Desgraciadamente dicho e-mail fue a spam y no me enteré hasta que perdí el dominio quedando en barbecho mes y medio. Durante ese periodo me ofrecieron pagar 100€ para recuperarlo... pero me parecía un abuso y preferí esperar.

Mes y medio después, el dominio se liberó definitivamente y se podía volver a comprar, pero para mi asombro ¡DomainProfi se había adelantado y me habían robado el dominio! Hablé con ellos y me indicaron que si quería mi dominio de vuelta tendriá que pagar, ¡menudo robo más descarado! 🤬 Así que decidí mandarles a la mierda y cambiar de dominio a LibreServo.com, algo que debería de haber hecho desde el primer momento hace mes y medio.


¡Larga vida a LibreServo.com!

Manual primer proyecto STM32. Parte 4: Programar un microcontrolador STM32


Resultado final

En esta última parte vamos a grabar el programa Hola mundo para STM32 que vimos en la anterior parte en el microcontrolador.

Compilar "Hola Mundo"

Lo primero que tenemos que hacer es compilar el código pulsando el botón de Build All y asegurarnos que todo ha ido correcto, deberemos de ver el mensaje de Build Finished. 0 errors. Es posible que la primera vez que compilemos nos muestre unos warning de funciones que hemos definido pero que no hemos utilizado. No pasa nada, es completamente normal.

Uso de ST-LINK

Antes de seguir con la configuración voy a hacer un pequeño inciso y explicar el uso de los programadores ST-LINK v2. Como hemos visto en la primera parte de este tutorial, en la sección de SWD en STM32, vimos que tan sólo necesitaremos 4 pines, incluyendo alimentación, para programar un microcontrolador STM32 mediante SWD. Los dos programadores que utilizamos, tanto el ST-LINK v2 de la placa stm32f0discovery como el clon de ST-LINK v2, se conectan al ordenador mediante USB y son reconocidos automáticamente, en el caso que se muestra además, es el clon que se ha detectado perfectamente como un ST-LINK v2 original. En el clon los pines a utilizar son los que se muestra en la foto y no requiere de mayor configuración salvo actualizar el firmware como veremos más adelante. Para usar el ST-LINK de la placa stm32f0discovery sí que necesitamos de unas pequeñas modificaciones.

Manual primer proyecto STM32. Parte 3: Programación

Código Base Código base recién creado

En éste paso, ya tendríamos que tener el código generado como hemos visto en IDE para STM32. El código se genera por defecto en src y Drivers de nuestro proyecto. Nuestro fichero principal es main.c que está dentro de src. Abrirlo y cambiar la perspectiva a C/C++. Veremos que en la nueva perspectiva, la interfaz ofrece un montón de ayudas y marcadores de texto que nos hará el trabajo mucho más productivo y fácil.

Antes de nada, nos tenemos que fijar en que CubeIDE nos genera a lo largo de todas las secciones, ficheros y librerías un montón de secciones encajadas entre títulos /* USER CODE BEGIN 0 */ y /* USER CODE END 0 */. Es en dichas secciones, y sólo en dichas secciones, donde programaremos. Si programamos fuera de dichas sencciones, CubeIDE no respetará nuestro código y lo borrará la próxima vez que regeneremos el código base, por ejemplo tras añadir una nueva interfaz o configurar nuevos pines. A veces, CubeIDE nos genera varias secciones seguidas de USER CODE en la misma sección y a la misma altura, es indiferente en cuál programemos, es sólo para nuestro orden. Se aconseja no borrar o modificar secciones de USER CODE independientemente de que no programemos en ellas.

Lo primero que siempre hago en todos mis programas es una serie de definiciones y añadir unas pequeñas funciones básicas que me ayudarán mucho a la hora de hacer los primeros programas y pruebas.

Suscripción

Recibe un email por cada nuevo artículo.

Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.

2 + 13 =
Resuelva este simple problema matemático y escriba la solución; por ejemplo: Para 1+3, escriba 4.