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

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 un espacio muy limitado (11 mm x 21 mm), por lo que tuve que hacer algunas concesiones en el diseño de la placa de circuito impreso que no habría hecho en una placa de circuito impreso más grande.

placa de circuito impreso PSoC

La placa se alimenta con 6v regulados, y contiene dos reguladores lineales de 5v. Un MCP1702 para la alimentación digital y un MIC5205 para la alimentación analógica. La placa detecta cinco sensores de efecto Hall A1324 . Cada señal de salida de efecto Hall se filtra con un filtro RC de 100nF + 1k. Un sensor está en la PCB misma (abajo a la derecha). Los otros 4 enchufes en el conector de 6 pines de la derecha.

El chip actúa como un esclavo SPI, pero las muestras de ADC siempre se toman entre transacciones SPI, por lo que el SPI no debería interferir con las señales analógicas.

Lamentablemente, sigo viendo algo de ruido (alrededor de 1,5 LSB a 12 bits) en las señales analógicas y me pregunto si podría haber hecho algo diferente en el diseño para mejorarlo.

Diseño de PSoC

Abre la imagen en una nueva pestaña para verla en mayor resolución.


Agregado:

Otros diseños de PCB que hice usando el MCP3208 , y los mismos suministros duales de 5v, los mismos sensores y los mismos filtros RC no lograron ruido perceptible a 12 bits.

El ADC en el PSoC3 es del tipo delta sigma. Esta versión del PSoC está limitada a 12 bits, pero otro número de pieza 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 realizar un control preciso de la posición y la velocidad en un robot.


Agregado:

Esquemático. Lo siento, es un poco estrecho, pero puedes leer los valores.

Esquema PSoC

¿Te refieres a MCP3208? Que tenga un SINAD de 72dB, o ENOB=11.7
¡Vaya! Sí. Corregido.
Olvidé preguntar: ¿puedes publicar un esquema?
@stevenvh - Añadido.
Por favor, por favor, deja de dibujar tus entidades esquemáticas para que se parezcan al chip físico. El objetivo del esquema es definir visualmente la función del circuito . Al dibujar su esquema como el diseño del chip físico, básicamente está evitando que eso suceda con éxito.
Además, ¡DEJEN DE UTILIZAR ETIQUETAS DE RED! Su circuito no es lo suficientemente complejo como para requerirlos, y al no mostrar 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 la funcionalidad previstas del circuito sean visualmente evidentes . Luego dejas 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).
Otras quejas serían que tiene muchos puertos de tierra y de alimentación laterales. Intenta ponerlos en vertical (hace que sean más fáciles de distinguir visualmente). Al arreglar sus entidades esquemáticas, debería poder colocarlas todas verticalmente sin problemas. Es solo el extraño diseño de la entidad esquemática lo que te obliga a ponerlos de lado para que encajen.
@FakeName: estoy de acuerdo con sus comentarios sobre el diseño esquemático. Y en realidad hago todas esas cosas para algunos esquemas, y también se los recomendaría a otras personas, a menos que estén diseñando una placa de circuito impreso con limitaciones de espacio desesperadas como esta. En ese caso, el consejo comienza a jugar en su contra. Si el espacio es su restricción n.º 1, entonces su flujo de trabajo es diferente y la forma en que usa un esquema es diferente.
Normalmente, cuando crea un prototipo de circuito, puede diseñar uno grande y agradable para ver si funciona y ayudar a depurarlo. Pero cuando el espacio es la limitación n. ° 1, su prototipo es del tamaño real para ver si es posible.
De hecho, encuentro que las etiquetas de red son muy útiles y hacen que el esquema sea más fácil de leer y editar. El diseño de la placa restringe qué señales pueden llegar a qué pines y, a menudo, tengo que mover las cosas para que todo encaje. Desconectar y volver a conectar cargas de cables es considerablemente más PITA que mover las etiquetas.
@Rocketmagnet: ciertamente son útiles para la persona que dibuja el circuito . Son absolutamente abominables para todos los demás .
Además, si tiene problemas con la necesidad de enrutar cables debido a limitaciones de espacio, necesita buscar desesperadamente las funciones de intercambio de pines en Altium. Básicamente, puede especificar pines que son funcionalmente intercambiables en la definición del componente (es decir, varios pines IO), y luego, cuando está enrutando la PCB, puede ejecutar los seguimientos a cualquiera de los pines que funcionarían, en lugar de solo uno . especificaste en el esquema. Luego, puede sincronizar el enrutamiento que eligió en la PCB con el esquema.
Básicamente, las etiquetas de red son como gotoen forma esquemática. Hacen su trabajo un poco más fácil, pero hacen que cualquier otra persona que tenga que trabajar o leer la vida de su esquema sea mucho más difícil.
Por último, ¿conoces ctrl+drag? Mueve partes de componentes mientras mantiene las conexiones (solo editor de esquemas). No siempre funciona, pero es muy útil.
@FakeName, si bien la conexión con etiquetas puede 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 la entrada del esquema. Me encantaría ver un esquema perfecto, no estoy seguro de que sea realista exigir uno.
@Rocketmagnet, tener un área de PCB muy pequeña no significa que no pueda dibujar su esquema en papel de tamaño D.
@ThePhoton: solo tiene que volver a dibujar el símbolo para cada dispositivo una vez. Luego simplemente lo pones en tu biblioteca de componentes.
Y dibujo esquemas tanto como sea posible según las especificaciones que pido a otros. De hecho, no uso etiquetas de red. en absoluto Toma un poco más de tiempo, pero ese tiempo se ahorra fácilmente y más cuando se discuten los diseños con otras personas.
Una vez más, el uso de etiquetas de red es muy parecido a goto. Puede ahorrarle tiempo, pero si trabaja con otras personas (y yo mismo trabajo muy de cerca con otro ingeniero), son una completa pérdida de tiempo, ya que cada vez que está discutiendo algo, tiene que ir manualmente sobre todo el esquema tratando de encontrar a dónde va.
@FakeName: lo siento, solo tendré que estar en desacuerdo contigo en eso. Me alegro de que tengas una opinión.
@FakeName, en Altium, es muy bueno usar etiquetas de red, incluso si su esquema está completamente conectado gráficamente, porque luego, cuando llega al diseño, obtiene etiquetas en las pistas que le recuerdan la función de cada red.
@ThePhoton: bueno, los uso para nombrar cables, pero no los uso para hacer conexiones.
@Rocketmagnet: si comienza a trabajar en estrecha colaboración con otras personas en el mismo diseño, probablemente cambie de opinión.
Para ser claros, no digo que nunca debas usar net-lables, solo que debes tener una buena razón para hacerlo. Trátelos como cualquier otro poderoso truco de programación que modifique el flujo de control. Eliminan la inmediatez visual de la función del circuito que se supone que debe proporcionar un esquema. No desea usarlos a menos que tenga una buena razón para hacerlo, y si no está seguro de tener una buena razón, no lo haga.

