Você está na página 1de 14

CARGA E DESCARGA DE CAPACITOR DEMONSTRADO ATRAVS DE UM

CAPACMETRO COM MICROCONTROLADOR ARDUINO


Edimilson Paz, edimilsonpaz@bol.com.br; Jlio Cezar, jc_piccolli@hotmail.com;
Marcos Andr Pizzolatto, pizzolatto@gmail.com

FADEP - FACULDADE DE PATO BRANCO
Rua Benjamin Borges dos Santos, 1100
CEP 85503-350 - Pato Branco PR




Resumo: Descreve as equaes de carga e
descarga de capacitores atravs da montagem
de um prottipo de capacmetro com uso do
microcontrolador Arduino UNO. Basicamente
pode-se afirmar que aps a constante de
tempo (tau) = R.C carrega-se 63,2% da
carga total do capacitor. A partir desta
premissa pode-se encontrar o valor do
capacitor utilizando-se do tempo discorrido e
um resistor base para clculo.

Palavras-Chave: Circuito RC, carga e
descarga de capacitor, arduno, capacmetro.

Abstract: Equations describing the charge and
discharge the capacitor through the assembly
of a prototype using capacimeter
microcontroller Arduino UNO. Basically it can
be stated that after the time constant (tau) =
RC carries up 63.2% of the total charge on the
capacitor. From this premise one can find the
value of the capacitor using a resistor and
discoursed time basis for calculation.

Keywords: RC circuit, charge and discharge
capacitor, Arduino capacimeter.

1.INTRODUO
O objetivo deste artigo demonstrar o
funcionamento de circuito de carga e descarga
de capacitor (circuitos RC, sendo R a
resistncia dada em Ohms e C a capacitncia
dada em Farads) atravs de um prottipo de
capacemtro construdo utilizando-se do
microcontrolador Arduno UNO.

2.FUNDAMENTAO TERICA

2.1 O Funcionamento do Capacitor
Como a pilha, o capacitor possui dois
terminais. Dentro do capacitor, os terminais
conectam-se a duas placas metlicas
separadas por um dieltrico. O dieltrico pode
ser ar, papel, plstico ou qualquer outro
material que no. conduza eletrecidade e
impea que as placas se toquem.
A capacitncia, medida em Farads, depende
da rea das placas (A) e a distncia entre elas
(d) e da constante dieltrica (k). Em outras
palavras, quanto maior a rea (A) das
armaduras, maior ser a capacitncia e vice
versa. Quanto menor a distncia (d) entre as
armaduras, maior ser a capacitncia e vice
versa. Quanto maior for a constante dieltrica
K do isolante (dieltrico) maior ser a
capacitncia e vice versa. Isso pode ser visto
na equao 1:




Equao 1. Clculo da Capacitncia

onde C a capacitncia medida em Farads;
K a constante dieltrica; E a
permissividade do vcuo 8,84 x 10
-12
F / m; A
a rea das placas em m
2
;

d a distncia
entre as placas em metros. Geralmente, as
placas condutoras de um condensador so
separados por ar ou algum tipo de material de
isolamento, em vez de vcuo do espao livre.
Por exemplo, se o material dieltrico for o ar o
K ser 1,0009. Se o dieltrico for o vcuo
ser de 1. Se o material do dieltrico for, em
outro caso, porcelana, o K ser de 6
1
.










Figura 1. Esquemtico de um Capacitor
2


1
Tabela completa de constantes dieltricas podem ser
encontradas em http:// www. foz. unioeste. br/~lamat/
downmateriais/materiaiscap18.pdf
2
Fonte da Imagem: http : // www. Electronics tutorials
.ws/ capacitor / cap_1.html

C = K.E.A
d
2.2 Circuito RC Simples
Em um circuito RC ideal simplificado (figura 2)
considerando a resistncia interna da fonte
de tenso como nula e desprezando-se a
resistncia dos fios condutores usados no
circuito ao aplicarmos uma tenso atravs
de um resitor (R1), a um capacitor (C), este se
carrega com um valor que depende do
intervalo de tempo em que se desenvolve o
processo.












Figura 2.Circuito RC simples

Estando o capacitor inicialmente
descarregado (Vc = 0 Volts, sendo Vc a
tenso no capacitor), em t = 0 segundos,
fechamos a chave S do circuito. Neste
momento a corrente inicial do circuito(em
Amperes)



Equao 1. Corrente Inicial


a medida que o capacitor se carrega, sua
voltagem Vc aumenta e a diferena de
potencial atravs do resistor Vr aumenta
ocorrendo em consequncia uma diminuio
da corrente no circuito. No entanto, a soma
dessas duas voltagens(Vr e Vc) permanece
constante e igual fora eletromotriz da
fonte(Vt) :


