After several tries, i was successful with reading stable battery voltage using internal voltage reference of 1.1v, now the issue i face is that i cannot read stable sensor voltage, could you please let me know how can i read my sensor voltage? or do i need additional voltage divider (my sensor goes directly to A0 and GND pin).
void setup(){
Serial.begin(9600);
}
void loop() {
//REFS1 AND REFS0 to 1 1 -> internal 1.1V refference
ADMUX |= B11000000;
//We read A1 (MUX0) for battery voltage
ADMUX |= B00000001;
//We read A0 for sensor voltage
ADMUX |= B00000000; // for my sensor
// Start AD conversion
ADCSRA |= B11000000;
// Detect end-of-conversion
while (bit_is_set(ADCSRA,ADSC));
float val = ADCL | (ADCH << 8);
val = val * 5.7; // Using 4.7k and 1k voltage divider
Serial.println(val);
}
Something like the code below must workout but unfortunately it does not help!
int sensorValue = analogRead(A0);
voltage = ((sensorValue/ val) * 1023.);
delay(1000);
Serial.println("voltage: ");
Serial.print(voltage);
if (voltage<=215){
digitalWrite (led, HIGH);
}
else if (voltage>=215){
digitalWrite (led, LOW);
}
I cannot find the issue, it should work, i believe.
//////////////////////new edit/////////////////////////////////////
const long internalReference = 1078L; //measured AREF to be 1.078 ~ 1.078*1000= 1078V
void setup() {
// put your setup code here, to run once:
Serial.begin (115200);
}
void loop() {
analogReference (INTERNAL);
ADCSRA |= (1<<ADSC);
while (bit_is_set(ADCSRA,ADSC));
float val = ADCL | (ADCH << 8);
int sensorValue = analogRead (A0);
val = (sensorValue/1078)*1024;
Serial.println(val);
delay(100);
}