Tabla de contenido:

Medidor de condensador ATTiny85: 4 pasos
Medidor de condensador ATTiny85: 4 pasos

Video: Medidor de condensador ATTiny85: 4 pasos

Video: Medidor de condensador ATTiny85: 4 pasos
Video: QUÉ es y CÓMO programar el ATTINY85? ▶ Prácticas y Proyectos con el Attiny85 2024, Noviembre
Anonim
Medidor de condensador ATTiny85
Medidor de condensador ATTiny85
Medidor de condensador ATTiny85
Medidor de condensador ATTiny85

Este instructivo es para un medidor de condensador basado en el ATTiny85 con las siguientes características.

  • Basado en ATTiny85 (DigiStamp)
  • Pantalla OLED SSD1306 de 0.96"
  • Medición de frecuencia para condensadores de bajo valor 1pF - 1uF usando un oscilador 555
  • Medición del tiempo de carga para condensadores de alto valor 1uF - 50000uF
  • 2 puertos separados utilizados para los métodos para minimizar la capacitancia estática
  • Dos valores de corriente utilizados para el tiempo de carga para minimizar el tiempo para condensadores grandes
  • 555 métodos de auto ceros al inicio, se puede volver a poner a cero con el botón pulsador
  • Una prueba rápida que se utiliza para seleccionar qué método se debe utilizar para cada ciclo de medición.
  • La precisión del método de tiempo de carga se puede mejorar mediante la compatibilidad con el ajuste de frecuencia del reloj OSCVAL

Paso 1: esquema y teoría

Esquema y teoría
Esquema y teoría

El esquema muestra el ATTiny manejando la pantalla OLED SSD1306 a través de una interfaz I2C. Se alimenta directamente de una batería LiOn 300mAh y se incluye un punto de carga que se puede utilizar con un cargador externo compatible con LiOn.

El primer método de medición se basa en medir la frecuencia de un oscilador de funcionamiento libre 555. Este tiene una frecuencia base determinada por las resistencias y un condensador que debe ser de alta precisión, ya que esto determina la precisión de las medidas. Usé un condensador de poliestireno de 820pF al 1% que tenía, pero se pueden usar otros valores alrededor de 1nF. El valor debe ingresarse en el software junto con una estimación de cualquier capacitancia parásita (~ 20pF). Esto dio una frecuencia base de alrededor de 16 KHz. La salida del 555 se alimenta al PB2 del ATTiny que está programado como un contador de hardware. Midiendo el recuento durante un período de aproximadamente 1 segundo, se puede determinar la frecuencia. Esto se hace al inicio para determinar la frecuencia base. Cuando se agrega un capacitor bajo prueba en paralelo al capacitor base, la frecuencia se reduce y cuando se mide y se compara con la frecuencia base, se puede calcular el valor de la capacitancia agregada.

La buena característica de este método es que el valor calculado solo depende de la precisión del condensador base. El período de la medición no importa. La resolución depende de la resolución de las mediciones de frecuencia, que es bastante alta, por lo que se puede medir incluso una capacitancia añadida muy pequeña. El factor limitante parece ser el 'ruido de frecuencia' del oscilador 555 que para mí es equivalente a alrededor de 0.3pF.

El método se puede utilizar en un rango decente. Para mejorar el rango, sincronizo el período de medición para detectar los bordes de los pulsos entrantes. Esto significa que incluso las oscilaciones de baja frecuencia como 12Hz (con un condensador de 1uF) se miden con precisión.

Para condensadores más grandes, el circuito está configurado para utilizar un método de sincronización de carga. En esto, el condensador bajo prueba se descarga para asegurarse de que comienza en 0, luego se carga a través de una resistencia conocida del voltaje de suministro. Un ADC en el ATTiny85 se usa para monitorear el voltaje del capacitor y se mide el tiempo para pasar del 0% al 50% de carga. Esto puede usarse para calcular la capacitancia. Como la referencia para el ADC también es el voltaje de suministro, esto no afecta la medición. Sin embargo, la medida absoluta del tiempo que se toma depende de la frecuencia del reloj ATTiny85 y las variaciones en esto afectan el resultado. Se puede usar un procedimiento para mejorar la precisión de este reloj usando un registro de sintonía en el ATTiny85 y esto se describe más adelante.

Para descargar el condensador a 0 V, se utiliza un MOSFET de canal n junto con una resistencia de bajo valor para limitar la corriente de descarga. Esto significa que incluso los condensadores de gran valor se pueden descargar rápidamente.

Para cargar el condensador se utilizan 2 valores de resistencia de carga. Un valor base proporciona tiempos de carga razonables para condensadores desde 1 uF hasta aproximadamente 50 uF. Se utiliza un MOSFET de canal p para conectar en paralelo en una resistencia más baja para permitir que los condensadores de valor más alto se midan en un intervalo razonable. Los valores elegidos dan un tiempo de medición de aproximadamente 1 segundo para capacitores de hasta 2200 uF y proporcionalmente más largo para valores mayores. En el extremo inferior del valor, el período de medición debe mantenerse razonablemente largo para permitir que la determinación de la transición a través del umbral del 50% se realice con suficiente precisión. La frecuencia de muestreo del ADC es de aproximadamente 25uSec, por lo que un período mínimo de 22mSec proporciona una precisión razonable.

Como el ATTiny tiene IO limitado (6 pines), la asignación de este recurso debe realizarse con cuidado. Se necesitan 2 pines para la pantalla, 1 para la entrada del temporizador, 1 para el ADC, 1 para el control de descarga y 1 para el control de la tasa de carga. Quería un control de botón para permitir la puesta a cero en cualquier momento. Esto se hace conectando la línea I2C SCL. Como las señales I2C son de drenaje abierto, no hay conflicto eléctrico al permitir que el botón tire de esta línea hacia abajo. La pantalla dejará de funcionar con el botón presionado, pero esto no tiene ninguna consecuencia, ya que se reanuda cuando se suelta el botón.

Paso 2: construcción

Construcción
Construcción
Construcción
Construcción
Construcción
Construcción

Hice esto en una pequeña caja impresa en 3D de 55 mm x 55 mm. Diseñada para contener los 4 componentes principales; la placa ATTiny85 DigiStamp, la pantalla SSD1306, la batería LiOn y una pequeña placa prototipo que contiene el temporizador 55 y la electrónica de control de carga.

Recinto en

Piezas necesarias

  • Tarjeta ATTiny85 DigiStamp. Usé una versión con un conector microUSB que se usa para cargar firmware.
  • Pantalla OLED SSD1306 I2C
  • Batería de litio de 300 mAH
  • Pequeña tira de placa de creación de prototipos
  • Chip temporizador CMOS 555 (TLC555)
  • MOSFET de canal n AO3400
  • MOSFET de canal p AO3401
  • Resistencias 4R7, 470R, 22K, 2x33K
  • Condensadores 4u7, 220u
  • Condensador de precisión 820pF 1%
  • Interruptor deslizante en miniatura
  • 2 x encabezados de 3 pines para puerto de carga y puertos de medición
  • Presionar el botón
  • Recinto
  • Conectar cable

Herramientas necesarias

  • Soldador de punta fina
  • Pinzas

Primero cree el circuito del temporizador 555 y los componentes de carga en la placa prototipo. Agregue cables voladores para las conexiones externas. Coloque el interruptor deslizante y el punto de carga y el puerto de medición en el gabinete. Coloque la batería y conecte el cableado de alimentación principal al punto de carga, deslice el interruptor. Conecte tierra al botón pulsador. Coloque el ATTiny85 en su lugar y complete el enganche.

Puede hacer algunas modificaciones de ahorro de energía en la placa ATTiny antes de instalar, lo que reducirá un poco la corriente y extenderá la vida útil de la batería.

www.instructables.com/Reducing-Sleep-Curre…

Esto no es crítico ya que hay un interruptor de encendido para apagar el medidor cuando no está en uso.

Paso 3: software

El software para este medidor de condensadores se puede encontrar en

github.com/roberttidey/CapacitorMeter

Este es un boceto basado en Arduino. Necesita bibliotecas para la pantalla e I2C que se pueden encontrar en

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Estos están optimizados para que el ATTiny ocupe un mínimo de memoria. La biblioteca I2C es un método de explosión de bits de alta velocidad que permite usar 2 pines cualesquiera. Esto es importante ya que los métodos I2C que utilizan el puerto serie utilizan PB2, que está en conflicto con el uso de la entrada de temporizador / contador necesaria para medir la frecuencia 555.

El software está estructurado en torno a una máquina de estados que realiza la medición a través de un ciclo de estados. Un ISR admite el desbordamiento del contador del temporizador para ampliar el hardware de 8 bits. Un segundo ISR admite el funcionamiento del ADC en modo continuo. Esto da la respuesta más rápida al circuito de carga que cruza el umbral.

Al comienzo de cada ciclo de medición, una función getMeasureMode determina cuál es el método más apropiado para cada medición.