Equao 2.Relao entre as tenses de resistor e
capacitor


depois do tempo de carga, o capacitor fica
completamente carregado, a corrente torna-se
nula e a diferena de potencial no resistor
igual a zero. Dessa forma a ddp final nos
terminais do capacitor igual f.e.m. da
bateria (Vt = Vc).


2.3 Equaes De Carga E Descarga Do
Capacitor
A equao que descreve matematicamente
a carga de um capacitor :
Vc(t) = Vcc.(1 e
(t/RC)
)
Equao 3.Equao de Carga do Capacitor
Sendo Vc(t) a tenso total do capacitor dada
em volts, em funo do tempo dado em
segundos; Vcc a tenso da fonte tambm
dada em volts; e o nmero de Euller
equivalente aproximadamente a 2,7128; t
o tempo dado em segundos; R o valor do
resistor em Ohms e C o valor do capacitor
em Farads.
E a equao que descreve a descarga do
capacitor :

Equao 4. Equao que descreve a
descarga do capacitor
Onde = R . C a constante de tempo;
sendo R o valor do Resistor em Ohms e C o
valor do capacitor em Farads. A constante
() apresentar o tempo de
aproximadamente 63,2% da carga total do
capacitor em segundos.
Por exemplo se t = 0s e substituirmos na
equao 3 da tenso em C resultar zero e
na equao da tenso na resistncia
resultar Vcc.
Teoricamente, de acordo com a equao 3,
a carga total s acontecer aps um tempo
infinito, mas na prtica bastam 5 constantes
de tempo para considerarmos o capacitor
totalmente carregado (Para 5 constantes de
tempo a tenso atingir aproximadamente
99% de Vcc(tenso da fonte), ou seja, 99%
da carga total possvel). Veja o grfico de
carga e descarga na Figura 3. Observa-se
que na constante de tempo(R.C) igual a 1 a
carga do capacitor de aproximadamente
63,2%. Este conhecimento ser utilizado na
produo do software de nosso
capacmetro.
O comportamento da corrente no circuito,
descrito pela equao :

Equao 5. Corrente no circuito

Vcc
Onde I
Max,
em ampres, pela simples
aplicao da lei de Ohm, Vcc/R .












Figura 3. Grfico carga e descarga em funo
da constante de tempo
3
.


2.4 Exemplo De Carga De Capacitor
Vejamos agora um exemplo para confirmar os
clculos. Utilizaremos para tanto o circuito
modelo da figura 4:








Figura 4.Exemplo de Circuito RC


Aps uma constante de tempo RC, o capacitor
carrega com 63,2% da tenso da fonte.( 63,2%
de V ).


= R . C
= 100.10
3
. 100.10
--6
=10000.10
--3

= 10 segundos


Assim, aps 10 segundos o capacitor ter uma
carga de 63,2% de V) e aps 5.R.C, o
capacitor est praticamente carregado com a
tenso da fonte (99,3% de V).

t = 5.R.C = 5. (100.10
3
. 100.10
--6
)
t = 50000.10
--3
segundos
t = 50 segundos


3
Fonte da Imagem: Instituto Federal de educao IN:
http://dc372.4shared.com/doc/PccZGHTo/preview.html
Sendo t o tempo total de carga total ou
aproximadamente 99% da tenso total
fornecida, em nosso exemplo V=12volts.
Nota-se que A funo do resistor R controlar
o tempo de carga do capacitor. O tempo de
carga depende diretamente do produto R.C.
Observemos a tabela da figura 4 que nos
permite acompanhar a evoluo da carga no
capacitor de nosso exemplo:




















Figura 5. Tabela 1. Relao tempo e carga do
capacitor.

Para calcularmos a descarga do capacitor em
nosso circuito modelo utilizaremos a equao
4. Observemos os resultados na tabela da
figura 6:




















Figura 6. Tabela 2.Relao tempo e descarga
do capacitor





Observemos o desenvolvimento dos grficos
de carga e descarga do capacitor de nosso
circuito exemplo atravs da figura 7:


























Figura 7. Grfico de carga e descarga
4



3. O CAPACMETRO COM ARDUINO
O prottipo mostrar o valor do capacitor a ser
medido em um LCD 16x2. Para tanto
utilizamos duas protoboards para que os
circuitos possam ser mais facilmente
compreendidos.
Um resistor carrega 63,2% de um capacitor em
t segundos, sendo

= R . C
: chamada de constante de tempo e dada
em segundos;
R: resistncia eltrica, dada em ohms
C: capacitncia, dada em farads
Isto , a tenso eltrica no capacitor
aps segundos de carga igual 63,2% da
tenso eltrica de carga. Na prtica, pode-se
considerar que o capacitor carrega-se
totalmente aps 5 constantes de tempo.

