View difference between Paste ID: ZzrGCKVt and 5wSvManE
SHOW: | | - or go back to the newest paste.
1-
// Medição da Tensão Vcc do Arduino ATmega328 - Gustavo Murta 01/ago/2015
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-
  result = 1137254L / result;       // Cálculo do Vcc (em mV); 1137254 = 1.1106*1024*1000
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-
  // Primeiro readVcc = 4962 mV  e medido com multimetro = 5,01 V 
24+
25-
  // result = 1126400L / result; // Primeiro cálculo do Vcc (in mV); 1126400 = 1.1*1024*1000
25+
  
26-
  //
26+
27-
  // 1.1Vrefcalc = 1.1 * Vcc1 (Multimetro) / Vcc2 (funcao readVcc)
27+
28-
  // escala = 1.1Vrefcalc * 1024 * 1000
28+
29-
  // escala = 1137254
29+
30-
  // Após calibração => medido = 5,01 V e readVcc = 5,009 V
30+
  long Vcc = (readVcc());
31-
  // Despreze sempre a primeira leitura
31+
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( readVcc(), DEC );
38+
  Serial.print( Vout );           // Vout do sensor ACS712-30A
39
  Serial.println(" mV" );
40
  Serial.println ();
41
42
  delay(1000);
43
}