Respuestas (2)

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

El ruido del controlador es una de las razones por las que la mayoría de los microcontroladores no ofrecen 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 todavía te dejan 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 usas el oscilador interno del PSoC, ya que no veo ningún cristal en el esquema. Se ve bien: tienes el desacoplamiento adecuado. Aparte del reloj interno, la única parte de alta velocidad en el circuito parece ser el SPI, pero usted dice que permanecerá en silencio durante las mediciones. El resto de la placa es de CC o probablemente de frecuencia relativamente baja como los sensores de efecto Hall. Y es Damn Small™, que también ayuda: las trazas más cortas captarán menos ruido. Claro, podría criticar el MCP1702, que rotaría 90 ° CCW para que el capacitor de salida pueda colocarse 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 placa pequeña como decía, eso significa trazas cortas y desacoplamientos de unos pocos mm. Así que me gustaría echar otro vistazo a la fuente del ruido. El principal sospechoso es el reloj del PSoC. El PSoC puede funcionar con un voltaje de suministro muy bajo, y eso reduciría su ruido. Por supuesto, ayudaría mucho si VDDA también tiene que reducirse, pero no leí en ninguna parte de la hoja de datos que VDDA no debería ser más alto que 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 del 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 señal/ruido de 72 dB que podría proporcionarle 12 bits. Puede mejorar esto un poco con filtrado adicional.

Usted menciona el mejor rendimiento del MCP3208, pero eso está a un ADC de distancia 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: reducir el voltaje de la fuente de alimentación digital y dividir los terrenos analógicos y digitales.

Esa es una idea muy interesante sobre cómo reducir el voltaje de suministro digital del PSoC. VDDA ciertamente puede ser mayor que VDDD.
Entonces, ¿crees que debería desconectar VSSA de la almohadilla térmica? De hecho, he publicado esto como una pregunta completamente nueva .

