Tabla de contenido:

Osciloscopio de doble seguimiento: 11 pasos (con imágenes)
Osciloscopio de doble seguimiento: 11 pasos (con imágenes)

Video: Osciloscopio de doble seguimiento: 11 pasos (con imágenes)

Video: Osciloscopio de doble seguimiento: 11 pasos (con imágenes)
Video: Tutorial electronica basica. Parte 27. El Osciloscopio 2024, Mes de julio
Anonim
Osciloscopio de seguimiento dual
Osciloscopio de seguimiento dual

Cuando construí mi mini osciloscopio anterior, quería ver qué tan bien podía hacer funcionar mi microcontrolador ARM más pequeño, un STM32F030 (F030), e hizo un buen trabajo.

En uno de los comentarios se sugirió que una "píldora azul" con un STM32F103 (F103) podría ser mejor, más pequeña que la placa de desarrollo con el F030 y posiblemente incluso más barata. Pero para el mini osciloscopio no usé la placa de desarrollo sino la F030 en una placa SMD-DIP aún más pequeña, por lo que una Blue Pill ciertamente no sería más pequeña y dudo que también sea más barata.

El código ahora está disponible en Gitlab:

gitlab.com/WilkoL/dual-trace-oscilloscope

Suministros

Lista de piezas: - caja de plástico - tablero perfilado (tablero prototipo de doble cara 8x12cm) - pastilla azul - pantalla TFT ST7735s - batería de iones de litio - regulador de baja caída HT7333 3.3V - opamp dual MCP6L92 - tablero TSSOP8 a DIP8 - cristal de 12 MHz (no es necesario) - codificador rotatorio más perilla (2x) - interruptor de potencia - terminales banana (4x) - placa de carga de iones de litio - varias resistencias y condensadores - espaciadores de nailon, tuercas y tornillos

Instrumentos:

- estación de soldadura - soldar 0,7 mm - algo de alambre - cortador lateral - lentes y lupa - taladro - multímetro - osciloscopio - STLink-V2

Software:

- STM32IDE - STM32CubeMX - Utilidad STLink - Biblioteca LowLayer - Biblioteca adaptada para ST7735s - Notepad ++ - Kicad

Paso 1: modo intercalado o simultáneo

Modo entrelazado o simultáneo
Modo entrelazado o simultáneo
Modo entrelazado o simultáneo
Modo entrelazado o simultáneo

Pastilla azul

Pero la idea estaba ahí, ¡y sabía que el F103 tiene dos ADC! ¿Qué pasa si utilizo esos dos ADC juntos en modo "intercalado", algo que he hecho antes con el STM32F407 (F407)? La velocidad de muestreo se duplicaría. Eso, combinado con un microcontrolador más rápido, sería un gran sucesor del mini osciloscopio.

Modo entrelazado Curiosamente, los ADC del F103 son menos avanzados que el del F030 (y el F407), no puede elegir la resolución. Más importante es que tampoco puede cambiar la sincronización entre los dos ADC. Ahora, cuando usa el modo de intercalación, generalmente desea que el muestreo sea lo más rápido posible con el menor tiempo entre muestras, pero con un osciloscopio es necesario cambiar la sincronización. Tal vez todavía se pueda hacer, no soy un diseñador de osciloscopios profesional, pero abandoné el plan para usar el modo intercalado.

Modo simultáneo

Pero, tener dos ADC ofrece muchas más opciones, los dos ADC también se pueden configurar en modo "regular-simultáneo". ¿Qué tal un osciloscopio de doble traza?

Habiendo decidido intentar hacer un osciloscopio de doble traza, también quería tener una sensibilidad de entrada variable, una opción que no tenía en el mini osciloscopio. Eso significa un atenuador (y amplificador) en las entradas. ¿Y tal vez quería aún más? Así que hice una pequeña lista de "cosas agradables".

LISTA DE DESEOS

dos canales

sensibilidad variable en ambos canales

disparando en ambos canales

nivel de disparo variable en ambos canales

desplazamiento variable

energía de una sola batería

caben en la misma caja que el mini-osciloscopio

Paso 2: creación de prototipos

Creación de prototipos
Creación de prototipos
Creación de prototipos
Creación de prototipos

