Advertisement
jgustavoam

MAX471 TESTES COM ARDUINO

Jan 28th, 2017
728
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.96 KB | None | 0 0
  1.  
  2. // Testes com Modulo MAX471
  3. // Medicao corrente e Tensao com bateria  12V
  4. // Gustavo Murta 26/jan/2017
  5. // Capacitor no Pino REF Arduino = 10uF IMPORTANTE
  6. // 5,00V / 1024 = 0,0048828125  Tensão do bit menos significativo
  7.  
  8. const float voltsporUnidadeV = 0.004893 ;      // Valor aferido para calculo da Tensao
  9. const float voltsporUnidadeI = 0.00502 ;       // Valor aferido para calculo da Corrente
  10. const int pinVT = A0;                          // Pino de Medicao de Tensao VT
  11. const int pinAT = A1;                          // Pino de Medicao de Corrente AT
  12.  
  13. const int bufferTam = 100;                    // Tamanho do Buffer = 100
  14. int buffer[bufferTam];                        // Definicao do Buffer
  15. int index;                                    // Definicao do Indice
  16. int amostra;
  17. const float alpha = 0.99;                     // Constante de calculo do Filtro Passa Baixa
  18.  
  19. int Iint = 0;           // Tensao filtrada no pino AT
  20. int Vint = 0;           // Tensao filtrada no pino VT
  21. float Tensao = 0;       // calculo da Tensao
  22. float Corrente = 0;     // calculo da corrente
  23.  
  24. void setup()
  25. {
  26.   Serial.begin(9600);   // Console 9600 Bps
  27. }
  28.  
  29. void LeituraV()
  30. {
  31.   for (int v = 0; v < bufferTam; v++)   // Carregando o Buffer V com as leituras
  32.   {
  33.     buffer[v] = analogRead(pinVT);      // Leitura no pino VT - tensao
  34.     delay(2);                           // Atraso para leitura analogica
  35.   }
  36. }
  37.  
  38. void LeituraI()
  39. {
  40.  
  41.   for (int i = 0; i < bufferTam; i++)   // Carregando o Buffer I com as leituras
  42.   {
  43.     buffer[i] = analogRead(pinAT);      // Leitura no pino AT - corrente
  44.     delay(2);                           // Atraso para leitura analogica
  45.   }
  46.  
  47. }
  48.  
  49. void Filtro()
  50. {
  51.   LeituraV();
  52.   int novaleituraV;
  53.   static float Vfiltro = 0.0;
  54.   for (int v = 0; v < bufferTam; v++)
  55.   {
  56.     novaleituraV = buffer[v];
  57.     Vfiltro = (alpha * Vfiltro) + ((1 - alpha) * novaleituraV);   // Filtro Passa Baixa
  58.   }
  59.  
  60.   Vint = Vfiltro;                                  // Converte valor float em inteiro
  61.   Tensao   =  Vint * voltsporUnidadeV * 5 ;        // Calculo da Tensao no Modulo MAX471  VOUT = VT x 5
  62.  
  63.   LeituraI();
  64.   int novaleitura;
  65.   static float Ifiltro = 0.0;
  66.   for (int i = 0; i < bufferTam; i++)
  67.   {
  68.     novaleitura = buffer[i];
  69.     Ifiltro = (alpha * Ifiltro) + ((1 - alpha) * novaleitura);    // Filtro Passa Baixa
  70.   }
  71.   Iint = Ifiltro;                                   // Converte valor float em inteiro
  72.   Corrente =  Iint * voltsporUnidadeI ;             // calculo da Corrente no Modulo MAX471
  73.  
  74.   Serial.print(" Tensao = " );                      // Display do valor da Tensao
  75.   Serial.print(Vint);
  76.   Serial.print(" =>  ");
  77.   Serial.print(Tensao, 3);
  78.   Serial.print(" V ");
  79.   Serial.print("   Corrente = " );                    // Display do valor da Corrente
  80.   Serial.print(Iint);
  81.   Serial.print(" =>  ");
  82.   Serial.print(Corrente, 3);
  83.   Serial.println(" A ");
  84. }
  85.  
  86. void loop()
  87. {
  88.   Filtro();
  89.   delay(200);   // Atraso para leitura na console
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement