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.
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.
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.
Respuestas:
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:
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.
fuente
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
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.
fuente