Skip to content

03.12 PCB de control

David Redondo edited this page Jun 3, 2024 · 4 revisions

# PCB de control

En esta placa se alojará el microcontrolador con todos los componentes necesarios para interactuar con las placas de potencia y el exterior. Dado que el esfuerzo de integración es mucho menor, las restricciones mecánicas y la facilidad de montaje son las que rigen el concepto. Por ello no se han tenido muchos miramientos para la disposición de los componentes, y simplemente se ha puesto atención en utilizar muchas simetrías para hacer que los circuitos repetidos para los dos motores/inversores sean exactamente iguales.

Como se puede observar, el microcontrolador es la pieza central y está orientado a 45 grados para que los pines se puedan enrutar de forma óptima hacia los extremos de la placa. Ambos lados de la placa son simétricos a excepción de los componentes que no están duplicados por el control dual.

Restricciones y enrutado

Se ha mencionado ya que esta placa no tiene muchas restricciones más allá de las mecánicas, lo cual ha permitido crearla en un formato de 150 mm por 40 mm, encajando perfectamente en ángulo recto con las placas de potencia en el espacio que dejan entre medias.

El apilado escogido es un estándar de 4 capas, con 35 micras de espesor en todas las capas (1 onza por pulgada cuadrada). Para hacer la placa incluso más barata, se puede fabricar con 17 micras en las capas internas (0.5 onzas por pulgada cuadrada). Esto asegura una producción económica, y la posibilidad de crear planos de referencia y alimentación en las capas internas.

Dado que no hay grandes magnitudes eléctricas, el enrutado se ha centrado en minimizar el área de los caminos de corriente entre cada señal y la masa de la placa. Utilizando polígonos conectados a la masa en múltiples capas (tanto la de la propia señal como las que queden por encima o por debajo) se minimiza muchísimo este área.

También se ha procurado mantener todas las señales rápidas lo más separadas posibles para evitar el cross-talk entre ellas, causado por el acople capacitivo que presentan dos conductores paralelos. En ocasiones no se ha podido evitar y tan solo queda confiar en el resto de buenas prácticas de enrutado.

Bloques funcionales

La PCB de control se divide en varios bloques funcionales, que igual que la PCB de potencia, se juntan en un esquemático jerárquico.

En el esquemático se pueden apreciar el conector al vehículo, las monturas de la placa, unas notas indicativas con los cambios y una leyenda de colores. Los bloques son los siguientes:

  • Alimentación: Dado que esta placa no tiene conexión al sistema de alta tensión, se alimenta exclusivamente del sistema de baja tensión del monoplaza, cuya tensión es de entre 20 V y 30 V. Por ello se implementan distintas protecciones, un convertidor para obtener un bus de 5 V y un regulador lineal para obtener 3.3 V estables para el MCU.

  • MCU: Es el bloque central, que implementa el STM32F777VI, un puerto USB, una memoria externa EEPROM y el conector de programación y depuración.

  • CAN: Incluye un transceptor CAN para habilitar la comunicación con el vehículo.

  • Retroalimentación: En estos bloques se integra la conexión del encoder incremental y el front-end analógico de la lectura de temperatura del motor.

  • Front-end analógico de la placa de potencia: Se tratan las distintas señales que provienen de las placas de potencia, adaptándolas a los rangos de tensión que admiten los ADCs del MCU.

  • Extras: Tan solo se colocan unos LEDs y un par de entradas digitales para el MCU.

Configuración de hardware del MCU

Con tal de asignar de forma adecuada la función de cada pin, se ha hecho uso de una herramienta proporcionada por STMicroelectronics llamada CubeMX. Este programa permite generar un código base con todos los periféricos del microcontrolador configurados según se escoja. Tiene una interfaz muy intuitiva que hace muy sencilla la implementación de hardware, permitiendo un desarrollo muy ágil.

