Advertisement
jgustavoam

Arduino teste do Vout do ACS712

Aug 1st, 2015
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // teste do Vout do sensor ACS712-30A com Arduino ATmega328 - Gustavo Murta 01/ago/2015
  2. // http://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/
  3. // https://code.google.com/p/tinkerit/wiki/SecretVoltmeter
  4.  
  5. long readVcc() {
  6.   // Leitura da tensão de Referencia de 1.1V para calcular  AVcc
  7.   // Configura Referencia do ADC para Vcc
  8.      
  9.     ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  10.    
  11.   delay(2);                         // Aguarda estabilização da Tensão Vref
  12.   ADCSRA |= _BV(ADSC);              // Inicia a conversão ADC
  13.   while (bit_is_set(ADCSRA,ADSC));  // Comeca a leitura
  14.  
  15.   uint8_t low  = ADCL;              // Lê primeiro o registrador ADCL e depois o ADCH  
  16.   uint8_t high = ADCH;              // destrava os dois registradores
  17.  
  18.   long result = (high<<8) | low;    // Formata o resultado
  19.  
  20.   // Conversor ADC do Arduino já calibrado
  21.   result = 1137330L / result;       // Cálculo do Vcc (em mV) 1137330= 1.11176*1023*1000
  22.   return result;                    // Vcc em millivolts
  23.   }
  24.  
  25.  
  26.  void setup() {
  27.   Serial.begin(9600);
  28. }
  29. void loop() {
  30.   long Vcc = (readVcc());
  31.   Serial.print("Vcc = " );
  32.   Serial.print(Vcc);
  33.   Serial.println(" mV" );
  34.  
  35.   int Vin = analogRead(A2)+1 ;        // leitura da tensão no pino A2 + LSB
  36.   long Vout = (Vin * Vcc) / 1023;
  37.   Serial.print("Vout = " );  
  38.   Serial.print( Vout );           // Vout do sensor ACS712-30A
  39.   Serial.println(" mV" );
  40.   Serial.println ();
  41.  
  42.   delay(1000);
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement