Precision voltmeter using ADC

Solving Approach:

How do you plan to solve it?

Use conditions to check on what reference what values are obtaining. If 1023 is obtained durig vref = 1.1, change the reference to DEFAULT (5 V). And if digital values are less than 226 (226 is equivalent digital value of 1.1 V), then set reference as INTERNAL (1.1V).

 

Code

float vref;
int pot = A0;

void setup(){
  pinMode(pot, INPUT);
  Serial.begin(115200);
  analogReference(INTERNAL); //internal ==> 1.1 V;
  vref = 1.1;
}

void loop(){
  float value = analogRead(pot);
  float voltage = value*vref/1024;
  Serial.println("Digital Value = "+String(value)+" | Voltage = "+String(voltage)+" | V_reference = "+String(vref));
  if(value == 1023 && vref == 1.1){
    analogReference(DEFAULT);
    vref = 5.0;
  }
  if(value < 226 && vref == 5.0){
    analogReference(INTERNAL);
    vref = 1.1;
  }

  delay(500);
}

Output

Digital Value = 409.00 | Voltage = 0.44 | V_reference = 1.10

Digital Value = 618.00 | Voltage = 0.66 | V_reference = 1.10

Digital Value = 777.00 | Voltage = 0.83 | V_reference = 1.10

Digital Value = 1023.00 | Voltage = 1.10 | V_reference = 1.10

Digital Value = 292.00 | Voltage = 1.43 | V_reference = 5.00

Digital Value = 340.00 | Voltage = 1.66 | V_reference = 5.00

Digital Value = 396.00 | Voltage = 1.93 | V_reference = 5.00

Digital Value = 431.00 | Voltage = 2.10 | V_reference = 5.00

Digital Value = 479.00 | Voltage = 2.34 | V_reference = 5.00

Digital Value = 518.00 | Voltage = 2.53 | V_reference = 5.00

Digital Value = 650.00 | Voltage = 3.17 | V_reference = 5.00

Digital Value = 757.00 | Voltage = 3.70 | V_reference = 5.00

Digital Value = 851.00 | Voltage = 4.16 | V_reference = 5.00

Digital Value = 853.00 | Voltage = 4.17 | V_reference = 5.00

Digital Value = 893.00 | Voltage = 4.36 | V_reference = 5.00

Digital Value = 1013.00 | Voltage = 4.95 | V_reference = 5.00

Digital Value = 1019.00 | Voltage = 4.98 | V_reference = 5.00

Digital Value = 1023.00 | Voltage = 5.00 | V_reference = 5.00

Digital Value = 1023.00 | Voltage = 5.00 | V_reference = 5.00

Digital Value = 1023.00 | Voltage = 5.00 | V_reference = 5.00

Digital Value = 1023.00 | Voltage = 5.00 | V_reference = 5.00

Video

Add video of output (know more)

Photo of Output

 

 

 

 

 

Upvote
Downvote

Submit Your Solution

Note: Once submitted, your solution goes public, helping others learn from your approach!