Índice:

Medidor de capacitor ATTiny85: 4 etapas
Medidor de capacitor ATTiny85: 4 etapas

Vídeo: Medidor de capacitor ATTiny85: 4 etapas

Vídeo: Medidor de capacitor ATTiny85: 4 etapas
Vídeo: Пиковый детектор. 2024, Outubro
Anonim
Medidor de capacitor ATTiny85
Medidor de capacitor ATTiny85
Medidor de capacitor ATTiny85
Medidor de capacitor ATTiny85

Este instrutível é para um medidor de capacitor baseado no ATTiny85 com os seguintes recursos.

  • Baseado em ATTiny85 (DigiStamp)
  • SSD1306 Tela OLED de 0,96"
  • Medição de frequência para capacitores de baixo valor 1pF - 1uF usando oscilador 555
  • Medição do tempo de carga para capacitores de alto valor 1uF - 50000uF
  • 2 portas separadas usadas para os métodos para minimizar a capacitância stary
  • Dois valores de corrente usados para o tempo de carga para minimizar o tempo para grandes capacitores
  • O método 555 zeros próprios na inicialização, pode ser zerado novamente com o botão
  • Um teste rápido usado para selecionar qual método deve ser usado para cada ciclo de medição.
  • A precisão do método de tempo de carga pode ser melhorada pelo suporte para ajuste de frequência de relógio OSCVAL

Etapa 1: Esquemático e Teoria

Esquemática e Teoria
Esquemática e Teoria

O esquema mostra o ATTiny conduzindo o display OLED SSD1306 por meio de uma interface I2C. É alimentado diretamente por uma bateria LiOn 300mAh e inclui um ponto de carregamento que pode ser usado com um carregador externo compatível com LiOn.

O primeiro método de medição é baseado na medição da frequência de um oscilador 555 de funcionamento livre. Ele tem uma frequência base determinada pelos resistores e um capacitor que deve ser de alta precisão, pois determina a precisão das medições. Eu usei um capacitor de poliestireno 820pF 1% que tinha, mas outros valores em torno de 1nF podem ser usados. O valor deve ser inserido no software junto com uma estimativa de qualquer capacitância parasita (~ 20pF). Isso deu uma frequência base de cerca de 16KHz. A saída do 555 é alimentada no PB2 do ATTiny, que é programado como um contador de hardware. Medindo a contagem ao longo de um período de cerca de 1 segundo, a frequência pode ser determinada. Isso é feito na inicialização para determinar a frequência base. Quando um capacitor em teste é adicionado em paralelo ao capacitor de base, a frequência é reduzida e, quando isso é medido e comparado com a frequência de base, o valor da capacitância adicionada pode ser calculado.

O bom recurso desse método é que o valor calculado depende apenas da precisão do capacitor de base. O período da medição não importa. A resolução depende da resolução das medições de frequência, que é bastante alta, portanto, mesmo uma capacitância adicionada muito pequena pode ser medida. O fator limitante parece ser o 'ruído de frequência' do oscilador 555, que para mim é equivalente a cerca de 0,3pF.

O método pode ser usado em um intervalo decente. Para melhorar o alcance, sincronizo o período de medição para detectar as bordas dos pulsos de entrada. Isso significa que mesmo oscilações de baixa frequência como 12 Hz (com um capacitor de 1uF) são medidas com precisão.

Para capacitores maiores, o circuito é organizado para usar um método de tempo de carga. Nesse caso, o capacitor em teste é descarregado para garantir que ele comece em 0 e, em seguida, seja carregado por meio de uma resistência conhecida da tensão de alimentação. Um ADC no ATTiny85 é usado para monitorar a tensão do capacitor e o tempo para ir de 0% a 50% da carga é medido. Isso pode ser usado para calcular a capacitância. Como a referência para o ADC também é a tensão de alimentação, isso não afeta a medição. No entanto, a medida absoluta do tempo obtido depende da frequência do relógio ATTiny85 e as variações disso afetam o resultado. Um procedimento pode ser usado para melhorar a precisão deste relógio usando um registro de ajuste no ATTiny85 e isso é descrito mais tarde.

Para descarregar o capacitor para 0 V, um MOSFET de canal n é usado junto com um resistor de valor baixo para limitar a corrente de descarga. Isso significa que mesmo capacitores de grande valor podem ser descarregados rapidamente.

