梁工
发表于 2024-12-10 21:52:09
发光二极管的PN结在有光照时会有微弱的光电效应,输出一点电压电流的。
当MCU睡眠后,IO高阻,LED输出的光电压能到1V多,
下面是随便拿一个透明白光LED,万用表2V档,输入电阻10M,
拿个很小的LED电筒照一下,能到1.9V多。
而IO口是高阻时,一点光照LED输出电压就能到1V多,
到达IO输入电压阈值附近时(大约1.2~1.6V)内部输入缓冲管电流最大,一个IO可达30~50uA。
建议楼主这两个方法试试:
1、MCU睡眠前关闭LED扫描显示,IO设置为推挽输出,输出低电平。
2、关闭IO的数字输入功能。
晓飛飛
发表于 2024-12-10 22:08:26
除了关闭数字输入功能,还可以将所有相关IO设置为开漏或者推拉并输出低电平,其原理很简单,通过拉低所有IO闭合所有回路,让LED受光照产生的光电流内部消化释放,期间不会IO高低电平变化产生额外功耗。
21cnsound
发表于 2024-12-10 22:56:26
终极目标,能不能通过IO口设置、共阴/共阳的选择,达到光照产生的电流为MCU提供待机电流?
晓飛飛
发表于 2024-12-11 11:02:40
21cnsound 发表于 2024-12-10 22:56
终极目标,能不能通过IO口设置、共阴/共阳的选择,达到光照产生的电流为MCU提供待机电流? ...
想得美,我用6V太阳能板在弱光环境下都启动不了单片机,复位期间的电流太大了。但如果用电池启动再用太阳能板维持间歇低功耗工作还是可以的。LED那点结面积产生的电动势空载电压都不够单片机启动,更别说带载了。
晓飛飛
发表于 2024-12-11 11:09:12
21cnsound 发表于 2024-12-10 22:56
终极目标,能不能通过IO口设置、共阴/共阳的选择,达到光照产生的电流为MCU提供待机电流? ...
我的意思是,即使用面积较大的多级太阳能板也才能勉强维持单片机的间歇性低功耗运行,LED的节面积太小光电流不够,到不了uA级别,而且空载电动势也不够,更无法带载,不能满足维持掉电模式的1uA待机电流,而且,光照受环境因素影响不够稳定,没有什么实用价值。
代码人生
发表于 2024-12-12 10:13:37
梁工 发表于 2024-12-10 21:52
发光二极管的PN结在有光照时会有微弱的光电效应,输出一点电压电流的。
当MCU睡眠后,IO高阻,LED输出的光 ...
数码管引脚IO口初始化的时候是推挽,睡眠前先关闭数码管显示后还等了500ms才进入睡眠。无光的时候测数码管所有引脚都是0V,有光照IO电压就随LED变化了,然后整机电流就上升
神农鼎
发表于 2024-12-12 12:53:10
万能的【高阻输入+关闭数字输入】 就搞定了
代码人生
发表于 2024-12-12 13:19:49
神农鼎 发表于 2024-12-12 12:53
万能的【高阻输入+关闭数字输入】 就搞定了
低功耗这个算是搞定了
电路图没问题,显示用的16位的共阴数码管,推挽模式不用动,P2 = 0xff,关闭数字输入,关闭COM使能,关闭SEG使能,关闭触摸按键使能,现在待机是2.3uA,达不到1uA了,不知道是不是开了推挽的原因
梁工
发表于 2024-12-12 14:24:33
代码人生 发表于 2024-12-12 13:19
低功耗这个算是搞定了
电路图没问题,显示用的16位的共阴数码管,推挽模式不用动,P2 = 0xff,关闭数 ...
开推挽本身不会耗电的。
梁工
发表于 2024-12-12 14:25:37
21cnsound 发表于 2024-12-10 22:56
终极目标,能不能通过IO口设置、共阴/共阳的选择,达到光照产生的电流为MCU提供待机电流? ...
LED不是光电池,能量太小,不能提供足够的电流的。