Advertisement
Guest User

Código ACS712-30A

a guest
Jul 29th, 2015
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.36 KB | None | 0 0
  1. int VQ; //Iniciando Variável.
  2. int ACSPin = A2; //Iniciando Variável e Definindo a Entrada Analógica do Arduino.
  3.  
  4. void setup()
  5. {
  6. Serial.begin(9600);
  7. VQ = determineVQ(ACSPin); //Tensão de Saída Quiescente - O ACS712 mostra a Tensão Média sem Carga (0 A)
  8. delay(1000);
  9. }
  10.  
  11. void loop()
  12. {
  13. Serial.print("ACS712@A2:");Serial.print(readCurrent(ACSPin),3);Serial.println(" mA");
  14. delay(150);
  15. }
  16. int determineVQ(int PIN)
  17. {
  18. Serial.print("Estimar Tensão Média Quiescente:");
  19. long VQ = 0; //Iniciando variável long e atribuindo valor inicial.
  20. //leia 5000 amostras para estabilizar o valor.
  21. for (int i=0; i<10000; i++)
  22. {
  23. VQ += abs(analogRead(PIN)); //Operador Composto de Adição e Calcular o Módulo de um Número.
  24. delay(1); //Depende da amostragem (no condensador de filtro), pode ser 1/80000 (80kHz) o valor max.
  25. }
  26. VQ /= 10000; //Operador Composto de Divisão
  27. Serial.print(map(VQ, 0, 1023, 0, 5000)); Serial.println(" mV"); //VQ=O Número de Mapear, 0=Limite Inferior da Faixa de Corrente do Valor, 1023=Limite Superior da Faixa de Corrente do Valor, 0=Limite Inferior da Faixa de Destino do Valor, 5000=Limite Superior da Faixa de Destino do Valor.
  28. return int(VQ); //Terminar uma função e retornar um valor de uma função para a função de chamada. //Converte um valor de um tipo de dados long para o tipo de dados int.
  29. }
  30. float readCurrent(int PIN)
  31. {
  32. int current = 0; //Iniciando variável int e atribuindo valor inicial.
  33. int sensibilidade = 66; //Mudar isso para 100 para ACS712-20A ou para 66 para ACS712-30A.
  34. //Leia 5 amostras para estabilizar valor.
  35. for (int i=0; i<200; i++)
  36. {
  37. current += abs(analogRead(PIN) - VQ); //Operador Composto de Adição e Calcular o Valor Absoluto de um Número e Logo Após subtrair com o valor da variável VQ.
  38. delay(1); //Depende da amostragem (no condensador de filtro), pode ser 1/80000 (80kHz) o valor max.
  39. }
  40. current = map(current/200, 0, 1023, 0, 5000); //current/200=O Número de Mapear, 0=Limite Inferior da Faixa de Corrente do Valor, 1023=Limite Superior da Faixa de Corrente do Valor, 0=Limite Inferior da Faixa de Destino do Valor, 5000=Limite Superior da Faixa de Destino do Valor.
  41. return float(current)/sensibilidade; //Terminar uma função e retornar um valor de uma função para a função de chamada. //Converte um valor de um tipo de dados int para o tipo de dados float e Logo Após divide com a sensibilidade.
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement