32 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <Arduino.h>
 | |
| 
 | |
| // uint8_t CRG_STAT_GPIO = 21; // battery charger feedback,                  GPIO21, VSPIHD, EMAC_TX_EN
 | |
| uint8_t ADC_BAT_GPIO = 36;  // Battery voltage sense input (1/2 divider), GPIO36, ADC1_CH0, RTC_GPIO0
 | |
| 
 | |
| void init_battery_HAL(void) {
 | |
|   // Currently the battery charge status cannot be recognized in a reliable way due to a design flaw in the PCB.
 | |
|   // See https://github.com/CoretechR/OMOTE/issues/55
 | |
|   // So charge status is deactivated for now.
 | |
|   //pinMode(CRG_STAT_GPIO, INPUT_PULLUP);
 | |
|   pinMode(ADC_BAT_GPIO, INPUT);
 | |
| }
 | |
| 
 | |
| void get_battery_status_HAL(int *battery_voltage, int *battery_percentage) {
 | |
|   int battery_analogRead = 0;
 | |
| 
 | |
|   battery_analogRead = analogRead(ADC_BAT_GPIO);
 | |
|   // original values
 | |
|   // battery_voltage = battery_analogRead*2*3300/4095 + 350; // 350mV ADC offset
 | |
|   // adjusted values due to new measurements
 | |
|   *battery_voltage = battery_analogRead*2*3350/4095 + 325;
 | |
|   *battery_percentage = constrain(map(*battery_voltage, 3700, 4200, 0, 100), 0, 100);
 | |
|   // Check if battery is charging, fully charged or disconnected
 | |
|   /*
 | |
|     "disconnected" cannot be recognized
 | |
|     https://electronics.stackexchange.com/questions/615215/level-shifting-of-a-3-state-pin
 | |
|     https://electrical.codidact.com/posts/286209
 | |
|     https://how2electronics.com/lithium-ion-battery-charger-circuit-using-mcp73831/
 | |
|   */
 | |
|   //*battery_ischarging = !digitalRead(CRG_STAT_GPIO);
 | |
| 
 | |
| }
 |