4
Grficos produzidos com Microsoft Excel 2007 so
meramente ilustrativos no sendo confiveis em preciso
matemtica.
A Figura 8 mostra o diagrama esquemtico
simplificado do capacmetro em conexo com
o arduno.





Figura 8. O Circuito RC com arduino

O grfico da figura 9 permite exemplificar a
carga do capacitor em funo do tempo.











Figura 9.Curva de carga do capacitor
5
.


3.1 O Ambiente De Desenvolvimento Do
Arduino
O cdigo deve ser digitado e carregado no
Arduino atravs de sua interface prpria. O
Software de desenvolvimento Arduino
bastante fcil e intuitivo de se utilizar, no
havendo qualquer nvel de dificuldade. O
primeiro passo consiste em efetuar o download
do respectivo software de desenvolvimento,
atravs do site oficial Arduino
(www.arduino.cc).







Figura 9. Imagem da parte superior do site oficial
do Arduno.


Aps o download e a instalao do software
segue-se os passos:

5
Fonte da Imagem:http://playground.arduino.cc



10K
1. Montagem do prottipo no protoboard
sem conexo de energia para que no
se danifique o arduno ou os
componentes;
2. Digita-se o cdigo em seu ambiente
prprio (figura 11);
3. Compila-se e o cdigo (figura 12).
Neste momento erros de sintaxe e
lgicos sero apontados pelo
compilador e devem ser corrigidos.
4. Faz-se o upload do cdigo compilado
(figura 13) sem erros no
microcontrolador para ser executado.













Figura 11. O ambiente de desenvolvimento do
Arduno
6
.






Figura 12. o Boto compilar do ambiente de
desenvolvimento do Arduino.







Figura 13. o Boto Upload do ambiente de
desenvolvimento do Arduino









Figura 14. Esquema de conexo do ambiente de
desenvolvimento com a placa arduno.


6
Arduino verso 1.0.5-r2 (www.arduino.cc)








Figura 15. Esquema da fase de desenvolvimento de
uma aplicao em Arduino.



3.2 O CDIGO NO ARDUINO
O cdigo arduno faz uma adaptao da
equao de tempo ( = RC) para C = / R.

A chave para entendimento do cdigo est no
lao While que efetua a leitura da porta
analgica do controlador at que este tenha
atingido 63,2% da carga

while(analogRead(analogPin) < 648) {}

A leitura da porta analgica leva a que um
valor compreendido entre 0 e 5 V, como a
porta possui um conversor A/D este valor de
tenso apresentar-se- como um inteiro
compreendido entre os valores (int) 0 e 1023.

O valor verificado no lao while (648)
corresponde exatamente a 63,2% de 1023.

Coleta-se o tempo discorrido at esse ponto
(varivel elapsedTime) e efetua-se o clculo do
valor do Capacitor

microFarads = ((float)elapsedTime /
resistorValue * 1000).

A multiplicao por 1000 para que haja a
converso do tempo de milisegundos para
segundos.


A melhor compreenso deste segmento do
cdigo pode ser obtida atravs da observao
do fluxograma da figura 16:




































































Figura 16. O fluxograma do trecho de cdigo que
calcula o valor do capacitor.



Abaixo o cdigo completo a ser carregado no
microcontrolador Arduino:

/* *************************************************** *
CAPACMETRO EDUCACIONAL - FADEP
1 SEMESTRE DE ENG.ELTRICA - TURMA A


Um capacitor carregar-se-, via um resistor, em uma
* constante de tempo, definida como TC segundos onde
* TC = R * C
*
* TC = constante de tempo expressa em segundos
* R = resistncia em ohms
* C = capacitncia em farads (1 microfarad (ufd) =
.0000001 farad = 10^-6 farads )
*
* A tenso no capacitor em uma constante de tempo
* definida como 63.2% da tenso de carga.
*
* ***************Montagem do hardware********************
* O capacitor a testar fica entre o ponto comum e o terra
* (no se esquea: ligue o + do capacitor ao ponto comum)
* O resistor a testar fica entre o pino de carga
* (chargePin) e o ponto comum
* Um resistor de 220 ohms entre o pino de descarga
* (dischargePin) e o ponto comum
* Um fio entre o ponto comum e o pino analgico
* (analogPin, entrada A/D)
*/

#include <LiquidCrystal.h> //Inclui a biblioteca do LCD

LiquidCrystal lcd(9, 8, 5, 4, 3, 2); //Configura os pinos do
Arduino para se comunicar com o LCD

#define analogPin 0 // pino analgico a medir tenso
no capacitor
#define chargePin 13 // pino a carregar o capacitor
#define dischargePin 11 // pino a descarregar o capacitor

// valor do resistor base, o o "F" informa o compilador
// que trata-se de um ponto flutuante
#define resistorValue 10000.0F

unsigned long startTime;
unsigned long elapsedTime;
float microFarads; // varivel ponto flutuante para
efetuar os clculos
float nanoFarads;

//Inicia uma varivel inteira (temp), para escrever no LCD a
//contagem do tempo
int temp;

void setup()
{

//Inicia o LCD com dimenses 16x2(Colunas x Linhas)
lcd.begin(16, 2);

//Posiciona o cursor na primeira coluna(0) e na primeira
// linha(0) do LCD
Escreve no Pino
de Carga
(chargePin)
Inicia o contador
de tempo
(startTime)
L a porta Analgica
(analogPin)
AnalogPin < 648
S
N
elapsedTime = Tempo final Tempo Inicial
1*T = RC => C = (1*T / R) * 1000

Capacitor = (elapsedTime / ResitorBase)*1000
Mostra
Valor do
Capacitor
lcd.setCursor(0, 0);

lcd.print("FADEP-CapEdu 1.0"); //Escreve no LCD !"

//Posiciona o cursor na primeira coluna(0) e na segunda
//linha(1) do LCD
lcd.setCursor(0, 1);

// ajuste chargePin como sada
pinMode(chargePin, OUTPUT);
digitalWrite(chargePin, LOW);

// inicializa a comunicao serial para fins de depurao
//de erros
Serial.begin(9600);
}

void loop()
{

lcd.setCursor(0, 1);

// setar HIGH em chargePin
digitalWrite(chargePin, HIGH);
startTime = millis();

// 647 = 63.2% de 1023, que corresponde ao fim de
// escala
while(analogRead(analogPin) < 648)
{
//Continua lendo a porta Analgica at que atinja os
// 63,2% de carga
}
elapsedTime= millis() - startTime;

// converta milissegundos a segundos ( 10^-3 ) e
//farads a microfarads ( 10^6 ), lquidos 10^3 (1000)
microFarads = ((float)elapsedTime / resistorValue) *
1000;
Serial.print(elapsedTime); // imprima sada serial
Serial.println(" mS "); // imprima unidade

if ((long)microFarads > 1)
{
Serial.print((long)microFarads); // imprima na serial
Serial.println(" microFarads"); // imprima unidade

lcd.setCursor(0, 1);
lcd.print(microFarads);
lcd.setCursor(8, 1);
lcd.print("microF");
}
else
{
// se o valor for menor que um microfarad, converta
// a nanofarads (10^-9 farad).
// trata-se de um artifcio para que Serial.print imprima
//pontos flutuantes

// multiplique por 1000 para converter a nanofarads
//(10^-9 farads)
nanoFarads = (microFarads * 1000.0);

Serial.print((long)nanoFarads); // imprima sada
Serial.println(" nanoFarads"); // imprima unidade

lcd.setCursor(0, 1);
lcd.print((long)nanoFarads);
lcd.setCursor(8, 1);
lcd.print("nanoF");
}

/* descarregue capacitor */
digitalWrite(chargePin, LOW); // LOW em chargePin
pinMode(dischargePin, OUTPUT); // ajuste como sada
digitalWrite(dischargePin, LOW); // LOW

// espere at esvaziar capacitor
while(analogRead(analogPin) > 0)
{
}

// ajuste de novo o pino para entrada
pinMode(dischargePin, INPUT);
}

3.2.1 Entendendo O Cdigo Arduino
Em nosso cdigo do capacmetro utilizaremos
algumas das muitas funes do escopo do
Arduno. Abaixo segue uma explicao
sinttica bem como exemplo de sua utilizao
para que o entendimento do cdigo se faa de
forma absoluta:

3.2.1.1 Serial.begin(int baud rate)
Descrio: Instruo necessria para iniciar a
comunicao srie, permitindo definir qual a
baud rate da comunicao. Os valores de
velocidade de comunicao mais comuns para
comunicao com um computador so: 300,
1200, 2400, 4800, 9600, 14400, 19200, 28800,
38400, 57600 e 115200 (No entanto podem
definir-se outros valores).

Sintaxe: Serial.begin( int baud rate);

Exemplo:

(1) int leitura_serie=0; //Declarao de uma
varivel do tipo integer com o nome
leitura_serie, inicializada com o valor 0
(2) void setup() {
(3) Serial.begin(9600); // Permite a inicializao
da comunicao Srie
(4) }
(5) void loop(){
(6) if(Serial.available()>0) // Condio if que
verifica se esto sendo recebidos dados por Srie
(7) leitura_serie=Serial.read(); // Caso esteja-se
recebendo dados por srie, o seu valor guardado
na varivel integer leitura_serie
(8) }
(9) }

