Estoy diseñando una placa de circuito impreso para mi robot espeleólogo, que consiste principalmente en un STM32F723ZE y 16 controladores de motor, con medición de corriente.
Mi pregunta es: ¿puedo enrutar las señales PWM que van a los controladores de motor justo al lado del voltaje analógico de la medición de corriente? ¿O tendré una diafonía "significativa"?
En detalle:
espacio de la pista: 0,15 mm (probablemente podría aumentar un poco si es necesario, pero no mucho).
la pista analógica: el puente H tiene un pin "VpropI" con voltaje proporcional a la corriente (espero alrededor de 0.5 V). Agrego un filtro RC (R = 100 kΩ, C = 10nF): la salida del filtro RC va al pin ADC del STM32 (pista de unos 6 cm de largo). Si es necesario, puedo cambiar fácilmente por R = 10 kΩ, C = 100 nF.
las pistas son paralelas durante 5-6 cm.
el puente H admite hasta 100 kHz PWM (aún no he elegido la frecuencia PWM, estaba planeando probar diferentes frecuencias una vez que obtenga la PCB y le conecte los motores).
digamos que 20 mV de ruido están bien (creo que 50 mV seguirían estando bien con el filtrado de software).
Entonces, ¿tengo que profundizar en cómo calcular la diafonía/reducirla, o puedo seguir así?
¿Existe alguna regla general simple para saber cuándo puedo simplemente ignorar la diafonía y cuándo necesita más investigación?
EDITAR: como lo sugirió, hice una simulación LTspice:
La señal azul es el "punto medio" entre los 2 condensadores (que en el PCB real está conectado a ADC). La señal verde es una señal PWM de 3,3 V, con un período de 40 ns y tiempos de subida/bajada de 1 ns o 0,1 ns (Nota: tracé 0,5 V+V_PWM/1000 (señal verde) para obtener una escala similar a la el ruido).
Con 1 ns de tiempo de subida/bajada:
Con un tiempo de subida/bajada de 0,1 ns:
@Neil_UK: ¿es esta la modelización a la que te refieres?
Si esta es la forma correcta de modelarlo, entonces con efectos capacitivos e inductivos, obtengo como máximo 5 mV de ruido con un tiempo de subida/bajada de 0,1 ns. Entonces, siempre que el tiempo de subida/bajada sea >0.1 ns, debería estar bien (diafonía <5 mV). ¿Correcto?
EDIT 2: nuevo circuito basado en el último comentario Neil_UK (L1 en serie con L1): Entonces con L1 en serie con C1 (nb: sé dividir el PWM solo por 100 para trazar). Con tiempo de subida/bajada de 100 ns
Debo admitir que no entiendo por qué L1 debería estar en serie con C1 y no con C2, pero si es así, los resultados son mucho peores: con 1ns de aumento, obtengo varios voltios de ruido; con un tiempo de subida de 100 ns, sigo teniendo unos 45 mV de ruido
La corriente del motor tendrá un fuerte componente de ondulación en la frecuencia PWM.
Si maneja el chip con PWM más señal de dirección, y el motor recibe VCC o 0V, con polaridad determinada por la dirección... entonces VPROPI solo emitirá un voltaje válido cuando la corriente realmente pase por la resistencia de detección, lo que significa que cuando el PWM está en el estado ON. Por lo tanto, el voltaje instantáneo en VPROPI será proporcional al producto de la corriente real y la resistencia de detección cuando el PWM esté encendido, pero será cero cuando esté apagado. Su filtro promediará eso a un voltaje que es proporcional al producto de la corriente del motor, la resistencia y el ciclo de trabajo. Esto significa que, con un ciclo de trabajo bajo, probablemente no medirá nada útil.
Si maneja el chip con dos PWM independientes y el motor recibe +VCC o -VCC, lo que pone el neutro en un ciclo de trabajo del 50 %, entonces la corriente siempre fluirá en la resistencia de sentido y VPROPI ya no será proporcional al ciclo de trabajo. .
Dado que lo primero es preferible, personalmente eliminaría el filtro por completo y sincronizaría el ADC con el periférico PWM (está en algún lugar del manual de STM32, no recuerdo dónde) para que el ADC muestre un pequeño retraso después de que se enciende el PWM. Para obtener este retraso, sume el tiempo de conmutación del puente H, el tiempo de establecimiento del amplificador de detección actual, etc.
El tiempo de muestreo establece un ciclo de trabajo mínimo, pero eso no debería importar para los motores, ya que un ciclo de trabajo muy bajo significa que de todos modos no girarán. También establece una frecuencia de conmutación máxima, que tampoco debería importar, porque los motores no necesitan funcionar a 100 kHz, sino a unos pocos kHz.
Si se hace correctamente, esto dará como resultado menos ruido que la opción de filtro, porque cuando el muestreo se sincroniza con PWM, siempre se muestrea en el mismo punto en la forma de onda de diente de sierra actual, lo que significa que ignora la ondulación. Y dado que muestrea después de que se realiza la conmutación, también ignorará el ruido de conmutación. La solución ideal es muestrear todos los canales del motor mientras ninguno de ellos está cambiando. Es hora de darle un buen uso a ese ADC rápido.
También elimina el retraso del filtro, por lo que si desea implementar un bucle de retroalimentación, menos retraso de fase siempre es una ventaja.
La hoja de datos no menciona el tiempo de establecimiento o el ancho de banda para el amplificador de sentido actual, lo cual es sospechoso. Le recomiendo encarecidamente que lo mida, porque si no tiene suficiente ancho de banda o la sedimentación es demasiado lenta, el muestreo sincronizado no funcionará. Si el amplificador de detección actual limita la velocidad de respuesta, es posible que incluso el promedio con el filtro no funcione en absoluto.
winny
Neil_ES
Sandro
Sandro
Neil_ES
Sandro
Neil_ES
Sandro
Neil_ES
Sandro
Neil_ES
Sandro