Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Testes com Modulo MAX471
- // Medicao corrente e Tensao com bateria 12V
- // Gustavo Murta 26/jan/2017
- // Capacitor no Pino REF Arduino = 10uF IMPORTANTE
- // 5,00V / 1024 = 0,0048828125 Tensão do bit menos significativo
- const float voltsporUnidadeV = 0.004893 ; // Valor aferido para calculo da Tensao
- const float voltsporUnidadeI = 0.00502 ; // Valor aferido para calculo da Corrente
- const int pinVT = A0; // Pino de Medicao de Tensao VT
- const int pinAT = A1; // Pino de Medicao de Corrente AT
- const int bufferTam = 100; // Tamanho do Buffer = 100
- int buffer[bufferTam]; // Definicao do Buffer
- int index; // Definicao do Indice
- int amostra;
- const float alpha = 0.99; // Constante de calculo do Filtro Passa Baixa
- int Iint = 0; // Tensao filtrada no pino AT
- int Vint = 0; // Tensao filtrada no pino VT
- float Tensao = 0; // calculo da Tensao
- float Corrente = 0; // calculo da corrente
- void setup()
- {
- Serial.begin(9600); // Console 9600 Bps
- }
- void LeituraV()
- {
- for (int v = 0; v < bufferTam; v++) // Carregando o Buffer V com as leituras
- {
- buffer[v] = analogRead(pinVT); // Leitura no pino VT - tensao
- delay(2); // Atraso para leitura analogica
- }
- }
- void LeituraI()
- {
- for (int i = 0; i < bufferTam; i++) // Carregando o Buffer I com as leituras
- {
- buffer[i] = analogRead(pinAT); // Leitura no pino AT - corrente
- delay(2); // Atraso para leitura analogica
- }
- }
- void Filtro()
- {
- LeituraV();
- int novaleituraV;
- static float Vfiltro = 0.0;
- for (int v = 0; v < bufferTam; v++)
- {
- novaleituraV = buffer[v];
- Vfiltro = (alpha * Vfiltro) + ((1 - alpha) * novaleituraV); // Filtro Passa Baixa
- }
- Vint = Vfiltro; // Converte valor float em inteiro
- Tensao = Vint * voltsporUnidadeV * 5 ; // Calculo da Tensao no Modulo MAX471 VOUT = VT x 5
- LeituraI();
- int novaleitura;
- static float Ifiltro = 0.0;
- for (int i = 0; i < bufferTam; i++)
- {
- novaleitura = buffer[i];
- Ifiltro = (alpha * Ifiltro) + ((1 - alpha) * novaleitura); // Filtro Passa Baixa
- }
- Iint = Ifiltro; // Converte valor float em inteiro
- Corrente = Iint * voltsporUnidadeI ; // calculo da Corrente no Modulo MAX471
- Serial.print(" Tensao = " ); // Display do valor da Tensao
- Serial.print(Vint);
- Serial.print(" => ");
- Serial.print(Tensao, 3);
- Serial.print(" V ");
- Serial.print(" Corrente = " ); // Display do valor da Corrente
- Serial.print(Iint);
- Serial.print(" => ");
- Serial.print(Corrente, 3);
- Serial.println(" A ");
- }
- void loop()
- {
- Filtro();
- delay(200); // Atraso para leitura na console
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement