Medidor de capacitância DIY Simple Autorange (10pF-10000microF)
Componentes e suprimentos
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| Potenciômetro de volta única - 10k ohms | | × | 1 | |
Aplicativos e serviços online
Sobre este projeto
Multímetros digitais simples (DMMs) não podem medir a capacitância e para encontrar a capacitância, você precisa ir para um DMM avançado e caro ou encontrar módulos de capacitância dedicados.
Neste projeto, vou construir um medidor de capacitância Arduino simples com recurso de Auto-Ranging. Ele pode medir a capacitância de 10 pF a 10.000 μF. A medição ocorre em modo automático, basta conectar o capacitor aos contatos de medição. O dispositivo possui duas faixas:"nF" e "μF". Ao medir um capacitor, a faixa "nF" é primeiro ligada; se a capacitância for muito grande, ocorre a transição para a faixa "μF".
Cada medidor de capacitância tem um circuito RC com valores de resistor conhecidos e um valor de capacitor desconhecido. O Arduino medirá a tensão no capacitor e registrará o tempo que leva para atingir uma certa porcentagem de sua tensão quando totalmente carregado (a constante de tempo). Como o valor da resistência já é conhecido, podemos usar a fórmula em um programa que calculará a capacitância desconhecida. O capacitor em teste é carregado usando um dos resistores. O Arduino inicia o carregamento do capacitor através do resistor de acordo com sua capacidade. No capacitorímetro, a calibração do zero é realizada toda vez que é ligado, portanto, no momento da ligação, não deve ser conectado um capacitor aos contatos de medição. Além disso, todos os capacitores devem ser pré-descarregados.
A precisão é de +/- alguns por cento e depende principalmente da tolerância dos resistores usados, bem como da estabilidade da tensão de alimentação.
Por último, todo o dispositivo é alojado em uma caixa adequada e é outra ferramenta útil em seu laboratório.
Código
Código do Arduino C / C ++
#include LiquidCrystal lcd (12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7void setup () {lcd.begin (16, 2 ); // LCD 16X2 pinMode (A0, INPUT);} long time0, time1, time2 sem sinal; float c, null0; byte kn, mk, i; void loop () {lcd.setCursor (15,0); lcd.print ("*"); if (mk ==0) {pinMode (8, SAÍDA); pinMode (7, INPUT); digitalWrite (8, ALTO); } if (mk ==1) {pinMode (7, SAÍDA); pinMode (8, INPUT); digitalWrite (7, ALTO); } time0 =micros (); enquanto (analogRead (A0) <644) {tempo2 =micros () - tempo0; if (time2> =1000000 &&mk ==0) {mk =1; time0 =100000000; pausa; }} time1 =micros () - time0; while (analogRead (A0)> 0) {pinMode (7, OUTPUT); pinMode (8, SAÍDA); digitalWrite (7, BAIXO); digitalWrite (8, BAIXO); } if (mk ==1 &&time1 <1000) {mk =0; } lcd.setCursor (1,0); c =tempo1; c =c / 1000-null0; c =abs (c); if (time1> =10000000) {lcd.setCursor (1,0); lcd.print ("TESTE uF"); } else {lcd.print (c); if (mk ==0) {lcd.print ("nF"); } if (mk ==1) {lcd.print ("uF"); }} if (i ==0) {i ++; null0 =c + 0,02; } atraso (100);}
Esquemas