Para carregar o capacitor 2 valores de resistor de carga são usados. Um valor base fornece tempos de carregamento razoáveis para capacitores de 1uF até cerca de 50uF. Um MOSFET de canal p é usado para colocar em paralelo em um resistor inferior para permitir que os capacitores de valor mais alto sejam medidos em um intervalo razoável. Os valores escolhidos fornecem um tempo de medição de cerca de 1 segundo para capacitores de até 2200uF e proporcionalmente maior para valores maiores. Na extremidade inferior do valor, o período de medição deve ser mantido razoavelmente longo para permitir que a transição através do limite de 50% seja feita com precisão suficiente. A taxa de amostragem do ADC é de cerca de 25 µSeg, portanto, um período mínimo de 22mSeg fornece uma precisão razoável.

Como o ATTiny limitou o IO (6 pinos), a alocação desse recurso deve ser feita com cuidado. 2 pinos são necessários para o display, 1 para a entrada do temporizador, 1 para o ADC, 1 para controle de descarga e 1 para controle de taxa de carga. Eu queria um controle de botão de pressão para permitir zerar novamente a qualquer momento. Isso é feito através do hi-jacking da linha I2C SCL. Como os sinais I2C estão abertos, não há conflito elétrico, permitindo que o botão puxe essa linha para baixo. O display irá parar de funcionar com o botão pressionado, mas isso não tem consequências, pois ele reinicia quando o botão é liberado.

Etapa 2: construção

Construção
Construção
Construção
Construção
Construção
Construção

Fiz isso em uma pequena caixa impressa em 3D de 55 mm x 55 mm. Projetada para conter os 4 componentes principais; a placa ATTiny85 DigiStamp, o display SSD1306, a bateria LiOn e um pequeno pedaço de placa protótipo segurando o cronômetro 55 e os componentes eletrônicos de controle de carga.

Gabinete em

Peças necessárias

  • Placa ATTiny85 DigiStamp. Eu usei uma versão com um conector microUSB que é usado para fazer o upload do firmware.
  • Tela OLED SSD1306 I2C
  • Bateria LiOn 300mAH
  • Pequena tira de placa de prototipagem
  • Chip de temporizador CMOS 555 (TLC555)
  • N-Channel MOSFET AO3400
  • Canal p MOSFET AO3401
  • Resistores 4R7, 470R, 22K, 2x33K
  • Capacitores 4u7, 220u
  • Capacitor de precisão 820pF 1%
  • Interruptor deslizante em miniatura
  • 2 cabeçalhos de 3 pinos para porta de carga e portas de medição
  • Botão de apertar
  • Gabinete
  • Fio de engate

Ferramentas necessárias

  • Ferro de solda de ponta fina
  • Pinças

Primeiro, crie o circuito do temporizador 555 e os componentes de carga na placa de protótipo. Adicione condutores suspensos para as conexões externas. Fixe a chave deslizante, o ponto de carga e a porta de medição no gabinete. Fixe a bateria e faça a fiação de alimentação principal para o ponto de carga, deslize o interruptor. Conecte o aterramento ao botão. Fixe o ATTiny85 no lugar e conclua a conexão.

Você pode fazer algumas modificações para economizar energia na placa ATTiny antes de instalá-la, o que reduzirá um pouco a corrente e aumentará a vida útil da bateria.

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

Isso não é crítico, pois há um botão liga / desliga para desligar o medidor quando não estiver em uso.

Etapa 3: Software

O software para este medidor de capacitor pode ser encontrado em

github.com/roberttidey/CapacitorMeter

Este é um esboço baseado em Arduino. Necessita de bibliotecas para o display e I2C que podem ser encontradas em

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Eles são otimizados para que o ATTiny ocupe o mínimo de memória. A biblioteca I2C é um método bit bang de alta velocidade que permite o uso de quaisquer 2 pinos. Isso é importante porque os métodos I2C que usam a porta serial usam PB2, que está em conflito com o uso da entrada do temporizador / contador necessária para medir a frequência 555.

O software é estruturado em torno de uma máquina de estados que faz a medição por meio de um ciclo de estados. Um ISR suporta estouro do contador do temporizador para estender o hardware de 8 bits. Um segundo ISR suporta o ADC operando em modo contínuo. Isso dá a resposta mais rápida ao circuito de carregamento que ultrapassa o limite.

No início de cada ciclo de medição, uma função getMeasureMode determina qual é o método mais apropriado a ser usado para cada medição.

Quando o método 555 é usado, o tempo da contagem só começa quando o contador muda. Da mesma forma, a temporização só é interrompida após o intervalo de medição nominal e quando uma borda é detectada. Esta sincronização permite o cálculo preciso da frequência, mesmo para frequências baixas.

Quando o software é iniciado, as primeiras 7 medições são 'ciclos de calibração' usados para determinar a frequência base do 555 sem nenhum capacitor adicionado. Os últimos 4 ciclos são calculados em média.

Há suporte para ajustar o registro OSCAL para ajuste do relógio. Eu sugiro definir OSCCAL_VAL como 0 inicialmente no topo do esboço. Isso significa que a calibração de fábrica será usada até que o ajuste seja realizado.

O valor do capacitor de base 555 precisa ser ajustado é obrigatório. Eu também adiciono uma quantidade estimada de capacitância parasita.

Se resistores diferentes forem usados para os métodos de carga, os valores CHARGE_RCLOW e CHARGE_RCHIGH no software também precisarão ser alterados.

Para instalar o software, use o método normal do digistamp para fazer o upload do software e conectar a porta USB quando solicitado. Deixe o botão liga / desliga na posição desligado, pois a energia será fornecida pelo USB para esta operação.

Etapa 4: Operação e calibração avançada

A operação é muito direta.

Depois de ligar a unidade e esperar o zero da calibração terminar, conecte o capacitor em teste a uma das duas portas de medição. Use as portas 555 para capacitores de valor baixo <1uF e a porta de carga para capacitores de valor mais alto. Para capacitores eletrolíticos, conecte o terminal negativo ao ponto de aterramento comum. Durante o teste, o capacitor será carregado até cerca de 2V.

A porta 555 pode ser zerada novamente segurando o botão por cerca de 1 segundo e soltando. Certifique-se de que nada esteja conectado à porta 555 para isso.

Calibração avançada

O método de carga depende da frequência absoluta do relógio do ATTiny85 para medir o tempo. O relógio usa o oscilador RC interno organizado para fornecer um relógio nominal de 8 MHz. Embora a estabilidade do oscilador seja muito boa para variações de tensão e temperatura, sua frequência pode estar fora em alguns pontos percentuais, embora seja calibrado de fábrica. Esta calibração define o registro OSCCAL na inicialização. A calibração de fábrica pode ser melhorada verificando a frequência e fazendo uma configuração mais otimizada do valor OSCCAL para se adequar a uma placa ATTiny85 em particular.

Ainda não consegui encaixar um método mais automático no firmware, então uso o seguinte procedimento manual. Duas variações são possíveis dependendo de quais medidas externas estão disponíveis; ou um medidor de frequência capaz de medir a frequência da forma de onda triangular na porta 555, ou uma fonte de onda quadrada de frequência conhecida, e. 10KHz com níveis de 0V / 3,3V que podem ser conectados à porta 555 e substituir a forma de onda para forçar essa frequência no contador. Usei o segundo método.

  1. Inicie o medidor com sua alimentação normal, sem capacitores conectados.
  2. Conecte o medidor de frequência ou gerador de onda quadrada à porta 555.
  3. Reinicie o ciclo de calibração pressionando o botão.
  4. No final do ciclo de calibração, o display mostrará a frequência conforme determinado pelo contador e o valor OSCCAL atual. Observe que o uso repetido do ciclo de calibração alternará entre mostrar a frequência medida e normal sem exibição.
  5. Se a frequência exibida for menor do que a conhecida, isso significa que a frequência do clock está muito alta e vice-versa. Acho que um incremento OSCCAL ajusta o relógio em cerca de 0,05%
  6. Calcule um novo valor OSCCAL para melhorar o relógio.
  7. Insira o novo valor OSCCAL em OSCCAL_VAL na parte superior do firmware.
  8. Reconstrua e carregue o novo firmware. Repita as etapas 1 a 5, que devem mostrar o novo valor OSCCAL e a nova medição de frequência.
  9. Se necessário, repita as etapas até obter o melhor resultado.

Observe que é importante fazer a parte de medição deste ajuste ao operar com alimentação normal, não USB, para minimizar qualquer mudança de frequência devido à tensão de alimentação.

Recomendado: