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.
Para poder unir lo mejor de ambos reguladores de tensión, el step-down y el regulador lineal, decidí realizar el siguiente circuito. Por un lado el MPM3610 va a regular la tensión de entrada a 3,9V y tras pasar por un filtro formado por una ferrita y un condensador para quitar ruido de alta frecuencia (el MPM3610 funciona a 2MHz), regular la tensión de 3,9 a los 3,3V que necesita LibreServo con el regulador lineal AP2112. El AP2112 es un regulador lineal muy compacto capaz de entregar 700mA sin despeinarse, con un PSRR, factor de rechazo a fuente de alimentación o filtro ante ruido, muy bueno entre reguladores lineales y una caída de tensión máxima de 250mV siendo de sólo 50mV cuando está dando 150mA, características muy espectaculares. Desgraciadamente el datasheet no nos muestra cómo se comporta ante ruido de una frecuencia superior a 100KHz, así que usemos la ferrita para filtrar el ruido en altas frecuencias. Un regulador lineal no es tan buen filtro como la gente piensa y en este vídeo [min 5:00] se ve precisamente ello. Aún así, el AP2112 está considerado como un regulador lineal con muy buen PSRR, así que será algo que tendré que medir.
Circuito MPM3610 y AP2112
El circuito mostrado en el esquema sería la configuración final que vamos a analizar en el artículo. Realmente, en la placa de test mediante switches se pueden seleccionar diferentes combinaciones de ferritas y condensadores, diferentes resistencias y/o potenciómetros para que el MPM3610 de diferentes voltajes en la salida, cambiar el orden del circuito para que la ferrita esté después o antes del AP2112... Es una placa extremadamente flexible para probar todas las opciones disponibles. En este artículo nos centraremos en el diseño final escogido.
Elementos de alimentación en la PCB de Test para LibreServo
MPM3610
Este compactísimo step-down es capaz de dar 1,2A a pesar de su diminuto encapsulado. Puede ser alimentado desde 4,5V hasta 21V, un rango perfecto para LibreServo, pero para poder ser alimentado a 21V REN, que es la resistencia de pull-up que hay que poner en el pin EN para habilitar el step-down, debe de ser de al menos 145KOhms según se ve en la página 14 del datasheet, lo remarco porque tanto Arduino, Adafruit como la propia MPS, Monolothic Power Systems, fabricante del MPM3610, venden circuitos con el MPM3610 mal diseñados ya que son anunciados como que admiten hasta 21V de entrada pero tienen una REN de 100K con lo que realmente sólo admiten 16,5V. Esto lo he hablado con su departamento técnico y me lo han confirmado, así que cuidado al comprar los nuevos modelos de arduino y alimentarlos a más de 16,5V.
Por otro lado, con un divisor resistivo se selecciona el voltaje de salida, algo estándar, en este caso se configura para que de 3,9V aproximadamente, dando margen para poder funcionar sin problemas hasta con el voltaje mínimo admitido de 4,5V y dando margen también para poder luego post-regular a 3,3V en el regulador lineal. Además, tiene varios modos de funcionamiento, a grandes rasgos está el modo de bajo consumo (AAM) en el que conmuta a menor frecuencia, gasta menos pero genera una señal más ruidosa, y el modo de alto rendimiento (CCM) en el que conmuta a su máxima frecuencia (2MHz) y con la que consigue el menor ruido pero consumiendo algo más. El MPM3610 cambia de modos en función de una resistencia de pull-down en el pin AAM, pero si dicho pin se deja flotante (sin conectar a nada), el MPM3610 siempre funcionará en el modo CCM, el cual es el que queremos para LibreServo.
Ferrita
Modelo simplificado y medición de una Ferrita
La ferrita es un componente que se utiliza para filtrar ruido. Es un componente que se asimila a una bobina y una resistencia en serie que varía en función de la frecuencia, lo que hace de manera muy básica, es que a mayor frecuencia más resistencia opone y por lo tanto reduce el ruido de altas frecuencas disipándolo en calor. Generalmente se suele usar para filtrar la alimentación hacia componentes analógicos, como sensores o el AD de los microcontroladores, pero aquí lo uso para pre-filtrar la salida del MPM3610 antes de llegar al AP2112. A la hora de seleccionar una ferrita por norma se suele recomendar usar una ferrita de al menos 5 veces el valor de la corriente que va a circular y una resistencia de al menos 450 Ohms pero con una resistencia ante DC menor posible, aunque hay muchos más parámetros a mirar. La ferrita escogida es una ferrita de 2A y 600 Ohms, pero sólo 0.1Ohms en DC, además es bastante pequeña, ya que su encapsulado SMD es un pequeño 0603.
AP2112
Por último, el regulador lineal escogido es uno bien conocido y muy bien valorado por su bajo precio pero características más que adecuadas como ya hemos comentado. Es un regulador lineal que permite hasta 6V de entrada, lo cual sería un problema pero al tener el MPM3610 haciendo el mayor trabajo de regulación, se evita el problema. Su encapsulado es muy reducido para ofrecer hasta 700mA de corriente de salida. Tiene una caída máxima de sólo 250mV pero en condiciones normales ronda los 50-150mV, lo cual deja margen más que suficiente hasta los 3,9V que regula el MPM3610. Además, tiene un muy buen comportamiento ante el ruido con un PSRR bastante alto.
Análisis
A la hora de probar el circuito, igual que hice en el análisis del sensor de corriente ZXCT1010, voy a analizar diferentes puntos que creo son los más interesantes y críticos:
- Ruido con diferentes cargas de corriente
- Ruido ante cambios de corriente
- Necesidad de la ferrita y/o del regulador lineal
Ruido con diferentes cargas de corriente
Voy a analizar el comportamiento de los diferentes elementos de la alimentación, step-down, ferrita y regulador lineal, en diferentes escenarios de consumo de corriente, 0.26mA, 48.5mA, 97mA y 243mA, que corresponen a una carga mínima, casi nula a modo de control, una carga que sería el consumo básico aproximado del microcontrolador STM32F302, un consumo algo por encima del esperado a LibreServo y por último, un consumo máximo esperado en la peor situación de consumo (con todos los componentes consumiendo en su pico y con colisiones en el puerto de comunicaciones serie).
En las siguientes cuatro fotos, el canal uno(1) corresponde al MPM3610, el canal dos(2) corresponde a la salida del filtro de la ferrita y el canal tres(3) corresponde a la salida del AP2112.
Centrándonos en el MPM3610, se ve cómo funciona a 2MHz en todas las situaciones exactamente como habíamos dicho que queríamos que trabajase. Su ruido se mueve entre 30mVpp y 60mVpp, cuanto más consumo, más ruido. Ambas lecturas son claramente superiores a las anunciadas en el datasheet. Por otro lado, la ferrita hace un trabajo mucho mejor del esperado y consigue filtrar prácticamente todo el ruido, no me esperaba un desempeño tan bueno, eso sí, nos fijamos que cuanto más corriente pasa, mayor es el voltaje que se "pierde" en la ferrita. Por último, el regulador lineal hace el trabajo esperado y genera los 3,3V en cualquier circunstancia sin problema alguno.
Comportamiento ante diferentes corrientes; 0.26mA, 48.5mA, 97mA y 243mA
Ruido ante cambios de corriente
Para analizar el comportamiento ante un cambio de corriente, voy ver cómo se comportan los diferentes elementos de la alimentación ante un salto repentino de corriente de 48.5mA a 243mA y de 243mA a 45.5mA.
En las dos siguientes fotos vemos cómo en el primer canal el MPM3610 tarda unos 30µs en esbilizarse con una oscilación de unos 30mv en ambos casos. En el segundo canal vemos algo muy interesante. La ferrita debido a su componente inductor se opone más al cambio de corriente y toma unos 45µs en estabilizarse, pero debido a su componente resistivo, dependiendo de la corriente vemos cómo se estabiliza 50mV más bajo cuando aumentamos la corriente y 50mV más alto cuando la disminuimos, lo que nos da una R de unos 0,2 Ohms en continua, que aunque es el doble que lo que pone en el datasheet, sigue siendo muy bajo. Por otro lado, vemos una oscilación de unos 70mV. Por último, en el tercer canal vemos como el AP2112 es el que mejor se comporta estabilizándose en 8-10µs y con una oscilación de unos 30mV.
Comportamiento ante cambios de corriente. 48,5mA -> 243mA -> 48,5mA
Necesidad de la ferrita y/o del regulador lineal
Viendo el resultado de las pruebas anteriores, si queremos cierta exactitud en la parte analógica, ya que en la digital no habría mayor problema, no podemos alimentar directamente con la salida del MPM3610 ya que es relativamente ruidosa. La ferrita hace un trabajo sobresaliente filtrando ruido, pero ante cambios de corriente su desempeño no es el más adecuado. Por último, el AP2112 parece comportarse de la manera esperada. Sólo nos quedaría una duda. ¿Es necesaria la ferrita?
En la primera foto se ve cómo se comporta la ferrita ante ruido lento. Una de las veces que estaba tomando medidas, el MPM3610 generó ese ruido "triangular" por encima del ruido a alta frecuencia que hemos visto. Ese ruido la ferrita no es capaz de filtrar, ya que la ferrita sólo filtra ruido de alta frecuencia. Por otro lado, en las dos siguientes pruebas vemos cómo se comporta el AP2112 sin la ferrita tanto en máximo consumo de 243mA, cuando el MPM3610 es más ruidoso, como en un cambio de corriente de 48,5mA a 243mA. El comportamiento es excelte, me ha sorprendido mucho. El AP2112 filtra el ruido del MPM3610 sin problema alguno comportándose exactamente igual con o sin ferrita.
Entonces, ¿es necesaria la ferrita? Viendo los datos, la "pareja" del MPM3610 con el AP2112 se comporta de una manera sobresaliente pudiera parecer que la ferrita no es necesaria, pero hay que tener en cuenta dos factores, la ferrita vale 0,7 céntimos de euro, vamos, que es casi gratis, y vemos claramente que filtra muy bien el ruido en alta frecuencia así que mal no va a hacer y por nada de dinero facilitará el trabajo al AP2112.
Comportamiento ante cambios de corriente. 48,5mA -> 243mA -> 48,5mA
NOTA: Después de haber escrito el artículo, me di cuenta que para que el MPM3610 pudiera funcionar de manera adecuada desde 4,5V, el voltaje de salida del MPM3610 debería de ser de 3,6V y no de 3,9V. Desgraciadamente con un Vin de sólo 3,6V el comportamiento del AP2112 no es el mismo y ante cambios de corriente tarda más en estabilizarse y con oscilaciones más pronunciadas. Tras sopesarlo mucho, 3,8V ofrece un resultado idéntico que 3,9V y si se alimenta LibreServo por debajo de 4,7V, el MPM3610 sigue funcionando pero rebajando su voltaje de salida 0,9V aproximadamente sobre la entrada.