Como de costumbre, comencé estos proyectos en una placa de pruebas. (Ver imagen) Y antes de soldar todo en la placa de perforación, trato de averiguar si encajará en la caja del proyecto elegido y cómo encajará. Encaja, pero solo por poco. Algunas partes están ocultas debajo de la pantalla, otras debajo de la píldora azul. Y nuevamente, al igual que para la mayoría de mis proyectos, este es un proyecto único y no diseñaré un PCB para él.

Paso 3: atenuadores

Atenuadores
Atenuadores

En los osciloscopios normales, los atenuadores de entrada son circuitos que cambian la atenuación y la amplificación activando y desactivando resistencias con pequeños relés de señal. Si bien tengo algunos de esos relés, sé que no cambiarán a menos de 4 voltios, eso significa que solo funcionarán con una batería de iones de litio completamente cargada (4.2V). Entonces necesitaba otra forma de cambiar esas resistencias. Por supuesto, podría simplemente instalar interruptores mecánicos, pero eso ciertamente ya no encajaría en la caja del proyecto si tenía en mente, tal vez podría probar un potenciómetro digital mejor nuevamente (el que tengo es demasiado ruidoso).

Luego pensé en "interruptores analógicos", con los que puedo hacer un potenciómetro digital yo mismo. En mi colección de piezas encontré el CD4066 con cuatro interruptores analógicos. La idea es hacer que la resistencia de retroalimentación de un amplificador operacional sea variable cambiando las resistencias de entrada y salida en paralelo a la resistencia de retroalimentación.

Funciona muy bien, pero teniendo solo 4 interruptores en el 4066 y teniendo 2 canales no era posible hacer más de tres niveles de sensibilidad. Elegí 500mV, 1V y 2V por división, ya que esos son los niveles de voltaje que más utilizo. La pantalla está dividida en 6 divisiones, por lo que los rangos son de -1.5V a + 1.5V, -3V a + 3V y -6V a 6V.

Con el "suelo virtual" puede mover estos rangos hacia arriba y hacia abajo para que incluso sea posible 0v a + 12V.

Paso 4: Tierra virtual

Tierra virtual
Tierra virtual
Tierra virtual
Tierra virtual

Debido a que el osciloscopio utiliza un solo riel de alimentación (3.3V), los amplificadores operacionales necesitan un nivel de suelo virtual o no funcionarán. Este nivel del suelo virtual está hecho con PWM en un canal de salida de TIM4, el ciclo de trabajo cambia de solo un pequeño porcentaje a casi un cien por ciento. Un filtro de paso bajo con una resistencia de 1k y un capacitor de 10uF lo transforma en un voltaje de (casi) 0V a (casi) 3.3V. La frecuencia de la onda cuadrada es un poco menos de 100 kHz, por lo que el filtro de paso bajo simple es lo suficientemente bueno.

Un poco tarde en la construcción de este osciloscopio me di cuenta de que no se pueden tener dos compensaciones separadas para los canales. Esto se debe al hecho de que con una sola fuente de alimentación, el nivel del suelo de entrada debe estar separado del nivel del suelo real de los amplificadores operacionales. De modo que ambos canales se mueven de la misma forma que cambia el ajuste GND.

Paso 5: codificadores rotatorios y depuración

Codificadores rotatorios y depuración
Codificadores rotatorios y depuración
Codificadores rotatorios y depuración
Codificadores rotatorios y depuración

En el mini osciloscopio utilicé solo un codificador rotatorio para todas las funciones. Eso haría que un osciloscopio dual sea muy difícil de usar, así que aquí necesito dos. Un codificador para los atenuadores y el nivel del suelo virtual y el otro codificador para la base de tiempo y el disparo. Lamentablemente, al igual que en mi otro proyecto, estos codificadores rotativos son muy "ruidosos". Son tan malos que simplemente no funcionarían con temporizadores en "modo codificador", la forma estándar de leerlos. Tuve que hacer un mecanismo antirrebote con el temporizador TIM2, comprobando los codificadores cada 100us. Este temporizador a su vez se inicia (solo) cuando hay alguna actividad en los codificadores, esto se verifica con la funcionalidad EXTI en los puertos de entrada. Ahora los codificadores funcionan bien.

Y como puede ver, tener una pantalla también puede ser muy útil para mostrar información de depuración.

Paso 6: visualización y base de tiempo

Pantalla y base de tiempo
Pantalla y base de tiempo

La pantalla tiene una resolución de 160 x 128 píxeles, por lo que se necesitan 160 muestras para una pantalla completa, logré acelerar los ADC para hacer 1.6 millones de muestras por segundo y eso, con el microcontrolador mucho overclockeado (más sobre eso más adelante), da una base de tiempo mínima de 20us por división (100us por pantalla). Por lo tanto, una forma de onda de 10 kHz llenará toda la pantalla.

