[AJUDA] Circuito para medir Tempo de carga de um Capacitor

Boa noite povo, fiz o programa contido neste artigo para medir o tempo de carga de um capacitor:

http://www.sbfisica.org.br/rbef/pdf/334503.pdf

Mas gostaria de otimizar ele fazendo que, ao apertar o botao para descarregar o capacitor ele inicie a contagem a partir do zero.

O problema não é com o código, e sim, com a ligação da protoboard para ler o botão.

Tentei de várias formas, mas quando uma delas desconectou o arduino da porta serial eu fiquei preocupado e resolvi recorrer a vocês.

Abraço!

OBS: Segue o sistema que tenho montado:

Exibições: 913

Responder esta

Respostas a este tópico

Código:

#define pinocapacitor A0 //pino que esta ligado o capacitor (porta analogica 0)

int valorLido = 0; //valor lido na entrada analogica
float tensaocapacitor = 0; //tensaocapacitor valor convertido para volts
float time;

void setup() {
Serial.begin(9600); //Inicializa comunicac~ao Serial numa taxa de 9600 bps
}
void loop() {
while(millis()*1e-3<60){
time = millis()*1e-3; // base de tempo para a coleta
valorLido = analogRead(pinocapacitor); // leitura da porta analiogica em que o capacitor esta conectado
tensaocapacitor = (valorLido * 0.0048876); // 5V / 1023 = 0.0048876 (precis~ao do A/D)
Serial.print(time, 5); // imprime o tempo em linha
Serial.print("\t"); // imprime o tempo em tabela
Serial.println(tensaocapacitor, 5);//imprime o valor da tensão do capacitor em linha
delay(250); //espera 250 milisegundos para fazer nova leitura
}
}

Vai ser difícil conseguir fazer alguma coisa assim, esse evento é muito rápido  esqueça operação com ponto flutuante, crie uma especie de tabela. Pra enviar para o PC em tempo real, use interrupção de uart, o tempo de processamento é muito preciso nesse caso.

O arduino é mutio lerdo com pontos flutuantes?
Posso usar inteiros também, estou plotando no excel as coisas mesmo.

Mas eu queria um circuito para usar o botao de descarregar na forma "HIGH" e "LOW" por uma porta digital. Tentei várias ligações e não fui bem sucedido, mas acredito que seja simples e eu que estou fazendo confusão. Entendeu?
Novo Código:

#define pinocapacitor A0 //pino que esta ligado o capacitor (porta analogica 0)

#define bitao 8

int valorLido = 0; //valor lido na entrada analogica
float tensaocapacitor = 0; //tensaocapacitor valor convertido para volts
float time;
void setup() {
Serial.begin(9600); //Inicializa comunicac~ao Serial numa taxa de 9600 bps

pinMode(botao, OUTPUT);

}
void loop() {

while( digitalRead(botao) == LOW) {

while(millis()*1e-3<60){
time = millis()*1e-3; // base de tempo para a coleta
valorLido = analogRead(pinocapacitor); // leitura da porta analiogica em que o capacitor esta conectado
tensaocapacitor = (valorLido * 0.0048876); // 5V / 1023 = 0.0048876 (precis~ao do A/D)
Serial.print(time, 5); // imprime o tempo em linha
Serial.print("\t"); // imprime o tempo em tabela
Serial.println(tensaocapacitor, 5);//imprime o valor da tensão do capacitor em linha
delay(250); //espera 250 milisegundos para fazer nova leitura
}

}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço