这是一个非常简单的问题,但我认为,在它的简单性,它有水输出。
我有兴趣更好地理解/sys/class/power_supply中托管的文件,以及管理系统电池监控的文件。在我的例子中,我使用带有电池的笔记本电脑,其目录位于/sys/class/power_supply/BAT0中。另一方面,正如我从/sys/class/power_supply/AC0中了解到的那样,我在这里中有一个交流适配器接口。
在电池接口中,我找到了各种文件:
/sys/class/power_supply/BAT0$ ls
alarm model_name
capacity power
capacity_level present
charge_full serial_number
charge_full_design status
charge_now subsystem
current_now technology
cycle_count type
device uevent
hwmon2 voltage_min_design
manufacturer voltage_now据我所知,capacity参考了当前电池的百分比。我还通过上下文capacity_level和status来理解:
/sys/class/power_supply/BAT0$ cat capacity
81
/sys/class/power_supply/BAT0$ cat capacity_level
Normal
/sys/class/power_supply/BAT0$ cat status
Discharging但是,我不理解其他文件,如charge_full、charge_full_design、charge_now、current_now或cycle_count:
/sys/class/power_supply/BAT0$ cat charge_full
900000
/sys/class/power_supply/BAT0$ cat charge_full_design
4100000
/sys/class/power_supply/BAT0$ cat charge_now
630000
/sys/class/power_supply/BAT0$ cat current_now
1191000
/sys/class/power_supply/BAT0$ cat cycle_count
0在uevent类中,可以查看前面的每个变量,并提供更多细节:
POWER_SUPPLY_NAME=BAT0
POWER_SUPPLY_TYPE=Battery
POWER_SUPPLY_STATUS=Discharging
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CYCLE_COUNT=0
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11400000
POWER_SUPPLY_VOLTAGE_NOW=11759000
POWER_SUPPLY_CURRENT_NOW=1089000
POWER_SUPPLY_CHARGE_FULL_DESIGN=4100000
POWER_SUPPLY_CHARGE_FULL=900000
POWER_SUPPLY_CHARGE_NOW=675000
POWER_SUPPLY_CAPACITY=75
POWER_SUPPLY_CAPACITY_LEVEL=Normal
POWER_SUPPLY_MODEL_NAME=standard
POWER_SUPPLY_MANUFACTURER=OEM
POWER_SUPPLY_SERIAL_NUMBER=00001清楚地理解电池容量的百分比来自POWER_SUPPLY_CHARGE_NOW (/sys/class/power_supply/BAT0/charge_now)在POWER_SUPPLY_CHARGE_FULL (/sys/class/power_supply/BAT0/charge_full)上的计算: 100*675000/900000=75。
但是你怎么能理解这些价值观呢?POWER_SUPPLY_CHARGE_NOW从哪里来?上述值的电压是否会干扰任何事情?
发布于 2022-12-05 13:31:30
您可能想看看Linux设备类是如何在包括/linux/电源h中在Linux内核源代码中定义的。其中所描述的数据结构中的值在/sys/class/power_supply/*中以-is表示:
/*
* All voltages, currents, charges, energies, time and temperatures in uV,
* µA, µAh, µWh, seconds and tenths of degree Celsius unless otherwise
* stated. It's driver's job to convert its raw values to units in which
* this class operates.
*/
/*
* For systems where the charger determines the maximum battery capacity
* the min and max fields should be used to present these values to user
* space. Unused/unknown fields will not appear in sysfs.
*/所以所有的charge_*值都是以微安小时为单位,而current_now是以微安培为单位的.
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11400000
POWER_SUPPLY_VOLTAGE_NOW=11759000电池的最小设计电压(不应低于此电压)为11400000微伏= 11.4伏。
目前的电压水平是11.759伏。
POWER_SUPPLY_CURRENT_NOW=1089000电池现在提供1.089安培的电流。
POWER_SUPPLY_CHARGE_FULL_DESIGN=4100000
POWER_SUPPLY_CHARGE_FULL=900000
POWER_SUPPLY_CHARGE_NOW=675000当它是新的,电池声称有一个充分的充电能力为4.10安培小时,但从那时起,它已经退化,所以目前的全充电能力只有0.9安培小时。目前,它还有0.675安培的充电时间。
因此,作为一个简单的估计,当你现在从电池中获取电流时,你将有0.675 Ah / 1.089 A=大约0.62小时,或者大约37分钟的能量。
power_supply.h文件还有许多其他信息丰富的注释,这些注释直接描述了各种值的含义。你可能想看看那些评论。
https://unix.stackexchange.com/questions/726822
复制相似问题