Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // teste do Vout do sensor ACS712-30A com Arduino ATmega328 - Gustavo Murta 01/ago/2015
- // http://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/
- // https://code.google.com/p/tinkerit/wiki/SecretVoltmeter
- long readVcc() {
- // Leitura da tensão de Referencia de 1.1V para calcular AVcc
- // Configura Referencia do ADC para Vcc
- ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
- delay(2); // Aguarda estabilização da Tensão Vref
- ADCSRA |= _BV(ADSC); // Inicia a conversão ADC
- while (bit_is_set(ADCSRA,ADSC)); // Comeca a leitura
- uint8_t low = ADCL; // Lê primeiro o registrador ADCL e depois o ADCH
- uint8_t high = ADCH; // destrava os dois registradores
- long result = (high<<8) | low; // Formata o resultado
- // Conversor ADC do Arduino já calibrado
- // Primeiro ReadVcc = 1.1 * 1023 * 1000 > Vcc = 4957 mV
- // Com Multimetro Vcc = 5000 mV e Vref = 2500 mV
- // Com Sketch Vcc = 5000 mV e Vout = 2497 mV
- result = 1135061L / result; // Cálculo do Vcc (em mV) 1135061 = 1.109542*1023*1000
- return result; // Vcc em millivolts
- }
- void setup() {
- Serial.begin(9600);
- }
- void loop() {
- long Vcc = (readVcc());
- Serial.print("Vcc = " );
- Serial.print(Vcc);
- Serial.println(" mV" );
- int Vin = analogRead(A2)+1 ; // leitura da tensão no pino A2 + LSB
- long Vout = (Vin * Vcc) / 1023;
- Serial.print("Vout = " );
- Serial.print( Vout ); // Vout do sensor ACS712-30A
- Serial.println(" mV" );
- Serial.println ();
- delay(1000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement