Materiais
- Arduino;
- Resistor de220 Ω;
- Resistor de 10k Ω;
- Capacitor de qualquer valor, para ser medido.
Circuito eletrônico
Código fonte
/*Projeto capacimetro
blog: http://projetosarduino321.blogspot.com.br/
contado: kleytonxavier31@gmail.com
*/
// --- Bibliotecas Auxiliares ---
#include <LiquidCrystal.h> //inclui biblioteca lcd
// --- Mapeamento de Hardware ---
#define charge 7 // Digital 11 vai carregar o capacitor
#define discharge 6 // Digital 10 vai descarregar o capacitor
#define resistor 10000.0F // Resistor de carga utilizado no projeto
#define capLoad A0 // medida de tensão (carga no capacitor) no pino analógico 0
// --- Hardware do LCD ---
LiquidCrystal disp(9,8,5,4,3,2);
// --- Variáveis Globais ---
unsigned long Time01; // Tempo inicial
unsigned long Time02; // Tempo transcorrido
float microFarads; // Armazena o valor da capacitância em µF
float nanoFarads; // Armazana o valor da capacitância em nF
// --- Configurações Iniciais ---
void setup()
{
pinMode(charge, OUTPUT); //Configura pino de carga como saída digital
digitalWrite(charge, LOW); //Inicializa pino de carga
disp.begin(16, 2); //Display lcd 16 x 2
disp.setCursor(2,0); //Posiciona cursor na coluna 3, linha 1
disp.print("Capacimetro"); //Escreve no display
Serial.begin(9600);
}
void loop()
{
digitalWrite(charge, HIGH); //Saída de carga em nível alto (carrega o capacitor com a tensão de alimentação do Arduino)
Time01 = millis(); //Armazena a contagem de programa em mili segundos em Time01
while(analogRead(capLoad) < 648){ } // Aguarda até atingir 63,2% da tensão da fonte
Time02 = millis() - Time01; // Calcula o tempo transcorrido
microFarads = ((float)Time02 / resistor) * 1000; // Calcula a Capacitância em Micro Farads
if (microFarads > 1) //Capacitância maior que 1uF?
{ //Sim...
disp.setCursor(5,1); //Posiciona cursor na coluna 6, linha 2
disp.print((long)microFarads); //Imprime valor atual da capacitância em uF
disp.print(" uF"); //Imprime "uF"
} //end if
else //Senão...
{
nanoFarads = microFarads * 1000.0; // Converte uF para nF
disp.setCursor(5,1); //Posiciona cursor na coluna 6, linha 2
disp.print((long)nanoFarads); //Imprime valor atual da capacitância em nF
disp.print(" nF"); //Imprime "nF"
} //end else
digitalWrite(charge, LOW); //Pino de carga fica em nível baixo
pinMode(discharge, OUTPUT); //Pino de descarga configurado temporariamente como saída
digitalWrite(discharge, LOW); //Pino de descarga em nível baixo (descarrega o capacitor)
while(analogRead(capLoad) > 0){ } //Aguarda até que a tensão no capacitor chegue a zero
pinMode(discharge, INPUT); //Pino de descarga volta a ser entrada
delay(300); //atualização das leituras
}
0 comentários:
Postar um comentário