En un proyecto anterior, discutí opciones para usar Transformadores de Corriente, y construí un amplificador de un solo canal/rectificador de precisión para uno. En este proyecto, estamos llevando esa idea a nuevos niveles.
La casa que alquilo solo tiene 240V/16A para el garaje. Esto es desafortunado, porque como Maker, tengo algunos juguetes bastante divertidos en mi garaje, como una fresadora CNC y un cortador láser. Tengo algunos moldes para mecanizar para un próximo gran proyecto en el que estaré construyendo algunas partes de plástico reforzado con fibra de carbono. Mi viejo compresor hace saltar el interruptor del garaje instantáneamente cuando se enciende, así que he tenido que reevaluar mis opciones para hacer funcionar la fresadora CNC: necesita más de los 16A que tengo disponibles a plena carga de funcionamiento. Debido a esto, compré un compresor relativamente pequeño y de bajo ruido para reducir el consumo de corriente, pero necesito una manera de asegurarme de que no se encienda cuando el husillo del router CNC esté bajo una carga alta, o cuando el enfriador del husillo esté funcionando.
Mi solución es construir un monitor de corriente de múltiples canales, lo que me permitirá monitorear el consumo de corriente del router y el equipo asociado. Esto debería permitirme determinar cuándo es seguro encender el pequeño compresor, dependiendo de las otras cargas del sistema. Necesito tener un flujo de aire constante hacia el husillo de cambio de herramientas ya que los rodamientos necesitan tener aire fluyendo a través de ellos para mantenerlos limpios, y el pistón en el cambiador necesita aplicar presión constante a la herramienta para asegurar que no se deslice, por lo tanto, la presión de aire es vital.
Tendré 6 canales de salida para la placa controladora para igualar los 6 canales de detección de corriente. No necesito tantos canales para mi proyecto, pero como un diseño de código abierto genérico, es posible que quieras hacer algo diferente con la placa que yo. Planeo tener también una pantalla en la placa, para mostrar la corriente en tiempo real.
Este proyecto no es un medidor de potencia. No tiene ninguna capacidad para monitorear el voltaje. Por lo tanto, tampoco puede monitorear el factor de potencia de la carga. Mi requisito es puramente tratar de asegurarme de no sobrecargar mi interruptor de 16A. Si necesitas esta funcionalidad, este proyecto podría ser un buen punto de partida, ya que estaré añadiendo un pequeño transformador para aislar el voltaje de CA y reducirlo a un nivel más manejable.
Como es habitual en mis proyectos, puedes encontrar los archivos de diseño en GitHub; están disponibles para usar de forma gratuita bajo la muy permisiva licencia MIT. Esto te permite usar el proyecto libremente, como desees. Si estás buscando los componentes utilizados para construir este proyecto, puedes encontrarlos todos en mi biblioteca gratuita y de código abierto Altium Designer Library®.
Arriba está el diseño de PCB sobre el que leerás en el Visor de Altium 365; ¡una forma gratuita de conectarte con tus compañeros de trabajo, clientes y amigos con la capacidad de ver el diseño o descargarlo con un solo clic! Sube tu diseño en cuestión de segundos y ten una manera interactiva de examinarlo en profundidad sin necesidad de software pesado o potencia informática.
A pesar del número de componentes en el PCB para este proyecto, los esquemas para este monitor de corriente son bastante simples.
Los sensores de corriente son exactamente los mismos que construí anteriormente, utilizando los transformadores de corriente Talema. Tengo cinco sensores de 10A con una amplificación de la señal de 2:1, que, con rectificación, da cuatro veces la amplitud de la señal del señal de CA. El sexto sensor es de 15A con una amplificación de 1:1, lo que debería permitir monitorear la amplitud completa de la herramienta de cambio de husillo de 1800W. Este es un circuito rectificador de precisión básico y estándar. Hay circuitos rectificadores de precisión más avanzados que agregan un par de componentes extra (como un diodo en paralelo con la resistencia de retroalimentación). Para los propósitos de este proyecto, el circuito básico proporciona más de lo que requiero en términos de precisión y tolerancia.
El corazón de este proyecto es el microcontrolador, el cual tomará todas las lecturas de los sensores y determinará qué salidas deben estar activas. Estaba considerando seriamente la nueva serie de microcontroladores STM32G, pero terminé optando por un NXP LPC11U35. La principal atracción del LPC para mí es la funcionalidad de arranque por USB, lo que me permite desplegar rápidamente nuevo firmware en la placa una vez que está instalada en el gabinete de mi router CNC. Casi toda la serie LPC permite que el dispositivo arranque como un dispositivo de almacenamiento masivo USB con el ROM de arranque integrado, lo que permite copiar nuevo firmware en la unidad USB que aparece en una computadora conectada, sin necesidad de hardware o software adicional. Esta funcionalidad me permitirá desarrollar firmware en mi oficina y colocarlo fácilmente en la placa instalada.
El principal inconveniente del LPC11U35 es que es un ARM Cortex más antiguo y solo cuenta con ADCs de 10 bits. Necesito verificar que el ADC me proporcione suficiente resolución para este proyecto.
En el artículo anterior sobre transformadores de corriente, olvidé obtener el voltaje RMS de la señal del amplificador, y solo capturé el voltaje RMS de la señal del transformador de corriente.
Reconstruí el circuito del transformador de corriente en una protoboard para obtener algunas nuevas lecturas del osciloscopio. Estoy usando un relé de estado sólido activado por mi fuente de alimentación de banco para encender el calentador cerámico de 1.1kW que está colocado sobre una bandeja para hornear invertida para la aislación térmica de mi banco.
La traza azul (canal 2) es la salida del rectificador de precisión, y la traza amarilla (canal 1) es la salida de CA del sensor de corriente antes del opamp.
Con el amplificador del sensor de corriente construido según el circuito de este proyecto, tengo 1.299v RMS con un teórico 4.429A fluyendo a través de él. Esto me da una resolución de aproximadamente 293mV por amperio. Con un ADC de 10 bits (1024 valores) y un rango de 3300mv (resolución de 3.2mv), esto me da una resolución legible de aproximadamente 0.01A, lo cual no es asombroso comparado con los ADCs de 14 o 16 bits en microcontroladores más modernos, pero aún es suficiente para este proyecto, y muchas otras aplicaciones también.
¡Hay mucho que ver en esta única hoja de esquemático! Vale la pena mencionar de inmediato que el MOSFET P-Channel de pull-up en la línea USB no es necesario para las últimas revisiones de silicio para la serie LPC11U, pero voy a dejarlo porque tengo algunos MCUs antiguos a mano que podría usar para poblar esta placa y no quiero quedarme sin que mi conexión USB funcione. Si estás comprando un nuevo stock del LPC11U35, puedes prescindir de todo lo asociado con IC3.
Mientras estamos en el tema de USB, también tengo un diodo TVS que está diseñado para proteger las líneas USB 2.0 de eventos ESD. Los conectores USB son un gran lugar para una descarga ESD directamente en el microcontrolador, por lo que son mi máxima prioridad para protección.
A medida que continuamos por el lado izquierdo del esquemático, tengo un circuito integrado supervisor de reinicio para asegurar que el suministro de 3.3V sea estable antes de iniciar el MCU, con un botón para reiniciar manualmente la placa. También tengo el botón de habilitación del bootloader junto a él, ya que me gusta mantener las cosas juntas lógicamente. Para llevar la placa al modo bootloader de almacenamiento masivo USB, es tan simple como mantener presionado el botón de programación S2 y luego presionar el botón de reinicio S1. Mantener presionado el botón de programación durante un segundo o algo así después del arranque, iniciará el dispositivo en un dispositivo cliente de almacenamiento masivo USB si el cable USB está conectado.
En la parte superior derecha del esquemático, también tengo un conector estándar de depuración de un solo cable de 10 pines (SWD) para permitir que la placa sea depurada en un IDE.
Finalmente, el filtrado de entrada para el microcontrolador. Llegaremos a los conectores de E/S en una sección posterior del artículo, ¡así que no te preocupes si he pasado por alto los dos buses y cómo configurarlos! El filtrado de energía para esta placa es bastante crítico, ya que se instalará en, y será alimentado por, una máquina industrial que genera una gran cantidad de ruido eléctrico (tanto conducido como radiado). Hay más de 2000W de suministro AC-DC, un Variador de Frecuencia de 2200W que opera un husillo, servomotores DC, un enfriador industrial y un colector de polvo, todos funcionando con el mismo suministro AC. Debido a la cantidad de ruido, estoy colocando un núcleo de ferrita cerca de cada pin de alimentación con dos condensadores de desacoplamiento—normalmente en un diseño de microcontrolador tendría solo un ferrita y quizás un par de condensadores de gran capacidad, pero para este diseño quiero tener las pistas lo más cortas posible entre el microcontrolador y el filtro. Como los pines de alimentación del microcontrolador están en lados opuestos del dispositivo, elegí construir un filtro para cada pin para mantener las pistas cortas.
La ferrita para cada pin de alimentación fue elegida para tener la mayor resistencia posible a 100MHz, mientras que tenía la menor resistencia DC posible. Básicamente, intenté determinar cuánta resistencia DC estaba dispuesto a tolerar, y luego maximicé la resistencia a frecuencia para esa resistencia DC.
Mi router CNC ya cuenta con múltiples fuentes de las cuales puedo elegir, el riel de 5V es el más limpio y menos utilizado, por lo que tiene sentido alimentar la placa desde esta fuente. Como un beneficio adicional, también me permitirá alimentar la placa desde un cable USB en mi banco de trabajo. Como solo espero que una de estas fuentes esté alimentando la placa, he añadido un simple diodo a cada entrada para actuar como protección contra polaridad inversa y protección básica contra el caso de que ambas fuentes estén conectadas al mismo tiempo.
El diodo de protección fue elegido por su bajo voltaje de caída en directo para asegurar que se pudiera utilizar un regulador lineal de muy bajo costo sin que la caída de voltaje combinada de ambos dispositivos llevara el voltaje de salida por debajo de los 3.3 voltios que requiero.
Entre el regulador lineal y el diodo de protección, he añadido un filtro pi. No sé exactamente con qué frecuencias estaré tratando en la entrada, así que apunté a la mayor inductancia posible dentro de los inductores disponibles de tamaño 4-5mm. Estoy utilizando un inductor de núcleo de ferrita blindado y bobinado para obtener la menor resistencia DC que pueda, ya que esta placa podría potencialmente consumir hasta 1 amperio con todos los LEDs y Optoaisladores encendidos. Con el requisito de corriente y el tamaño conocidos, solo era cuestión de buscar un valor de alta inductancia con un inductor de baja resistencia DC que también cumpliera con los requisitos de tamaño y corriente. Coloqué un capacitor de 10uF a cada lado del inductor para completar el filtro pi, siendo este un valor de bajo costo que aún tiene una cantidad decente de capacitancia.
Probablemente no necesite optoaislar cada salida, ya que los relés de estado sólido que uso ya tienen optoaisladores incorporados, pero al ser un diseño de código abierto no sé si quizás alguien conectará directamente un relé o la entrada/salida de un controlador industrial a la placa. Como un beneficio adicional, el aislador me da tranquilidad. La corriente para el LED en el aislador es mayor de lo que el ARM Cortex puede manejar, así que tengo un MOSFET N-Channel muy barato para activar el LED en el optoaislador y uno externo que se puede ver para indicar que la salida está habilitada.
También solo necesito realmente dos salidas para mi uso en este diseño de placa, pero pensé que como proyecto de código abierto probablemente sea bueno tener un diseño más genérico. Estoy agregando 6 canales de salida para igualar los 6 canales de detección de corriente, así que si esto se usara en una máquina industrial diferente, permitiría al controlador habilitar o deshabilitar cada carga para la cual hay un sensor de corriente.
También tengo un diodo TVS que está lo más cerca posible de 5V para proteger la placa de ESD en los conectores de entrada. Planeo usar algunos conectores JST KH pre-crimpados de DigiKey para conectar mis relés de estado sólido a esta placa, que son compatibles con JST PH. También agregué un bloque de terminales de cable a placa con paso de 2.54mm a la placa, para proporcionar flexibilidad adicional para otras aplicaciones. Los cables pre-crimpados son geniales para mí, ya que puedo cortar uno por la mitad y terminar con dos cables, listos para usar con el relé de estado sólido, evitándome tener que cortar longitudes de cable y pelar dos extremos, ¡lo que potencialmente me ahorra segundos en la instalación! Pero hablando en serio, los conectores crimpeados van a ser más seguros y menos propensos a salirse o fatigarse en una máquina que tiene mucho movimiento brusco y vibración.
El último bloque esquemático de este proyecto es la pantalla LCD. Decidí usar una pantalla gráfica de Newhaven relativamente económica y robusta, ya que tienen una interfaz SPI simple. Tenía muchas esperanzas de usar una pantalla de 128x64 píxeles, pero la placa simplemente no tenía espacio, así que volví al esquemático durante el diseño de la placa y cambié el diseño para usar una pantalla de 128x32 píxeles. Necesita muchos condensadores de desacoplamiento, pero por lo demás tiene muy poco en términos de requisitos de conectividad.
Uno de los aspectos clave de este proyecto es que tengo cinco canales de sensores de corriente idénticos y seis canales de salida idénticos, lo que hace que el diseño multicanal sea ideal para este proyecto. En mi opinión, esto es algo en lo que Altium sobresale enormemente en comparación con otro software ECAD que he usado. Sus características permiten el enrutamiento rápido y el diseño de la placa y esquemáticos fáciles de leer.
En lugar de duplicar bloques de hojas esquemáticas en tu hoja de nivel superior, como se muestra a continuación, puedo hacer el esquemático mucho más limpio simplemente agregando un bloque de hoja esquemática y usando la función REPEAT en él.
Esto toma todos esos bloques esquemáticos y los convierte en un solo montón virtual de componentes. Para este proyecto, permite una única conexión desde el microcontrolador a todos los sensores de corriente. Si necesito cambiar los puertos en el bloque del símbolo esquemático, los cambios se aplicarán a todos los canales a la vez, ahorrando tiempo si mi proyecto necesita cambios durante la fase de diseño.
Al usar la función de repetición, ahora tengo todos nuestros canales de sensores agrupados, lo que hace que el esquemático sea más fácil de leer, y hará que el diseño de la PCB sea mucho más fácil cuando llegue a ese punto del proyecto.
Vamos a ver cómo aprovechar esta característica y usarla en tu diseño.
Para que las herramientas multicanal funcionen necesitas usar buses para juntar tus conexiones para los canales. En nuestro esquemático del microcontrolador, en lugar de tener un puerto para cada conexión ADC tendremos un solo puerto para todas las conexiones.
Esto hace que tu esquemático sea más limpio, sin requerir que tengas los 6 puertos separados.
Puede usar Colocar -> Bus desde el menú principal para colocar un bus en lugar de un cable. Puede pensar en un bus como un conjunto de cables juntos. Para que el bus funcione, necesita decirle a Altium cuántas conexiones están corriendo en el bus. Esto se hace colocando una etiqueta de red (Colocar -> Etiqueta de Red) en el bus y dándole un nombre como ADC[0..5]. Esto significa que el bus llevará ADC0, ADC1, ADC2, ADC3, ADC4 y ADC5, los dos puntos en corchetes significan "de 0 a 5".
Cuando use la función de repetición, necesitará que la numeración de su red comience en 1 en lugar de 0. Sin embargo, para los ADCs, también tengo el sensor de corriente de 15A que no es parte del bloque repetido, y por lo tanto, estoy comenzando con 0. El canal ADC 0 será para el sensor de 15A, con 1 a 5 para los canales de 10A. El bus OUT está numerado del 1 al 6, ya que cada uno de ellos será un bloque repetido en el esquemático y la placa.
Después de nombrar tu bus, también necesitarás agregar una etiqueta de red a cada cable que va hacia el bus. Los cables deberían tener el mismo nombre que el bus, con el número de conexión al final. Por ejemplo, OUT1 y OUT3 están unidos al bus OUT[1..6]. Estos cables se conectan al bus con una Entrada de Bus (Colocar -> Entrada de Bus), que es la conexión en ángulo de 45 grados que ves. También podrías notar que OUT4, OUT5 y OUT6 no están realmente conectando gráficamente al cable del bus - el nombre de la red es suficiente para que Altium sepa que estos cables estarán corriendo en el bus. Esto es muy conveniente y evita que el esquemático se vuelva ilegible donde todos los cables necesitarían cruzarse entre sí.
Ahora que la hoja del microcontrolador está configurada con los puertos relevantes, podemos agregarla a una hoja esquemática de nivel superior. La manera más fácil de hacer esto no es usar Colocar -> Símbolo de Hoja, sino hacer clic derecho en tu esquemático e ir a Acciones de Hoja -> Crear Símbolo de Hoja a partir de Hoja. Esto creará un símbolo para el esquemático así como también agregará todos los puertos que tienes en el esquemático, ahorrando tiempo.
Haz lo mismo para tu hoja de canal, así que ahora tienes ambos símbolos de hoja en el esquemático. La hoja del canal de salida ahora necesita ser renombrada, el formato es:
REPEAT(nombre, inicio, fin)
Por defecto, cada componente en el canal será nombrado ‘designador_nombredelahoja’. Personalmente, me gusta tener el designador primero para poder leer rápidamente la lista de materiales y ver para qué tipo de componente es la línea—pero si prefieres un formato diferente, hay varias opciones disponibles en Proyecto -> Opciones -> ventana Multi-Canal. Si aún no estás satisfecho con el formato, incluso puedes ingresar tu propio formato de designador usando las variables de las opciones estándar.
Es muy importante que también envuelvas el nombre de tu puerto en REPEAT( ) también, o el cable conectará solo la primera entrada del bus a cada puerto, en lugar de generar un nuevo puerto para cada canal. Generalmente, la excepción a esto es para protocolos de comunicaciones, donde podrías querer el mismo Reloj SPI/MISO/MOSI o I2C SCL/SDA yendo a cada hoja. Esto te da mucha flexibilidad sobre cómo se pueden usar las hojas multi-canal.
Ahora es simplemente cuestión de tener un bus nombrado que viene del puerto de bus del microcontrolador, y luego conectarlo directamente a un cable con el mismo nombre que el bus. Puede parecer un poco extraño, pero le indica a Altium que quieres desglosar el bus para cada una de las hojas esquemáticas. Altium añadirá automáticamente el número del canal al final del nombre de la red del bus a medida que genera cada canal. El nombre del bus no necesita coincidir con el nombre del puerto, o el nombre del bus en la hoja esquemática para la que es el bloque. Puede ser el mismo o diferente—lo único que importa es el nombre del bus y el cable.
He aplicado la misma configuración a los sensores de corriente, como mencioné anteriormente en el artículo he numerado el bus ADC de 0 a 5, ya que estoy desglosando ADC0 para el sensor de 15A con una Entrada de Bus.
Ahora que el esquemático multicanal está completo, puedo comenzar con el diseño de la placa. Es tan simple como parece el esquemático de nivel superior, ya que solo necesito enrutar el primer canal para cada uno de los canales repetidos.
Una vez que ejecute la orden de cambio de ingeniería para agregar todos los componentes al PCB, verá todos los bloques de hojas de nivel superior en sus habitaciones. Vale la pena mencionar aquí los múltiples redes no conectadas que se extienden hacia los canales desde el microcontrolador, mostrando que toda mi nomenclatura de bus funcionó bien, ya que cada canal está conectado correctamente. Si no hubiera agregado el comando REPEAT( ) al ADC y a los potenciómetros de salida, solo veríamos un cable subiendo y luego conectándose en paralelo. Lo mismo ocurre con las conexiones de alimentación.
También podría notar que la huella para la pantalla parece bastante grande. Esta es la pantalla de 128x64 píxeles que mencioné anteriormente y que esperaba usar. Después de enrutar la placa y no poder encajarla en el PCB, la cambié por la pantalla de 128x32 píxeles que se ve en los esquemáticos.
Estoy comenzando con la conexión de salida. Voy a enrutar el primer canal dentro de su habitación con todo lo requerido excepto las conexiones externas. También he reducido la habitación a un tamaño más práctico para los componentes organizados.
Ahora puedo ahorrar una enorme cantidad de tiempo utilizando la herramienta Copiar Formatos de Habitación. Hay dos formas principales de acceder a esta herramienta, primero, si tienes habilitada la barra de herramientas de Utilidades; está bajo el icono de habitaciones.
Puede habilitar la barra de herramientas de Utilidades haciendo clic derecho en cualquier lugar en la parte superior de la ventana del diseñador y marcando Utilidades.
La forma "larga" de acceder a la herramienta es a través del menú superior, yendo a Diseño -> Habitaciones -> Copiar Formatos de Habitación.
Una vez que la herramienta está activa, es simplemente cuestión de hacer clic en la primera habitación que ya ha enrutado (su plantilla), y luego hacer clic en la siguiente habitación que desea que tenga el mismo diseño y enrutamiento.
Puede continuar haciendo clic en habitaciones adicionales para aplicar los mismos ajustes a esas habitaciones también. La herramienta solo funciona para habitaciones que están en el mismo conjunto de múltiples canales. Esto significa que no puedo aplicar el formato de una habitación ADC de múltiples canales al ADC de 15A. Aunque el ADC de 15A es casi el mismo esquemático y solo varía en el valor de una resistencia, no es compatible ya que no estaba en el mismo conjunto de múltiples canales que los demás.
Después de terminar de copiar los formatos de habitación para los canales de salida, tengo 6 canales encaminados idénticamente para la salida. Los esquemáticos y el encaminamiento para cada canal en este diseño son muy simples, pero estoy seguro de que puedes imaginar cuánto tiempo se ahorrará con un producto de audio multicanal complejo o un sensor multicanal avanzado.
Apliqué la misma técnica a los canales ADC, resultando en que la gran mayoría del encaminamiento de mi placa ya esté completo.
Estoy planeando usar un proveedor chino de PCB de bajo costo, ya que ofrecen el mejor precio para una placa de 100mm x 100mm. Con esta restricción de tamaño para trabajar, puedo distribuir todos los canales. Pude ajustar todas las salidas por un lado de la placa, pero los sensores de corriente, a pesar de su pequeño tamaño, aún son demasiado grandes, y por lo tanto, los he colocado en forma de U alrededor de un lado de la placa.
He colocado mi conector USB y la entrada de 5V cerca uno del otro en un borde de la placa también para mantener el enrutamiento de energía ordenado. Dado que se trata de una PCB de dos capas y 1.6 mm de espesor, decidí no ejecutar trazas con impedancia ajustada para las líneas USB al microcontrolador. Dada la tasa de datos que utilizará la carga de arranque USB o el puerto serie, la integridad de la señal no va a ser críticamente importante. He conectado este microcontrolador a un puerto USB con cables soldados a los pines del microcontrolador, y luego un conector USB directamente, así que sé que soportará bien este maltrato. Para una PCB de 2 capas y 1.6 mm de espesor, mis trazas USB tendrían que ser de aproximadamente 1.5 mm de ancho para estar ajustadas en impedancia, y eso es un poco incómodo para el enrutamiento.
Finalmente, he montado la pantalla en un lugar que, espero, no tenga demasiados cables bloqueando la vista de lo que se muestra.
He añadido algunos agujeros de montaje a la placa, así como fiduciales. Los agujeros de montaje son vitales para esta placa ya que será montada verticalmente en un lugar extraño dentro de mi gabinete de control.
Con un poco de diversión para algo de arte, la placa está luciendo bastante bien. La fuente ‘AlternateGothic2 BT’, que tengo en mi computadora por alguna razón, se ve realmente genial para etiquetar los conectores. Es legible y muy compacta, lo cual es excelente para los bloques terminales.
En la parte inferior de la placa, he añadido un bloque bastante estándar para los diseños en los que trabajo para clientes, teniendo un código de barras para seguimiento o carga de programas de prueba para un accesorio genérico, fecha de ensamblaje, sección de QA y un área para un número de serie. Me gusta cómo este bloque termina la parte inferior de una placa y la hace lucir un poco más elegante.
La placa para este monitor de corriente ha sido construida para ser una placa de detección y control de corriente bastante genérica, a pesar de mis requisitos bastante específicos. Los archivos de diseño están licenciados bajo la licencia MIT, así que puedes hacer tu propia versión o basar una sección de tu propio proyecto en el diseño si lo deseas. Como siempre, puedes encontrar los archivos de diseño del proyecto en GitHub.
Altium Designer en Altium 365 ofrece una cantidad sin precedentes de integración a la industria electrónica que hasta ahora estaba relegada al mundo del desarrollo de software, permitiendo a los diseñadores trabajar desde casa y alcanzar niveles de eficiencia sin precedentes.
Solo hemos arañado la superficie de lo que es posible hacer con Altium Designer en Altium 365. Puedes consultar la página del producto para una descripción más detallada de las características o uno de los Seminarios Web Bajo Demanda.