Eso es solo el doble de rápido que el mini osciloscopio que hice antes. Bueno, ahora es con dos canales:-).

Como se dijo, la pantalla tiene 160 píxeles de ancho, por lo que solo se necesitan 160 valores por pantalla. Pero todos los búferes contienen en realidad 320 muestras. Por tanto, el DMA almacena 320 valores antes de activar una interrupción completa de transmisión (TC). Esto se debe a que la activación se realiza mediante software. El muestreo comienza en un momento aleatorio, por lo que es muy poco probable que el primer valor del búfer sea el lugar donde debería estar el punto de activación.

Por lo tanto, el punto de activación se encuentra leyendo a través de trace_x_buffer, si el valor está en el valor de activación deseado en si el valor anterior está justo debajo de él, se encuentra el punto de activación. Esto funciona bastante bien, pero necesita un búfer más grande que el tamaño real de la pantalla.

Esta también es la razón por la que la frecuencia de actualización en la configuración de base de tiempo más baja es más lenta de lo que cabría esperar. Cuando usa la configuración de 200ms / div, una pantalla llena de datos es de 1 segundo, pero debido a que se realiza el doble de conversiones, eso toma 2 segundos. En la configuración de base de tiempo más rápida, no lo notará mucho.

TIM3 se utiliza para generar la base de tiempo. Activa los ADC con la velocidad requerida por la configuración de base de tiempo seleccionada. Su reloj de TIM3 es de 120MHz (ver OVERCLOCKING), el número máximo al que cuenta (ARR) determina cómo se desborda o, en lenguaje ST, se actualiza. A través de TRGO, estos pulsos de actualización activan los ADC. La frecuencia más baja que genera es 160 Hz, la más alta es 1.6MHz.

Paso 7: ADC y DMA

ADC y DMA
ADC y DMA

Los dos ADC convierten el voltaje en sus entradas al mismo tiempo, almacenan esos dos valores de 12 bits en una sola variable de 32 bits. Entonces, el DMA solo tiene una variable por conversión (doble) para transferir.

Por lo tanto, para usar estos valores es necesario dividirlos en dos valores para que puedan usarse para mostrar las dos trazas. Como se dijo, los ADC en el F103 no se pueden configurar en otras resoluciones que no sean 12 bits. Siempre están en modo de 12 bits, por lo que las conversiones siempre toman el mismo número de pulsos de reloj. Aún así, con el overclocking de los ADC, se pueden hacer 1.6 MSamples por segundo (ver Extra: Overclocking).

La referencia de los ADC es Vdd, el riel de 3.3V. Para convertir eso a valores más convenientes (por división), he calculado los valores de los atenuadores, porque no tengo los valores exactos de resistencia que surgen de esos cálculos, algunas correcciones se realizan en el software.

En este proyecto utilizo DMA en "modo regular". En este modo, el DMA deja de transferir datos (de los ADC a la memoria) cuando se transfieren todas las palabras (o medias palabras o bytes). En el otro modo posible, "modo circular", el DMA se reinicia y continúa transfiriendo datos sin interrupciones. Eso no funcionó con el F103, es tan rápido que sobrescribe los datos en adc_buffer antes de que el resto del programa pueda leerlo. Entonces ahora el proceso es el siguiente:

- configurar DMA a la cantidad de datos que se van a transferir y habilitar DMA

- iniciar la activación de los ADC, estos solicitarán transferencias DMA después de cada (doble) conversión

- después de que se transfiera el número establecido de conversiones, DMA se detiene

- detener inmediatamente también la activación de los ADC

- hacer toda la manipulación necesaria en los datos en la memoria

- mostrar rastros en la pantalla

- iniciar el proceso de nuevo

Paso 8: Interfaz de usuario

Interfaz de usuario
Interfaz de usuario

Una pantalla de 160 por 128 píxeles no es muy grande y quiero usar la mayor cantidad posible. Por lo tanto, no hay ninguna parte reservada para la configuración de corrientes. En las últimas filas se muestran la sensibilidad vertical, la base de tiempo, el nivel de disparo y el canal de disparo, pero cuando las señales son lo suficientemente grandes, aparecerán en la misma área. La opción que está activa se muestra en amarillo, el resto se muestra en blanco.

Paso 9: Construcción y posibles mejoras

Construcción y posibles mejoras
Construcción y posibles mejoras
Construcción y posibles mejoras
Construcción y posibles mejoras
Construcción y posibles mejoras
Construcción y posibles mejoras
Construcción y posibles mejoras
Construcción y posibles mejoras

Estoy muy feliz con este proyecto. Funciona bien y hace su trabajo, pero podría ser mejor.

La caja del proyecto es demasiado pequeña para que quepa todo cómodamente, por lo que es necesario colocar componentes debajo de la píldora azul. Para que eso fuera posible, la Blue Pill no se podía soldar directamente a la "placa principal". Y debido a que esto hizo que fuera demasiado alto, tuve que quitar muchas partes de la píldora azul, como los puentes para seleccionar BOOT0 y BOOT1 (cosas que nunca uso de todos modos) e incluso tuve que mover el cristal de la parte superior a la inferior. el pcb.

Hice la vida más difícil usando conectores banana en lugar de conectores BNC o SMA, significaba que una gran parte de la placa de perforación era un "área prohibida", para que quede claro por mí mismo, puse cinta kapton sobre ella para evitarlo. de ponerle piezas.

Otro problema de ponerlo todo en una caja de proyecto tan pequeña es que los circuitos analógicos y digitales están muy juntos. Puede ver que hay bastante ruido visible en ambos trazos. ¡Esto ni siquiera lo tenía en el tablero! Al mover las líneas eléctricas para circuitos analógicos y digitales lo más lejos posible, se logró una pequeña mejora, pero no lo suficiente para mi gusto. Reducir todos los valores de resistencia en los circuitos analógicos incluso más de lo que hice (la resistencia de entrada es 100kOhm en lugar de 1MOhm) no ayudó. Sospecho que la activación en la configuración de base de tiempo más rápida (20us / div), que no es excelente, también mejorará con menos ruido en las señales.

Si crea este diseño en una placa de circuito impreso "real", con todas las partes smd y capas separadas para analógico, digital y de potencia (¡son 4 capas!) Probablemente funcionará muy bien. Será mucho más pequeño, no usará una Blue Pill completa sino solo el F103 y eso permitirá suministrarle un Vdda analógico separado (limpio) para los ADC.

Como toque final decidí rociar la caja de negro, hace un cambio de todas las cajas beige que tiene.

Paso 10: el código y un video corto

Paso 11: EXTRA: Overclocking

EXTRA: Overclocking
EXTRA: Overclocking

Al igual que hice con el F03, quería ver qué tan bien se puede overclockear un F103. Las especificaciones de este microcontrolador afirman que la velocidad máxima de reloj no debe superar los 72MHz (que por supuesto ya es más rápido que el F030) pero había leído en varios blogs que overclocking era fácil, así que ¿por qué no?

La píldora azul se proporciona con un cristal de 8MHz, el PLL lo multiplica con un factor de 9 a 72MHz. El PLL se puede aumentar hasta 16 dando un reloj de 128MHz. Eso no supuso ningún problema para mi Blue Pill, de hecho, todas mis Blue Pills funcionan sin problemas en 128MHz.

Pero ahora quería averiguar cuál es el límite real. Así que quité el cristal de 8MHz y lo reemplacé por uno de 12MHz. Nuevamente aumenté el multiplicador PLL hasta que el microcontrolador finalmente se rindió. ¡Eso fue a 168MHz! En 156MHz todavía funcionó bien. Lo dejé funcionando a esa velocidad durante horas y nunca lo vi chocar. En este osciloscopio me conformé con 120MHz, una velocidad que se puede seleccionar con un cristal de 12MHz y PLL en 10, así como con un cristal de 8 MHz y el PLL en 15. (ver SystemClock_Config en main.c)

Los ADC ahora también funcionan más rápido, los tengo funcionando a 30MHz (en lugar de 14), todavía funcionaban bien en 60MHz, ¡STMicroelectronics hace un buen hardware!

STMicroelectronics pone estos límites en la hoja de datos por una buena razón, garantizan que el microcontrolador funciona a los 72MHz especificados en todas las condiciones.

Pero como no uso el microcontrolador a -40 grados Celsius, +85 grados Celsius, con solo 2.0 voltios o 3.6 voltios, creo que es seguro overclockearlo. NO haga esto cuando intente vender un dispositivo con sus microcontroladores, nunca sabe dónde se utilizarán.

Recomendado: