Advertisement
jgustavoam

Vout com ACS712-30A

Aug 1st, 2015
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  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.   // Primeiro ReadVcc = 1.1 * 1023 * 1000 > Vcc = 4957 mV
  22.   // Com Multimetro Vcc = 5000 mV e Vref = 2500 mV
  23.   // Com Sketch     Vcc = 5000 mV e Vout = 2497 mV
  24.  
  25.   result = 1135061L / result;        // Cálculo do Vcc (em mV) 1135061 = 1.109542*1023*1000
  26.   return result;                     // Vcc em millivolts
  27.   }
  28.  
  29.  
  30.  void setup() {
  31.   Serial.begin(9600);
  32. }
  33. void loop() {
  34.   long Vcc = (readVcc());
  35.   Serial.print("Vcc = " );
  36.   Serial.print(Vcc);
  37.   Serial.println(" mV" );
  38.  
  39.   int Vin = analogRead(A2)+1 ;        // leitura da tensão no pino A2 + LSB
  40.   long Vout = (Vin * Vcc) / 1023;
  41.   Serial.print("Vout = " );  
  42.   Serial.print( Vout );              // Vout do sensor ACS712-30A
  43.   Serial.println(" mV" );
  44.   Serial.println ();
  45.  
  46.   delay(1000);
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement