Diseño de PCB de señal mixta para PSoC

16

Estoy desarrollando una PCB para una aplicación de detección analógica. Utiliza el ADC interno en un PSoC3. Como de costumbre, la aplicación tiene muy poco espacio (11 mm x 21 mm), por lo que tuve que hacer algunos compromisos en el diseño de la PCB que no hubiera hecho en una PCB más grande.

PSoC PCB

La placa es suministrada por 6v regulados y contiene dos reguladores lineales de 5v. Un MCP1702 para el suministro digital y un MIC5205 para el suministro analógico. La placa está detectando cinco sensores de efecto Hall A1324 . Cada señal de salida del efecto Hall es filtrada por un filtro RC 100nF + 1k. Un sensor está en la PCB (abajo a la derecha). Los otros 4 se enchufan al conector derecho de 6 pines.

El chip está actuando como un esclavo SPI, pero las muestras ADC siempre se toman entre transacciones SPI, por lo que el SPI no debe interferir con las señales analógicas.

Lamentablemente, todavía veo algo de ruido (aproximadamente 1.5 LSB a 12 bits) en las señales analógicas, y me pregunto si hay algo que podría haber hecho de manera diferente en el diseño para mejorarlo.

Diseño PSoC

Abra la imagen en una pestaña nueva para verla en una resolución más alta.


Adicional:

Otros diseños de PCB que he hecho usando el MCP3208 , y los mismos suministros duales de 5v, los mismos sensores y los mismos filtros RC no han logrado un ruido notable a 12 bits.

El ADC en el PSoC3 es un tipo delta sigma. Esta versión del PSoC está limitada a 12 bits, pero otro número de parte tiene un ADC de 16 bits (aunque con una frecuencia de muestreo más baja).

Me importa el ruido, y realmente me gustaría empujarlo un poco más hacia 12 ENOB. La razón no es la precisión, sino la medición de la velocidad. Actualmente, este nivel de ruido hace que sea imposible hacer un control preciso de la posición y la velocidad en un robot.


Adicional:

Esquemático. Lo siento, es un poco pequeño, pero puedes leer los valores.

Esquema de PSoC

Rocketmagnet
fuente
1
Además, ¡DEJE DE USAR NET-LABELS! Su circuito no es lo suficientemente complejo como para requerirlos, y al no mostrar realmente las conexiones, hace que sea mucho más difícil rastrear las conexiones. Nuevamente, el propósito del esquema es hacer que la función y funcionalidad del circuito sean visualmente aparentes . Luego, deja que la computadora traduzca la representación visual al diseño físico real de los dispositivos (que es algo en lo que las computadoras son muy buenas).
Connor Wolf
1
@Rocketmagnet: ciertamente son útiles para la persona que dibuja el circuito . Son completamente abominables para todos los demás .
Connor Wolf
1
Además, si tiene problemas con la necesidad de enrutar cables debido a limitaciones de espacio, debe buscar desesperadamente las funciones de intercambio de pines en Altium. Básicamente, se puede especificar pines que son funcionalmente intercambiables en la definición del componente (IE alfileres varios IO), y luego, cuando se está trazando el PCB, puede ejecutar las huellas de ninguna de las patas que trabajarían, en lugar de sólo el uno especificó en el esquema. Luego, puede sincronizar el enrutamiento que eligió en la PCB con el esquema.
Connor Wolf
1
@FakeName, si bien la conexión con etiquetas podría dificultar el seguimiento de un circuito, volver a dibujar cada símbolo para crear un esquema puro y limpio con líneas rectas agradables podría cuadruplicar fácilmente el tiempo para realizar una entrada esquemática. Me encantaría ver un esquema perfecto, no estoy seguro de que sea realista exigir uno.
The Photon
1
@Rocketmagnet, Tener un área de pcb muy pequeña no significa que no pueda dibujar su esquema en papel de tamaño D.
The Photon

Respuestas:

13

Siempre tendrá algo de ruido en un ADC, especialmente los tipos SA (aproximación sucesiva) en el troquel del microcontrolador. Sigma-delta funciona mejor para el ruido gaussiano, ya que lo integran. No esperes 12 ENOB de un ADC de 12 bits.

El ruido del controlador es una razón por la cual la mayoría de los microcontroladores no le dan una resolución superior a 10 bits, y el AVR ofrece la posibilidad de detener el microcontrolador durante la adquisición del ADC, lo que debería confirmar que al menos parte del ruido proviene del controlador .

Pero la pregunta es: ¿te importa? 1.5 bits de ruido en un ADC de 12 bits aún le deja más de 10 bits, o mejor que 0.1%. ¿Qué tan preciso es su sensor Hall? Otros componentes en el circuito?

editar
Parece que usa el oscilador interno del PSoC, ya que no veo ningún cristal en el esquema. Se ve bien: tiene el desacoplamiento adecuado. Además del reloj interno, la única parte de alta velocidad en el circuito parece ser el SPI, pero usted dice que esto permanecerá en silencio durante las mediciones. El resto de la placa es DC o probablemente de frecuencia relativamente baja como los sensores de efecto Hall. Y es un Damn Small ™, que también ayuda: las trazas más cortas captarán menos ruido. Claro que podría analizar el MCP1702, que rotaría 90 ° a la izquierda para que el capacitor de salida se pueda colocar aún más cerca de los pines, pero eso no resolverá los problemas.

Solo veo un cambio en el diseño que podría mejorar su relación S / N:

ingrese la descripción de la imagen aquí

En la hoja de datos se sugieren planos de tierra analógicos y digitales divididos para "Rendimiento analógico óptimo" (página 10).

Por lo demás: es una tabla pequeña como dije, eso significa trazas cortas y desacoplamiento en unos pocos mm. Por lo tanto, me gustaría echar otro vistazo a la fuente del ruido. El principal sospechoso es el reloj del PSoC. El PSoC puede ejecutar un voltaje de suministro muy bajo, y eso reduciría su ruido. Por supuesto, sería de gran ayuda si también se redujera el VDDA, pero no leí en ninguna parte de la hoja de datos que el VDDA no debería ser más alto que el VDDD.

A continuación, el ADC. En la página 55 de la hoja de datos dice 66 dB SINAD, eso es 11 bits, cerca de lo que obtienes ahora. La hoja de datos A1324 nos proporciona un ruido de 7 mVpp con un voltaje de reposo de 2.5 V. Eso también es mucho menor que la relación S / N de 72 dB que 12 bits podrían proporcionarle. Puede mejorar esto un poco con filtrado adicional.

Usted menciona el mejor rendimiento del MCP3208, pero eso es un ADC alejado del microcontrolador, y eso puede explicar cómo un SA ADC puede funcionar mejor que un sigma-delta con la misma resolución.

Entonces, las opciones que veo: reducen el voltaje de la fuente de alimentación digital y dividen las bases analógicas y digitales.

stevenvh
fuente
Esa es una idea muy interesante sobre la reducción del voltaje de suministro digital del PSoC. VDDA ciertamente puede ser más alto que VDDD.
Rocketmagnet
Entonces, ¿crees que debería desconectar VSSA de la almohadilla térmica? De hecho, he publicado esto como una pregunta completamente nueva .
Rocketmagnet
2

Estoy de acuerdo con lo anterior. 1.5LSB de ruido es bastante razonable. http://www.cypress.com/?docID=39346 muestra un SINAD mínimo de 66 dB en modo de 12 bits, lo que sugiere ENOB = 10.7.

Sé que esta no es una respuesta directa a su pregunta, pero voy a interpretar la pregunta como "¿cómo soluciono mis problemas con el control de velocidad?" y no "¿Cómo obtengo más de 10.5 ENOB?".

¿Cómo te estás diferenciando? ¿Tiene suficientes marcas de reloj de repuesto para hacer algo más suave que una diferencia central de dos puntos? ¿Quizás resolver algo de 5 muestras de ancho, optimizado en Matlab?

Además, esto puede sonar un poco extraño, pero el ruido de velocidad empeora a medida que muestras más rápido

1LSsiΔt

No sea insultante, sino que también eche un vistazo rápido para asegurarse de que no ocurra nada tonto en su control de velocidad, como problemas con las conversiones entre enteros con y sin signo, y asegúrese de que sus enteros sean lo suficientemente anchos para evitar errores de desbordamiento cuando diferencie . Mis propias ecuaciones de control a menudo se vuelven lo suficientemente complicadas que a veces lanzo explícitamente cada operación.

Por último, aunque quizás lo más probable, ¿está perdiendo bits efectivos desde la parte superior al no amplificar a escala casi completa? Si es así, puede amplificar o tal vez proporcionar un Vref más pequeño.

Scott Seidman
fuente
Estamos calculando la posición y la velocidad utilizando un filtro alfa beta . Entiendo que el ruido de la velocidad aumenta a medida que aumenta la frecuencia de muestreo si se hace ingenuamente. Estoy seguro de que el ruido de la velocidad no se debe a un error de señal. Y ya estamos casi a escala completa, así que no hay más amplificación que pueda hacer sin arriesgarme a tocar la parte superior o inferior del rango.
Rocketmagnet
¿Diría que no hay mejoras que pueda hacer al diseño?
Rocketmagnet
No puedo ver nada todavía. ¿Cómo amplificas los sensores de la sala? ¿Realmente has mirado la salida de los filtros AB y las ecuaciones de control como una comprobación de la realidad? ¿Echó un vistazo al ruido en las salidas de su regulador? Podría ser esclarecedor hacer un presupuesto de ruido formal para todo el sistema
Scott Seidman
1
¡Pero! La otra ventaja del modo diferencial es que me permite aumentar la frecuencia de muestreo 4x, por lo que puedo hacer un sobremuestreo. Esto debería reducir el ruido un poco.
Rocketmagnet
1
Tal vez una tapa de derivación en Vref (no estoy seguro de cómo hacerlo, está en la hoja de datos). Aparte de eso, creo que estás extremadamente cerca, si no es que, del ENOB ideal para el PSOC 3 ADC en 12 bits, ¡así que lo has hecho lo mejor posible!
Scott Seidman