Estoy de acuerdo con lo anterior. 1,5 LSB 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 estás diferenciando? ¿Tienes suficientes tictacs 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 divertido, pero el ruido de la velocidad empeora a medida que muestrea más rápido.

1 L S B Δ t
aumenta a medida que el delta t disminuye). Intente muestrear tan rápido como lo necesite, no tan rápido como pueda.

No es por ofender, pero 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 amplios para evitar errores de desbordamiento cuando diferencia . Mis propias ecuaciones de control a menudo se complican lo suficiente como para lanzar explícitamente cada operación.

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

Estamos calculando la posición y la velocidad utilizando un filtro Alpha Beta . Entiendo que el ruido de velocidad aumenta a medida que aumenta la frecuencia de muestreo si se hace de manera ingenua. Estoy seguro de que el ruido de velocidad no se debe a un error de signo. Y ya estamos casi a escala completa, por lo que no hay más amplificación que pueda hacer sin arriesgarme a alcanzar la parte superior o inferior del rango.
¿Diría que no hay mejoras que pueda hacer en el diseño?
No puedo ver nada todavía. ¿Cómo estás amplificando los sensores de pasillo? ¿Realmente ha mirado la salida de los filtros AB y los eqns de control como una verificación de la realidad? ¿Se asomó al ruido en las salidas de su regulador? Podría ser esclarecedor hacer un presupuesto de ruido formal para todo el sistema
@Halls no tiene amplificación. Ya tienen columpio 0v - 5v. No hay almacenamiento en búfer que no sea el condensador de filtro. Todavía tengo que medir el ruido del regulador, pero sé que este regulador+Hall+Filter ha alcanzado 12 ENOB en otro sistema. Hemos pasado el último mes estudiando las señales, el ruido y los filtros. Estoy muy seguro de que están funcionando correctamente.
Parece que el Cypress sigma delta ADC tiene un modo diferencial. ¿Has probado eso? cypress.com/?docID=39346 parece decir (pág. 17) que podría ganar algunos dB al omitir el Vref interno. Sin embargo, la conclusión es que el SINAD mínimo de este ADC es solo 66dB en modo de 12 bits, que está bastante cerca de donde está ((66-1.76)/6.02) da ENOB = 10.67 (Pero verifique que mis cálculos sean correctos y que ¡Estoy mirando los documentos para el ADC que está usando actualmente!) Creo que sus opciones son ADC diferentes, el mismo ADC más bits o un algoritmo de control más robusto en ruido.
De manera molesta, el modo diferencial solo me da una oscilación de voltaje de 0v .. 4.096v, por lo que no puedo usarlo. Podría intentar atenuar las señales en la próxima versión de la placa para poder aprovechar esto. Sin embargo, cuando lo probé, el ruido era ligeramente peor (probablemente debido al alcance reducido). Así que parece que no ayudó.
¡Pero! La otra ventaja del modo diferencial es que me permite aumentar la frecuencia de muestreo 4 veces, por lo que puedo hacer un sobremuestreo. Esto debería reducir un poco el ruido.
Eso podría ser suficiente para ti. Si el ruido es estacionario, promediar cuatro puntos debería reducirlo en la raíz cuadrada de 4, ¡así que ahí tienes tu parte extra! Gracias por su paciencia con mis preguntas aleatorias, pero para mí ese siempre ha sido un gran método para forzar nuevas visitas creativas.
Pero mi pregunta sigue sin respuesta. ¿Hay algo que podría haber hecho mejor en el diseño de PCB?
Tal vez un límite de derivación en Vref (no estoy seguro de cómo hacerlo, está en la hoja de datos). Aparte de eso, creo que está extremadamente cerca, si no en, el ENOB ideal para el PSOC 3 ADC a 12 bits, ¡así que lo ha hecho lo mejor que pudo!
@Rocketmagnet: en lugar de tener el pin GND del sensor Hall integrado conectado por un rastro largo y delgado en la capa "roja" antes de que pase por una vía al plano GND, parece que sería mejor tener ese GND el pin se conecta directamente al plano GND en la capa del plano GND. Pero dudo que eso marque una gran diferencia, como ha dicho Scott, parece que ya está obteniendo el ENOB máximo que puede esperar de este chip.
El motivo de la traza larga y delgada fue llevar la energía y la conexión a tierra al regulador analógico y al ADC sin pasarlo por la parte del plano de tierra que definitivamente tiene corrientes digitales. Los dos trazos están uno encima del otro para minimizar el área del bucle.