De esta manera, se han decidido las conexiones de la placa de control con base en las siguientes consideraciones:

  • Funcionalidad del pin: Cada pin del microcontrolador se ha configurado para cumplir una función específica de acuerdo al mapeado que tenga cada periférico, ya que normalmente un canal específico de un periférico específico solamente se puede conectar a uno o dos pines.

  • Compatibilidad con periféricos: Se ha tenido en cuenta la compatibilidad entre los periféricos del microcontrolador y los dispositivos externos conectados a la placa de control.

  • Optimización del enrutado: Se han escogido algunos pines a medida que se ha ido enrutando la placa, por facilitar algunas conexiones.

Finalmente, se logra que el esquemático y el programa CubeMX muestren la misma distribución de pines:

Circuitos importantes

Alimentación

Ya que se propone alimentar la placa directamente desde el sistema de baja tensión del vehículo, se debe implementar un tratamiento de esta alimentación. Se incluye protección contra descargas electrostáticas, polaridad inversa y sobrecorriente. Se implementa un DC-DC de Recom de 15 W para generar el bus principal de 5 V, sin embargo, dado a problemas de disponibilidad y ensamblaje no se ha podido probar. Además, se incluye alimentación del conector USB, y ambos buses de 5 V se pasan por un filtro Pi con frecuencia de corte $f_c = \frac{1}{2 \pi \sqrt{C \cdot L}} = \frac{1}{2 \pi \sqrt{10\text{ }\text{\unit{\micro\farad}} \cdot 47\text{ }\text{\unit{\micro\henry}}}} = 7.34 \text{ kHz}$ para evitar acoples de ruido en la alimentación. También se puede observar un regulador lineal fijo de 3.3 V para proporcionar una tensión estable al MCU, y un pequeño LED indicativo de que la alimentación está activa.

MCU

Aunque ya se ha visto la implementación del MCU en sí, su esquemático contiene otras partes como una memoria externa, el conector USB, notas sobre qué periféricos están mapeados a qué pines y el conector de programación y depuración.

CAN

Para implementar comunicación CAN es necesario incorporar un transceiver que pueda comunicar el MCU con un bus de CAN real. Se escoge el MCP2551 por su coste, simplicidad y robustez. Se añade también un filtro de línea consistente en un choke para las interferencias en modo común, y algunos condensadores. Se incluye también un final de línea por si fuera necesario, y protección contra ESD. Adicionalmente, se han implementado un par de luces LED para indicar el correcto funcionamiento del envío y recepción de datos.

Retroalimentación

Este bloque se implementa por duplicado, un bloque por cada motor que se controla. Contiene los componentes necesarios para leer su posición y temperatura.

Ya que se requiere de leer la posición con un encoder incremental, se equipan los componentes necesarios para ello. Se usa el LM339, un comparador cuádruple con salida HiZ/GND para obtener la lectura desde una interrupción externa en el MCU. Cabe destacar que esta configuración de hardware hace compatible este inversor con sensores de efecto Hall para la lectura de posición, aunque no se desarrollará el código que los interprete.

A fecha de la redacción de este trabajo todavía no se conoce el sensor de temperatura que montarán los motores, de modo que se implementa un circuito modificable para la lectura de cualquier tipo de sensor de temperatura resistivo. Aprovechando el comparador restante del LM339 se añade también una alarma configurable por hardware para cualquier tipo de sensor.

Por último, se añade un conector para el sensor que incluye también una alimentación de 5 V, el sensor de temperatura y el sensor arbitrario junto con unas notas sobre la implementación.

Front end de la placa de potencia

Este bloque se implementa por duplicado, un bloque por cada placa de potencia que tiene el inversor.

En primer lugar, ENABLE es una salida directa del MCU, y se ha comprobado que el UCC21710 es capaz de detectarla a 3.3V, igual que los PWMs. De manera similar, TRIP se lee a 5 V y utiliza un GPIO tolerante a 5 V en el MCU.

Para que el ADC del MCU reciba correctamente todas las señales analógicas, se deben tratar adecuadamente. Hay tres grupos de señales analógicas en cada placa de potencia: las corrientes de fase, la tensión DC y la temperatura de los semiconductores.

Corrientes de Fase