Cuando se usa el método 555, la temporización del conteo solo comienza cuando el contador ha cambiado. Asimismo, la temporización solo se detiene después del intervalo de medición nominal y cuando se detecta un borde. Esta sincronización permite un cálculo preciso de la frecuencia incluso para bajas frecuencias.

Cuando se inicia el software, las primeras 7 mediciones son "ciclos de calibración" que se utilizan para determinar la frecuencia base del 555 sin condensador añadido. Se promedian los últimos 4 ciclos.

Hay soporte para ajustar el registro OSCAL para la sintonización del reloj. Sugiero establecer OSCCAL_VAL en 0 inicialmente en la parte superior del boceto. Esto significa que se utilizará la calibración de fábrica hasta que se realice el ajuste.

Se requiere ajustar el valor del condensador base 555. También agrego una cantidad estimada de capacitancia parásita.

Si se utilizan resistencias diferentes para los métodos de carga, también será necesario cambiar los valores CHARGE_RCLOW y CHARGE_RCHIGH en el software.

Para instalar el software, utilice el método normal de digistamp para cargar el software y conectar el puerto USB cuando se le solicite. Deje el interruptor de encendido en la posición de apagado ya que el USB suministrará energía para esta operación.

Paso 4: Operación y calibración avanzada

El funcionamiento es muy sencillo.

Después de encender la unidad y esperar a que termine el cero de calibración, conecte el condensador bajo prueba a uno de los dos puertos de medición. Utilice los puertos 555 para condensadores de valor bajo <1uF y el puerto de carga para condensadores de valor superior. Para condensadores electrolíticos, conecte el terminal negativo al punto de tierra común. Durante la prueba, el condensador se cargará hasta aproximadamente 2V.

El puerto 555 se puede poner a cero manteniendo presionado el botón pulsador durante aproximadamente 1 segundo y soltándolo. Asegúrese de que no haya nada conectado al puerto 555 para esto.

Calibración avanzada

El método de carga se basa en la frecuencia absoluta del reloj del ATTiny85 para medir el tiempo. El reloj utiliza el oscilador RC interno dispuesto para dar un reloj nominal de 8 MHz. Aunque la estabilidad del oscilador es bastante buena para las variaciones de voltaje y temperatura, su frecuencia puede estar fuera de un cierto porcentaje a pesar de que está calibrado de fábrica. Esta calibración establece el registro OSCCAL al inicio. La calibración de fábrica puede mejorarse verificando la frecuencia y haciendo un ajuste más óptimo del valor OSCCAL para adaptarse a una placa ATTiny85 en particular.

No he logrado encajar en un método más automático en el firmware todavía, así que utilizo el siguiente procedimiento manual. Son posibles dos variaciones dependiendo de las medidas externas disponibles; ya sea un medidor de frecuencia capaz de medir la frecuencia de la forma de onda triangular en el puerto 555, o una fuente de onda cuadrada de frecuencia conocida, p. 10KHz con niveles de 0V / 3.3V que se pueden conectar al puerto 555 y anular la forma de onda para forzar esa frecuencia en el contador. Usé el segundo método.

  1. Encienda el medidor con su potencia normal sin condensadores conectados.
  2. Conecte el medidor de frecuencia o el generador de ondas cuadradas al puerto 555.
  3. Reinicie el ciclo de calibración presionando el botón.
  4. Al final del ciclo de calibración, la pantalla mostrará la frecuencia determinada por el contador y el valor OSCCAL actual. Tenga en cuenta que el uso repetido del ciclo de calibración alternará entre mostrar la frecuencia medida y normal sin pantalla.
  5. Si la frecuencia mostrada es menor que la conocida, significa que la frecuencia del reloj es demasiado alta y viceversa. Encuentro que un incremento de OSCCAL ajusta el reloj en aproximadamente un 0.05%
  6. Calcule un nuevo valor OSCCAL para mejorar el reloj.
  7. Ingrese el nuevo valor de OSCCAL en OSCCAL_VAL en la parte superior del firmware.
  8. Reconstruya y cargue un nuevo firmware. Repita los pasos 1-5 que deberían mostrar el nuevo valor OSCCAL y la nueva medición de frecuencia.
  9. Si es necesario, repita los pasos nuevamente hasta obtener el mejor resultado.

Tenga en cuenta que es importante hacer la parte de medición de esta sintonización cuando se ejecuta con energía normal, no USB, para minimizar cualquier cambio de frecuencia debido al voltaje de suministro.

Recomendado: