File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed
libraries/AdafruitFeather52Examples/Hardware/adc_vbat Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ #define VBAT_PIN (A7)
2
+ #define VBAT_MV_PER_LSB (0 .73242188F ) // 3.0V ADC range and 12-bit ADC resolution = 3000mV/4096
3
+ #define VBAT_DIVIDER (0 .71275837F ) // 2M + 0.806M voltage divider on VBAT = (2M / (0.806M + 2M))
4
+ #define VBAT_DIVIDER_COMP (1 .403F ) // Compensation factor for the VBAT divider
5
+
6
+ float readVBAT (void ) {
7
+ float raw;
8
+
9
+ // Set the analog reference to 3.0V (default = 3.6V)
10
+ analogReference (AR_INTERNAL_3_0);
11
+
12
+ // Set the resolution to 12-bit (0..4095)
13
+ analogReadResolution (12 ); // Can be 8, 10, 12 or 14
14
+
15
+ // Let the ADC settle
16
+ delay (1 );
17
+
18
+ // Get the raw 12-bit, 0..3000mV ADC value
19
+ raw = analogRead (VBAT_PIN);
20
+
21
+ // Set the ADC back to the default settings
22
+ analogReference (AR_INTERNAL);
23
+ analogReadResolution (10 );
24
+
25
+ // Convert the raw value to mv
26
+ // ADC range is 0..3000mV and resolution is 12-bit (0..4095)
27
+ // VBAT voltage divider is 2M + 0.806M, which needs to be added back
28
+ return raw * VBAT_MV_PER_LSB * VBAT_DIVIDER_COMP;
29
+ }
30
+
31
+ void setup () {
32
+ Serial.begin (115200 );
33
+ }
34
+
35
+ void loop () {
36
+ // Get a fresh ADC value
37
+ float vbat_val = readVBAT ();
38
+
39
+ // Display the results
40
+ Serial.print (vbat_val);
41
+ Serial.println (" mV" );
42
+
43
+ delay (1000 );
44
+ }
You can’t perform that action at this time.
0 commit comments