Como se ha visto en el apartado de la placa de potencia, se utilizan sensores referenciados a 5 V, y por tanto, sus señales podrían exceder el rango de 3.3 V del ADC. Por ello se implementa un simple divisor de tensión. La combinación de resistencias se puede ajustar para aumentar el rango de medición a costa de una menor resolución.

El offset de la corriente en bits se calcula $$\text{\textit{offset}}_i = \left(\frac{10 \text{ k}\Omega}{3.3\text{ k}\Omega+10\text{ k}\Omega}\right) \cdot 2.5 \text{ V} \cdot \frac{2^{12} \text{ bits}}{3.3\text{ V}} = 2333 \text{ bits ,}$$

y la ganancia de la medida de corriente $$\text{\textit{gain}}_i = \frac{\left(\frac{10\text{ k}\Omega}{3.3\text{ k}\Omega+10\text{ k}\Omega}\right)}{12.5 \text{ mV/A} \cdot \left(\frac{2^{12} \text{ bits}}{3.3\text{ V}}\right)} = 0.0484609962 \text{ A/bit .}$$

La corriente máxima que se puede medir es $$\pm 0.0484609962 \text{ A/bit} \cdot \frac{2^{12} \text{ bits}}{2} = \pm 99 \text{ A .}$$

Para los ensayos se instalaron resistencias de $4.7$ k$\Omega$ en vez de $3.3$ k$\Omega$ y se calcularon de nuevo los parámetros para la lectura correcta.

Tensión de Bus

Dado que el amplificador aislado utilizado saca una señal diferencial, se debe convertir a single-ended usando un amplificador diferencial integrado.

Puesto que el modelo escogido presentaría una pequeña zona muerta, se debe añadir un offset de muy pocos milivoltios.

No existen referencias de tensión de tan poco nivel, así que se usa un divisor resistivo de valores bajos, a sabiendas de que esta decisión causa error en la medida.

El offset de la medida de tensión se calcula $$\text{\textit{offset}}v = V{ref} \cdot \frac{2^{12} \text{ bits}}{3.3\text{ V}} = 129 \text{ bits,}$$

y la ganancia de la medida de tensión en voltios por bit se calcula $$\text{\textit{gain}}_v = \frac{1}{\left(\frac{1}{3} \cdot 0.011388 \text{ V/V} \cdot \left(\frac{2^{12} \text{ bits}}{3.3\text{ V}}\right)\right)} = 0.212240269 \text{ V/bit.}$$

La tensión máxima que se puede medir es $$0.212240269 \text{ V/bit} \cdot 2^{12} \text{ bits} = 869.34 \text{ V .}$$

Temperaturas de los semiconductores

Sería poco práctico leer las tres temperaturas de cada inversor ya que ocuparían muchos pines del MCU. Por ello, se añaden unas pequeñas resistencias, dos de las cuales no se montan, lo cual permite escoger una de las tres medidas de temperatura. Las temperaturas de los inversores deben calcularse con una lookup table para ahorrar tiempo de computación. Como se ha visto, la señal que sale del UCC21710 es una señal pulsada que puede leerse directamente como una entrada PWM o pasar a través de un filtro RC en la placa de potencia para convertirla en una señal analógica. Esta placa pretende leerla con el ADC.

La lectura en sí misma está en la parte de alta tensión de la placa de potencia y se conecta al pin AIN de UCC21710. Basándose en el voltaje leído, se calcula el ciclo de trabajo (D) de la salida analógica aislada de UCC21710 utilizando la relación proporcionada por el fabricante .

$$D = -20 \cdot V_{AIN} + 100 .$$

Si se filtra, el voltaje en leído por el ADC del MCU se calcula $$V_{Tinv} = VCC_{GD} \cdot \frac{D}{100} = 5V \cdot \left(-20 \cdot V_{AIN} + 100\right)/100 .$$

Extras

En este bloque aparecen tres LEDs informativos controlados por el MCU, un interruptor para cambiar la dirección de giro de los motores, y una lectura de la cadena de seguridad.

Resultado final

Después de diseñar todos los circuitos, emplazado todos los componentes y enrutado todos los nodos, se completa el diseño de la placa de control.