3.2.1.2 Serial.read()
Descrio: Permite a leitura dos dados
recebidos por srie. Esta funo retorna o valor
-1 se no houver dados disponveis.

Sintaxe: Valor recebido (int) = Serial.read();

Exemplo:

(1) int leitura_serie=0; ; //Declarao de uma
varivel do tipo integer com o nome
leitura_serie, inicializada com o valor 0
(2) void setup() {
(3) Serial.begin(9600); // Permite a inicializao
da comunicao Srie
(4) }
(5) void loop(){
(6) if(Serial.available()>0) ) // Condio if que
verifica se esto a ser recebidos dados por Srie
(7) leitura_serie=Serial.read(); // Caso se estejam
a receber dados por srie, o seu valor guardado
na varivel integer leitura_serie
(8) }
(9) }

3.2.1.3 pinMode()
Descrio: Ao recorrer a esta instruo,
possvel configurar o modo de comportamento
de um determinado pino. Possibilitando assim
defini-lo como input ou output, esta definio
normalmente efectuada recorrendo funo
void setup().

Sintaxe: pinMode(Nmero do pino, Modo);

O Modo acima descrito pode ser definido da
seguinte forma:
INPUT
OUTPUT

Exemplo:
(1) int botao=3,val; // Declarao de uma varivel
do tipo integer, com o nome botao inicializada
com o valor 3 e de uma varivel do mesmo tipo
com o nome val no inicializada com nenhum
valor
(2) void setup() {
(3) Serial.begin(9600); // Permite a inicializao
da comunicao Srie
(4) pinMode(botao,INPUT); // Permite definir o
pino 3 como INPUT
(5) pinMode(13,OUTPUT); // Permite definir o
pino 13 como OUTPUT
(6) }
(7) void loop(){
(8) val=analogRead(botao); // Permite a leitura
analgica do valor do pino 3 atribuindo o seu
valor varivel val
(9) if(val>=500) // Ciclo if que testa a condio
val>=500 (maior ou igual a 500)
(10) digitalWrite(13,HIGH); // Se a condio for
verificada, atribudo ao pino digital 13 a
condio HIGH (5 V)
(11) }
(12) }

3.2.1.4 digitalWrite()
Descrio: Possibilita, nos pinos configurados
como output atravs da instruo pinMode,
estabelecer a sada dos respectivos pinos com
o valor lgico 1 (HIGH 5 V) ou com o valor
lgico 0 (LOW 0V)

Sintaxe: digitalWrite(Nmero do pino, Modo);

O Modo acima descrito, pode ser definido
como:
HIGH
LOW

Exemplo:
(1) int botao=3,val; // Declarao de uma varivel
do tipo integer, com o nome botao inicializada
com o valor 3 e de uma varivel do mesmo tipo
com o nome val no inicializada com nenhum
valor
(2) void setup() {
(3) Serial.begin(9600); // Permite a inicializao
da comunicao Srie
(4) pinMode(botao,INPUT); // Permite definir o
pino 3 como INPUT
(5) pinMode(13,OUTPUT); // Permite definir o
pino 13 como OUTPUT
(6) }
(7) void loop(){
(8) val=analogRead(botao); // Permite a leitura
analgica do valor do pino 3 atribuindo o seu
valor varivel val
(9) if(val>=500) // Ciclo if que testa a condio
val>=500 (maior ou igual a 500)
(10) digitalWrite(13,HIGH); // Se a condio for
verificada, atribudo ao pino digital 13 a
condio HIGH (5 V)
(11) }
(12) }


3.2.1.5 digitalRead()
Descrio: Possibilita a leitura de uma entrada
digital especfica, retornando um valor no
formato integer (int). Se obtivermos um valor
de retorno de 1, estamos perante uma leitura
do tipo HIGH (valor lgico 1). Se tal no se
verificar, e tivermos um valor de retorno igual a
0, estamos perante uma leitura do tipo
LOW (valor lgico 0).

Sintaxe: Varivel do tipo integer =
digitalRead(Nmero do pino);

Exemplo:

(1) int botao=3,val; // Declarao de uma varivel
do tipo integer, com o nome botao inicializada
com o valor 3 e de uma varivel do mesmo tipo
com o nome val no inicializada com nenhum
valor
(2) void setup() {
(3) Serial.begin(9600); // Permite a inicializao
da comunicao Srie
(4) pinMode(botao,INPUT); // Permite definir o
pino 3 como INPUT
(5) pinMode(13,OUTPUT); // Permite definir o
pino 13 como OUTPUT
(6) }
(7) void loop(){
(8) val=digitalRead(botao); // Permite a leitura do
valor do pino 3 digital atribuindo o seu valor
varivel val
(9) if(val==1) // Ciclo if que testa a condio
val>=500 (maior ou igual a 500)
(10) digitalWrite(13,HIGH); // Se a condio for
verificada, atribudo ao pino digital 13 a
condio HIGH (5 V)
(11) }
(12) else{ // Caso a condio do ciclo if no se
verifique
(13) digitalWrite(13,LOW); // Se a condio no
for verificada, atribudo ao pino digital 13 a
condio LOW (0 V)
(14) }
(15) }

2.2.1.6 analogRead()
Descrio: Possibilita a leitura do valor
analgico do pino especificado, com um
conversor A/D possuindo uma resoluo de 10
bits. O que leva a que um valor compreendido
entre 0 e 5 V, esteja compreendido entre os
valores inteiros (int) 0 e 1023.

Sintaxe: Varivel do tipo integer =
analogRead(Nmero do pino);

Exemplo:

(1) int botao=3,val; // Declarao de uma varivel
do tipo integer, com o nome botao inicializada
com o valor 3 e de uma varivel do mesmo tipo
com o nome val no inicializada com nenhum
valor
(2) void setup() {
(3) Serial.begin(9600); // Permite a inicializao
da comunicao Srie
(4) pinMode(botao,INPUT); // Permite definir o
pino 3 como INPUT
(5) pinMode(13,OUTPUT); // Permite definir o
pino 13 como OUTPUT
(6) }
(7) void loop(){
(8) val=analogRead(botao); // Permite a leitura
analgica do valor do pino 3 atribuindo o seu
valor varivel val
(9) if(val>=500) // Ciclo if que testa a condio
val>=500 (maior ou igual a 500)
(10) digitalWrite(13,HIGH); // Se a condio for
verificada, atribudo ao pino digital 13 a
condio HIGH (5 V)
(11) }
(12) }

3.2.1.7 analogWrite()
Descrio: Possibilita a utilizao dos pinos
PWM (Pulse Width Modulation) da placa
Arduino. O sinal PWM mantm-se at ser
modificado atravs de uma outra instruo que
afete esse pino, a frequncia do sinal PWM
criado de 490 Hz

Sintaxe: analogWrite(Nmero do pino, valor);

O valor referido anteriormente varia entre 0
(sempre desligado), at ao valor 255 (que
representa um sinal de 5 V constante).

Exemplo:

(1) int botao=3,val; // Declarao de uma varivel
do tipo integer, com o nome botao inicializada
com o valor 3 e de uma varivel do mesmo tipo
com o nome val no inicializada com nenhum
valor
(2) void setup() {
(3) Serial.begin(9600); // Permite a inicializao
da comunicao Srie
(4) pinMode(botao,INPUT); // Permite definir o
pino 3 como INPUT
(5) pinMode(13,OUTPUT); // Permite definir o
pino 13 como OUTPUT
(6) }
(7) void loop(){
(8) val=analogRead(botao); // Permite a leitura
analgica do valor do pino 3 atribuindo o seu
valor varivel val
(9) if(val>=500) // Ciclo if que testa a condio
val>=500 (maior ou igual a 500)
(10) analogWrite(9,255); // Instruo com a
mesma funo que digitalWrite(9,HIGH)
(11) }
(12) else{
(13) analogWrite(9,0); // Instruo com a mesma
funo que digitalWrite(9,LOW)
(14) }
(15) }

3.2.1.8 millis()
Descrio: Possibilita o retorno da quantidade
de tempo, em milisegundos na forma de uma
varivel do tipo unsigned long. O valor
retornado representa o tempo que, passou
desde que o programa atual comeou a ser
executado.

Sintaxe: unsigned long tempo = millis();

Exemplo:
(1) unsigned long tempo; // Declarada uma
varivel do tipo unsigned long com o nome
tempo
(2) void setup() {
(3) (..)
(4) }
(5) void loop(){
(6) tempo = millis(); // Atribui varivel tempo
o valor em milisegundos desde que o sketch
actual comeou a ser executado
(7) }

3.2.1.9 delay (milisegundos)
Descrio: Possibilita efectuar uma pausa ao
programa em execuo, por uma quantidade
de milisegundos especificada. til para manter
um estado durante uma certa quantidade de
tempo.

Sintaxe: delay(tempo que deseja efectuar a pausa
ms);

Exemplo:
(1) int led_pin=13; // Declarao de uma varivel
do tipo integer com o nome
led_pin, sendo-lhe atribuda o valor 13
(2) void setup() {
(4) pinMode(led_pin,OUTPUT); // Permite
definir o pino 13 como OUTPUT
(5) Serial.begin(9600); // Permite a inicializao
da comunicao Srie
(6) }
(7) void loop(){
(8) digitalWrite(led_pin,HIGH); // atribudo ao
pino digital 13 a condio HIGH
(5 V)
(9) delay(200); // efectuado um delay de 200
ms, antes de efectuar a prxima instruo
(10) digitalWrite(led_pin,LOW); // atribudo ao
pino digital 13 a condio LOW
(0 V)
(11) delay(600); // efectuado um delay de 600
ms, antes de efectuar a prxima instruo, neste
caso a funo void loop() recomea
(12) }

3.3 O Hardware Do Capacmetro
A montagem do prottipo foi efetuada em duas
protoboards por questes didticas. Assim, os
circuitos do LCD e do Capacmetro ficam mais
claros.

3.3.1 Lista De Componentes Necessrios:
Arduino Uno (Rev3)
LCD screen tipo Caracter; pinos 16x2
R1 Potencimetro - 16mm; Linear; 10k
R2 10k Resistor
R3 220 Resistor


3.3.2 A Placa Arduino
O Arduino Uno uma placa microcontroladora
baseada no chip ATmega328. Ele tem 14 pinos
digitais de input/output, 6 entradas analgicas,
um conector USB para alimentao via PC e
carga de cdigos, conector de carga (jack
power) para alimentao via bateria e um
boto de reset.
















Figura 17. A placa Arduino UNO
7


7
Fonte da Imagem: http://www. Techtudo . com . br /
noticias / noticia / 2013/10/ o-que-e-um-arduino-e-o-que-
pode-ser-feito-com-ele.html



Figura 18. As conexes do Arduino
8


3.3.3 LCD
Ateno especial deve ser dada as conexes
entre o Arduno e o LCD (figuras 18, 19 e 20):






















Figura 19. DataSheet do LCD
9
.

Pinagem Arduno Pinagem LCD
2 14
3 13
4 12
5 11
8 6
9 4

8
Fonte da Imagem : http:// pt.wikipedia. org/wiki/Arduino#
mediaviewer / Ficheiro: Arduino - uno- perspective-
transparent. png
9
Fonte: https: // www.sparkfun.com / datasheets / LCD /
ADM1602K-NSW-FBS-3.3v.pdf

5V 15
GND 16
GND 1
5V 2
Figura 20. Tabela 3. As conexes do LCD












Figura 21. Pinagem do LCD
10


3.3.4 Potencimetro
O potencimetro em nosso prottipo utilizado
para realizar o ajuste de contraste do LCD
atravs da conexo do terminal base do
potencimetro (figura 21) ao pino 3 (V0) do
LCD (figura 21).













Figura 22. Esquemtico do Potencimetro
11
.














Figura 23.Conexes do Potencimetro
12
.

10
Fonte da imagem : http : //www. engineersgarage.com /
electronic-components/16x2-lcd-module-datasheet
11
Imagem adaptada do original em http: / /www . dreaminc.
com.br / sala_de_aula/7a-resistencia-eletrica/




Arduino - 5V
LCD Pino 3
Arduino - GND

3.3.5 Alimentao
O placa microcontrolada Arduno permite a
alimentao via bateria, mas em nosso caso
usaremos a conexo via USB com o PC para
que possamos demonstrar a compilao e a
carga do cdigo.


3.3.6 A Montagem em Protoboards
O layout completo das conexes pode ser
observado na figura abaixo:
































Figura 24. O hardware completo do prottipo
13
.











12
Imagem adaptada do original em http : // adriandavidm.
blogspot.com.br / 2010_08_01_archive.html
13
Prototipagem feita no software Fritzing Verso Beta 0.8.7


























Figura 25. O esquemtico do prottipo
14
.
























Figura 26. Reproduo fotogrfica do prottipo

3.4 Depurao
Atravs do monitor do Arduno podemos obter
o tempo em milisegundos e a capacitncia

14
Esquemtico feito no software Fritzing Verso Beta 0.8.7

Capacitor a
ser medido


calculada, assim podemos ilustrar alguns
valores como os da tabela da figura 28.

















Figura 27. Os valores calculados no Capacitor de
1 F ou 1000 nF

Esses valores so mostrados no Serial Monitor
graas ao trecho do cdigo fonte que imprime
na sada serial:

Serial.print(elapsedTime);
Serial.print((long)microFarads);

Em caso de valores inferiores a microFarads:

Serial.print(elapsedTime);
Serial.print((long)nanoFarads);

No caso da figura 27, por exemplo, temos que
11 milisegundos se passaram at a carga de
63,2% do capacitor fosse atingida, ou seja, 11
milisegundos a nossa constante de tempo.
Assim , lembrando da equao:

= R . C ou C = R
Calculamos o valor do capacitor. Lembrando
que o tempo deve ser dados em segundos, por
isso a multiplicao por 1000, uma vez que o
valor fornecido pelo arduino nos dado em
milisegundos:

C = (elapsedTime / resistorValue) * 1000;

E encontramos C = 1000 nF.

Observemos agora a tabela 4 da figura 25 que
contm outros valores obtidos
experimentalmente em nosso prottipo atravs
da simples substituio do capacitor a ser
medido e que podem ainda ser comparados
atravs da aferio com Capacmetro
comercial (figura 29):

Valor
Nominal
tempo (ms)
Valor Medido
(na unidade nominal )
Leituras 1 2 3 1 2 3
1000 nF 11 10 10 1100 1000 1000
33 F 355 356 354 35.4 35.5 35.4
100 F 1065 1064 1063 106.5 106.5 106.3
220 F 2111 2109 2108 211 210.9 210.7
470 F 5036 5038 5026 503.6 503.8 502.6
1000 F 10037 10035 10007 1003 1003 1000
Figura 28. Tabela 4. Amostragem de valores
obtidos experimentalmente.


Valor Nominal Maior valor
Medido
no Prottipo
Aferio
1000 nF 1100 nF 1103 nF
33 F 35.4 F 35 F
100 F 106.5 F 138.3 F
220 F 211 F 276.5 F
470 F 503.8 F 450 F
1000 F 1003 F 1287 F
Figura 29. Tabela 5. Aferies com Capacmetro
comercial
15
.










Figura 30. A tela do Osciloscpio.

A figura 30 nos permite visualizar o trabalho do
Arduino de carga e descarga do capacitor que
est sendo medido. Como a tenso mxima
de 5V e nosso Capacmetro carrega o
capacitor em questo at 63,2% de sua carga
mxima (5V) obtemos aproximadamente 3,36V
para uma constante de tempo (vide figura 30)
para em seguida ser descarregado at prximo
de 0V e ento o processo se repete
indefinidamente.

4. CONSIDERAES FINAIS
A prototipagem do Capacmetro em conexo
com o PC utilizando-se da IDE do Arduino nos
permitiu no s comprovar os clculos de
constante de tempo atravs da carga e
descarga de capacitores, mas tambm nos

15
As aferies foram feitas com o Capacmetro HIKARI
modelo HX-110.


propiciou visualizar o processo de contagem
de tempo e sua relao com a carga do
capacitor atravs do Serial Monitor.
Os testes tambm nos sugeriram melhorias
futuras no projeto como a colocao de uma
bateria de alimentao, um interruptor de
energia e a adequao do ponto no circuito
onde o capacitor a ser medido ser acoplado
atravs de conectores ou pontas de prova.
O software tambm poder ser aprimorado
para evitar ou diminuir as diferenas de
arredondamento no clculo da constante de
tempo. Diferenas estas que levam o valor
encontrado para o capacitor a oscilar em uma
margem que chegou a 5% em alguns testes o
que no compromete a medio uma vez que
equipamentos profissionais e mesmo a
nomenclatura dos capacitores medidos
tambm apresentam margens de erro que se
mostraram, em algumas aferies (vide tabela
5, figura 29 e Tabela 6, Figura 31) ser
superiores.

Elemento Tolerncia
Capacmetro
10
3% a 5%
Ohmmetro
10
0.5% a 1.5%
Resitores 5%
Capacitores 20%
Figura 31. Tabela 6. Margens de erro dos
elementos envolvidos nas aferies.


REFERNCIAS BIBLIOGRFICAS
ARDUINIANA. (2009). "Arduino software
jewellry and wisdom." http://arduiniana.org/.
Acessado em 8 maio de 2014.
ARDUINO.http://www.arduino.cc. Acessado em
8 de maio de 2014.
GUSSOW, Milton. Eletricidade Bsica.
Ed.Pearson Makron Books, So Paulo.
1997.
LABORATRIO DE GARAGEM. http : //
labdegaragem . com / profiles/blogs/tutorial-
lcd-com-arduino. Acessado em 1 de abril
de 2014.
MCROBERTS, Michael. Arduino Bsico.
Ed.Novatec, So Paulo-SP. 2011.
RIZZONI, Giogio. Fundamentos de Engenharia
Eltrica. Bookman Editora, Porto
Alegre,RS, 2013.
SADIKU, Matthew; ALEXANDER, Charles.
Fundamentos de Circuitos Eltricos. AMGH
Editora. Porto Alegre, RS. 2013.
SPARKFUN. https: // www.sparkfun.com /
datasheets / LCD / ADM1602K-NSW-FBS-
3.3v.pdf. Acessado em 8 maio de 2014.
TORRES, Gabriel. Eletrnica. Novaterra
Editora, Rio de Janeiro, RJ. 2012.