Skip to content

Commit 1c86fce

Browse files
committed
Corrections to battery voltage
1 parent efb64cc commit 1c86fce

File tree

5 files changed

+32
-33
lines changed

5 files changed

+32
-33
lines changed

WHSR.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -283,9 +283,10 @@ unsigned int WHSR::readVreference(void)
283283
DoCheckADCMode(REFERENCE_PIN);
284284
return mySensorValues[REFERENCE_PIN];
285285
#elif defined(ARDUINO_ARDUINO_NANO33BLE)
286-
// TODO: REFERENCE_PIN gibt es nicht beim 33 BLE
287-
//return analogRead(REFERENCE_PIN);
288-
return 0;
286+
// TODO: REFERENCE_PIN not available on 33 BLE
287+
// We return the value for 3,26 V
288+
// https://docs.arduino.cc/language-reference/en/functions/analog-io/analogReference/
289+
return 1011;
289290
#endif
290291
}
291292

@@ -294,7 +295,7 @@ unsigned int WHSR::readVreference(void)
294295
*
295296
* @return reference voltage [V]
296297
*/
297-
float WHSR::readVref(void)
298+
float WHSR::readReferenceVoltage(void)
298299
{
299300
float result = (InternalReferenceVoltage * (readVreference() / 1023.0)) / 1000;
300301

@@ -312,14 +313,14 @@ float WHSR::readVref(void)
312313
*
313314
* @return battery voltage [V]
314315
*/
315-
float WHSR::readBattery(void)
316+
float WHSR::readBatteryVoltage(void)
316317
{
317318
#if defined(ARDUINO_AVR_NANO)
318-
float vref = readVref();
319+
float vref = readReferenceVoltage();
319320

320321
DoCheckADCMode(BATTERY_ADC);
321322
float VAdc = (vref / 1023) * mySensorValues[BATTERY_ADC];
322-
float result = VAdc * ((ResistorOben + ResistorUnten) / ResistorUnten);
323+
float batteryVoltage = VAdc * ((ResistorOben + ResistorUnten) / ResistorUnten);
323324

324325
DebugSerial_print(" B1: ");
325326
DebugSerial_print(mySensorValues[BATTERY_ADC]);
@@ -329,21 +330,20 @@ float WHSR::readBattery(void)
329330
DebugSerial_print(result);
330331
DebugSerial_print("; ");
331332
#elif defined(ARDUINO_ARDUINO_NANO33BLE)
332-
DebugSerial_print("AR_VDD: ");
333-
DebugSerial_println(AR_VDD);
333+
int batteryADC = analogRead(BATTERY_ADC);
334334
DebugSerial_print(" BATTERY_ADC: ");
335-
DebugSerial_println(analogRead(BATTERY_ADC));
335+
DebugSerial_println(batteryADC);
336336

337337
// Voltage calulation with measurements:
338-
// 7,11 V => BATTERY_ADC = 338
339-
// 6,48 V => BATTERY_ADC = 412
340-
//float result = -0.0175 * analogRead(BATTERY_ADC) + 21.805;
341-
float result = (338 - analogRead(BATTERY_ADC))/74.0 * 0.63 + 7.11;
342-
DebugSerial_print(" Result: ");
343-
DebugSerial_println(result);
338+
// V1 = 4,66 V => adc1 = 334
339+
// V2 = 8,13 V => adc2 = 584
340+
// V = (adc - adc1) / (adc2 - adc1) * (V2 - V1) + V1
341+
float batteryVoltage = (batteryADC - 334) * 0.01388 + 4.66;
342+
DebugSerial_print(" batteryVoltage: ");
343+
DebugSerial_println(batteryVoltage);
344344
#endif
345345

346-
return (result);
346+
return (batteryVoltage);
347347
}
348348

349349
/**

WHSR.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,11 @@
104104
//
105105
// Internal Analog Referenz
106106
//
107+
#if defined(ARDUINO_AVR_NANO)
107108
#define STANDARD_INTERNAL_REFERENCE_VOLTAGE 4459L // in mV
108-
// Kann gemessen/berechnet werden:
109-
//( Vcc / 1024 ) * Asuro::readVreference(void)
110-
109+
#elif defined(ARDUINO_ARDUINO_NANO33BLE)
110+
#define STANDARD_INTERNAL_REFERENCE_VOLTAGE 3300L // in mV
111+
#endif
111112

112113
// _____________________________________ IO Pins _____________________________________
113114

@@ -237,8 +238,8 @@ class WHSR
237238
* ************************************************************************************ */
238239

239240
unsigned int readVreference(void);
240-
float readBattery(void);
241-
float readVref(void);
241+
float readBatteryVoltage(void);
242+
float readReferenceVoltage(void);
242243

243244
void readLinesensor(int *data, unsigned char LightStatus);
244245
void readLinesensor(int *data);

examples/Config/CheckBatteryVoltage/CheckBatteryVoltage.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ void setup()
1414
void loop()
1515
{
1616
Serial.print("Vref: ");
17-
Serial.println(robo.readVref());
17+
Serial.println(robo.readReferenceVoltage());
1818

1919
Serial.print("Vbat: ");
20-
Serial.println(robo.readBattery());
20+
Serial.println(robo.readBatteryVoltage());
2121
delay(1000);
2222

2323
}

examples/Sensors/Battery_Vref/Battery_Vref.ino

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,11 @@ void setup()
2222

2323
void loop()
2424
{
25-
#if defined(ARDUINO_AVR_NANO)
2625
Serial.print("Vref: ");
27-
Serial.println(robo.readVref()); // Read reference voltage
28-
#elif defined(ARDUINO_ARDUINO_NANO33BLE)
29-
Serial.println("Vref nicht definiert"); // Not defined
30-
#endif
26+
Serial.println(robo.readReferenceVoltage());
27+
3128
Serial.print("Vbat: ");
32-
Serial.println(robo.readBattery()); // Read battery voltage
33-
delay(1000); // Pause for a second
29+
Serial.println(robo.readBatteryVoltage());
30+
31+
delay(1000); // Pause for a second
3432
}

keywords.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ ADCWaitForConversion KEYWORD2
2727
DoCheckADCMode KEYWORD2
2828

2929
readVreference KEYWORD2
30-
readBattery KEYWORD2
31-
readVref KEYWORD2
30+
readBatteryVoltage KEYWORD2
31+
readReferenceVoltage KEYWORD2
3232
readLinesensor KEYWORD2
3333
readDistance KEYWORD2
3434
readAmbientLight KEYWORD2

0 commit comments

Comments
 (0)