Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int VQ; //Iniciando Variável.
- int ACSPin = A2; //Iniciando Variável e Definindo a Entrada Analógica do Arduino.
- void setup()
- {
- Serial.begin(9600);
- VQ = determineVQ(ACSPin); //Tensão de Saída Quiescente - O ACS712 mostra a Tensão Média sem Carga (0 A)
- delay(1000);
- }
- void loop()
- {
- Serial.print("ACS712@A2:");Serial.print(readCurrent(ACSPin),3);Serial.println(" mA");
- delay(150);
- }
- int determineVQ(int PIN)
- {
- Serial.print("Estimar Tensão Média Quiescente:");
- long VQ = 0; //Iniciando variável long e atribuindo valor inicial.
- //leia 5000 amostras para estabilizar o valor.
- for (int i=0; i<10000; i++)
- {
- VQ += abs(analogRead(PIN)); //Operador Composto de Adição e Calcular o Módulo de um Número.
- delay(1); //Depende da amostragem (no condensador de filtro), pode ser 1/80000 (80kHz) o valor max.
- }
- VQ /= 10000; //Operador Composto de Divisão
- 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.
- 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.
- }
- float readCurrent(int PIN)
- {
- int current = 0; //Iniciando variável int e atribuindo valor inicial.
- int sensibilidade = 66; //Mudar isso para 100 para ACS712-20A ou para 66 para ACS712-30A.
- //Leia 5 amostras para estabilizar valor.
- for (int i=0; i<200; i++)
- {
- 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.
- delay(1); //Depende da amostragem (no condensador de filtro), pode ser 1/80000 (80kHz) o valor max.
- }
- 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.
- 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.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement