Medir capacitância usando Arduino
Medir capacitância usando Arduino
Quando nos deparamos com placas de circuito projetadas anteriormente ou retiramos uma da TV ou do computador antigo, na tentativa de repará-la. E, às vezes, precisamos saber a capacitância de um capacitor específico na placa para eliminar a falha. Então, enfrentamos um problema ao obter o valor exato do capacitor da placa, especialmente se for um dispositivo de montagem em superfície. Podemos comprar equipamentos para medir a capacitância, mas todos esses dispositivos são caros e não são para todos. Com isso em mente, projetaremos um medidor de capacitância Arduino simples para medir a capacitância de capacitores desconhecidos.
Este medidor pode ser facilmente fabricado e também econômico. Nós vamos fazer o medidor de capacitância usando o Arduino Uno, o gatilho Schmitt e o CI 555 temporizador.
Para testar o medidor de frequência, faremos um gerador de sinal fictício. Este gerador de sinal fictício será fabricado usando um chip de timer 555. O circuito do timer gera uma onda quadrada que será fornecida à UNO para teste.
Com tudo instalado, teremos um medidor de frequência e um gerador de ondas quadradas.
Conteudo
Componentes necessários:
- CI 555 temporizador e 74LS14 Schmitt disparam a porta ou a porta NÃO.
- 1K Ω resistor(2), 100Ω resistor
- 100nF capacitor (2), 1000µF capacitor
- LCD 16*2
- 47KΩ potenciometro,
- ProtoBoard e Fios
Explicação do circuito:
O diagrama do circuito do medidor de frequência usando o Arduino é mostrado na figura abaixo. O circuito é simples, um LCD é conectado ao Arduino para exibir a frequência medida do sinal. ‘Entrada de onda’ vai para o circuito gerador de sinais, a partir do qual estamos transmitindo sinal ao Arduino. Uma porta de disparo Schmitt (IC 74LS14) é usada para garantir que apenas a onda retangular seja alimentada no Arduino. Para filtrar o ruído, adicionamos dois capacitores na potência. Este medidor de frequência pode medir frequências de até 1 MHz.
Este circuito pode medir com precisão as capacitâncias na faixa de 10nF a 10uF.
Gerador de onda quadrada com base no CI 555 temporizadores:
Antes de tudo, falaremos sobre o gerador de ondas quadradas com base no CI 555 Timer, ou devo dizer, o 555 Stable Multivibrator. Sabemos que a capacitância de um capacitor não pode ser medida diretamente em um circuito digital; em outras palavras, a UNO lida com sinais digitais e não pode medir diretamente a capacitância. Então, usamos o circuito gerador de onda quadrada de 555 para ligar o capacitor ao mundo digital.
Simplesmente falando, o timer fornece saída de onda quadrada cuja frequência implica diretamente na capacitância conectada a ele. Então, primeiro obtemos o sinal de onda quadrada cuja frequência é representativa da capacitância do capacitor desconhecido e alimentamos esse sinal para a UNO para obter o valor apropriado.
Configuração geral 555 no modo Astable, como mostrado na figura abaixo:
A frequência do sinal de saída depende dos resistores RA, RB e capacitor C. A equação é dada como,
Frequência (F) = 1/(Período de tempo)=1,44/((RA+RB*2)*C).
Aqui RA e RB são valores de resistência e C é valor de capacitância. Colocando os valores de resistência e capacitância na equação acima, obtemos a frequência da onda quadrada de saída.
Vamos conectar 1KΩ como RA e 10KΩ como RB. Então a fórmula se torna,
Frequência (F) = 1/(período)=1,44/(21000*C).
Reorganizando os termos que temos,
Capacitância C = 1,44/(21000*F)
Em nosso Código de programa (veja abaixo), para obter o valor da capacitância com precisão, calculamos o resultado em nF multiplicando os resultados obtidos (em farads) por “1000000000”. Também usamos ‘20800’ em vez de 21000, porque as resistências precisas de RA e RB são 0,98K e 9,88K.
Portanto, se conhecermos a frequência da onda quadrada, podemos obter o valor da capacitância.
Portão do gatilho Schmitt:
Os sinais gerados pelo circuito do temporizador não são completamente seguros para serem enviados diretamente ao Arduino Uno. Com a sensibilidade do UNO em mente, usamos o gatilho Schmitt. A porta de disparo Schmitt é uma porta lógica digital.
Este portão fornece SAÍDA com base no nível de tensão de ENTRADA. Um gatilho Schmitt tem um nível de tensão THERSHOLD, quando o sinal INPUT aplicado à porta tem um nível de tensão maior que o THRESHOLD da porta lógica, OUTPUT vai ALTO. Se o nível do sinal de tensão de ENTRADA for menor que THRESHOLD, a SAÍDA da porta será BAIXA. Com isso, normalmente não obtemos o gatilho Schmitt separadamente, sempre temos um portão NÃO seguindo o gatilho Schmitt. O trabalho do Schmitt Trigger é explicado aqui: Schmitt Trigger Gate
Nós vamos usar o chip 74HC14, este chip possui 6 portas Schmitt Trigger. Esses seis portões são conectados internamente, como mostrado na figura abaixo.
A Tabela da Verdade do portão Invertido do Schmitt Trigger é mostrada na figura abaixo, com isso temos que programar a ONU para inverter os períodos de tempo positivo e negativo em seus terminais.
Conectamos o sinal gerado pelo circuito do temporizador ao portão ST, teremos uma onda retangular de períodos de tempo invertidos na saída que é seguro para ser dado à UNO.
O Arduino mede a capacitância:
O Uno possui uma função especial pulseIn, que permite determinar a duração do estado positivo ou negativo de uma onda retangular específica:
Htime = pulseIn(8, HIGH); Ltime = pulseIn(8, LOW);
A função pulseIn mede o tempo durante o qual o nível Alto ou Baixo está presente no PIN8 de Uno. A função pulseIn mede esse tempo alto (Htime) e tempo baixo (Ltime) em microssegundos. Quando adicionamos Htime e Ltime, teremos a Duração do Ciclo e, invertendo-a, teremos a Frequência.
Uma vez que tenhamos a frequência, podemos obter a capacitância usando a fórmula que discutimos anteriormente.
Resumo e Teste:
Então, em resumo, conectamos o capacitor desconhecido ao circuito do temporizador 555, que gera uma saída de onda quadrada cuja frequência está diretamente relacionada à capacitância do capacitor. Este sinal é dado ao UNO através do portão ST. A ONU mede a frequência. Com a frequência conhecida, programamos a ONU para calcular a capacitância usando a fórmula discutida anteriormente.
Vamos ver alguns resultados que obtive,
Quando conectei o capacitor eletrolítico de 1uF, o resultado é 1091,84 nF ~ 1uF. E o resultado com capacitor de poliéster 0,1uF é 107,70 nF ~ 0,1uF
Então liguei o capacitor de cerâmica de 0,1uF e o resultado é 100,25 nF ~ 0,1uF. Também o resultado com capacitor eletrolítico de 4.7uF é 4842.83 nF ~ 4.8uF
Então é assim que podemos simplesmente medir a capacitância de qualquer capacitor.
Código:
// Biblioteca do módulo #include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); int32_t Htime; int32_t Ltime; float Ttime; float frequency; float capacitance; void setup() { pinMode(8,INPUT); //pino 8 como entrada de sinal lcd.begin(16, 2); lcd.setCursor(0,0); lcd.print("capacitância ="); } void loop() { for (int i=0;i<5;i++) //medir a duração do tempo cinco vezes { Ltime=(pulseIn(8,HIGH)+Ltime)/2; //obter média para cada ciclo Htime=(pulseIn(8,LOW)+Htime)/2; } Ttime = Htime+Ltime; frequency=1000000/Ttime; capacitance = (1.44*1000000000)/(20800*frequency); //Cálculo da capacitância em nF lcd.setCursor(0,1); lcd.print(capacitance); lcd.print(" nF "); delay(500); }
Agora você está pronto para usar o Arduino!