浅谈如何降低arduino uno和pro mini 时钟频率-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11141|回复: 7

浅谈如何降低arduino uno和pro mini 时钟频率

[复制链接]
发表于 2017-8-25 02:45 | 显示全部楼层 |阅读模式
本帖最后由 酥糖 于 2017-8-25 02:45 编辑

很多的arduino项目里都是用电池供电的,如何降低损耗,让设备使用周期延长呢?

本文将讲述如何通过降低arduino的芯片时钟频率,来达到节能的效果。
那么,降低到多少频率才能算是节能呢?文末揭晓测试结果

先附送调整arduino的时钟频率代码:

[mw_shl_code=cpp,true]

/*********************************************
* 目的:降低arduino时钟频率,用来节能
* 作者:酥糖
* 时间:2017.06.18
* 功能:将arduino频率16MHZ分为n份,每分16/n MHZ。
*********************************************/
#include <Prescaler.h>
void setup()
{
pinMode(13,OUTPUT);
setClockPrescaler(CLOCK_PRESCALER_1);
}
//此处将时钟频率16MHZ分为n份,CLOCK_PRESCALER_n;
//n通常设为1、2、4、8、16……


void loop(){
digitalWrite(13,HIGH);
trueDelay(1000);
digitalWrite(13,LOW);
trueDelay(5000);
}

/***************************************
* 常数 时钟频率 参考电流
* CLOCK_PRESCALER_1 16MHZ 7.8mA
* CLOCK_PRESCALER_2 8MHZ 5.4mA
* CLOCK_PRESCALER_4 4MHZ 4.0mA
* CLOCK_PRESCALER_8 2MHZ 3.2mA
* CLOCK_PRESCALER_16 1MHZ 2.6mA
* CLOCK_PRESCALER_32 500KHZ 2.3mA
* CLOCK_PRESCALER_64 250KHZ 2.2mA
* CLOCK_PRESCALER_128 125KHZ 2.1mA
* CLOCK_PRESCALER_256 62.5KHZ 2.1mA
*****************************************/[/mw_shl_code]


代码中用到的库:

Prescaler.zip (1.59 KB, 下载次数: 111)


下面是对代码进行测试;

本次测试的对象是UNO和PRO MINI两个:

uno正面

uno正面

反面,来个特写,这个是某宝某宙家的,当时买了个套装两百多,

用了半月就觉得亏了,还不知道能不能回本。。。。

uno反面

uno反面

Pro mini,支持3.3v~12v和5.0v输入

mini

mini

测试用的电源插头是苹果原装5v1a的,纹波很稳定;

测试时表现的也很不错,波动在0.1mV,讲真,贵有贵的道理~~~

苹果插头

苹果插头


烧录pro mini的设备是某宝的USB转TTL,支持重启、5v、3.3v等等……

USB-TTL

USB-TTL


下面,是本次测试用到的关键工具:POWER-Z,功能强大的一塌糊涂啊……


power-z

power-z


请允许我替他们打个广告:

感兴趣的筒子们请扫一下二维码传送过去,

扫码领券,扫码领券,扫码领券……

淘宝链接

淘宝链接

下面进入测试环节:

空载

空载

空载电压,5.1027V,很稳定,几乎没有波动。

mini 空载

mini 空载

USB转TTL空载时是耗些电的,8.2mA,最终计算时会减掉这部分功耗的。

先测试UNO:

uno

uno


用的是上面的代码,分别测试16MHZ、8MHZ、4MHZ、2MHZ……时钟频率下的

电压、电流、功率还有耗电能力。

下面的是UNO 5V电压下各个时钟频率的功耗结果:

时钟频率电压V待机电流A待机功率W耗时s容量mAh电度mWh运行电流mA运行功率W
0HZ5.104600-----
16MHZ5.10210.05240.265349.40.68173.445849.680.25
8MHZ5.10210.04760.239749.20.60783.068944.470.22
4MHZ5.10210.04540.229547.90.56362.843242.360.21
2MHZ5.10210.04370.219348.70.55682.803141.160.21
1MHZ5.10210.04280.214248.90.55032.765740.510.20
500KHZ5.10210.04240.214249.60.55092.779539.980.20
250KHZ5.10210.04200.214250.50.55782.821439.760.20
125KHZ5.10210.04200.214260.30.66523.352839.710.20
62.5KHZ5.10210.04180.209148.60.53672.695339.760.20

待机电流、功率是板载LED未点亮时候的读数,“耗时”是在该时间段内消耗的mAh和mWh,根据这些,换算成平均的运行电流、运行功率;


PS:上面给的程序是点亮LED,点亮LED比不点亮耗电多一些。


插上MINI:

mini

mini


下面的是PRO MINI 接入5V电压下各个时钟频率的功耗结果(原始测量数据,未减去空载电流):

时钟频率电压V待机电流A待机功率W耗时s容量mAh电度mWh运行电流mA运行功率W
0HZ5.10340.00820.0408-----
16MHZ5.10280.02680.132677.80.54642.752025.280.13
8MHZ5.10330.02170.107169.30.40862.032021.230.11
4MHZ5.10330.01970.096975.60.40411.995519.240.10
2MHZ5.10330.01810.091877.40.37731.877417.550.09
1MHZ5.10330.01710.086766.40.30911.546716.760.08
500KHZ5.10330.01660.081674.40.33161.647016.050.08
250KHZ5.10330.01640.081679.60.35191.755215.920.08
125KHZ5.10330.01540.076569.70.29651.462915.310.08
62.5KHZ5.10330.01640.081672.20.32371.599916.140.08


下面的是PRO MINI 接入3.3V电压下各个时钟频率的功耗结果(原始测量数据,未减去空载电流):


时钟频率电压V待机电流A待机功率W耗时s容量mAh电度mWh运行电流mA运行功率W
0HZ5.10340.00820.0408-----
16MHZ5.10280.01670.081645.10.19490.954615.560.08
8MHZ5.10330.01430.071438.70.14260.710013.270.07
4MHZ5.10330.01300.066334.00.11340.567412.010.06
2MHZ5.10330.01200.056136.10.11120.552911.090.06
1MHZ5.10330.01150.056140.40.11870.579410.580.05
500KHZ5.10330.01120.056138.20.11160.555610.520.05
250KHZ5.10330.01110.056133.30.09890.491810.690.05
125KHZ5.10330.01100.056145.40.13090.657110.380.05
62.5KHZ5.10330.01100.056132.20.08910.44719.960.05


最后的最后,是换算后汇总(上面是实测数据):

因为在拔掉UNO和mini后,计时量仍然多计算了4s,这里将所测的时间全部减去4s,


UNO在各个频率下的功耗如下:
时钟频率
运行电流mA
运行功率W
待机电流mA
待机功率W
0HZ
-
-
--
16MHZ
54.06
0.273
52.40
0.265
8MHZ
48.41
0.244
47.60
0.240
4MHZ
46.22
0.233
45.40
0.230
2MHZ
44.84
0.226
43.70
0.219
1MHZ
44.12
0.222
42.80
0.214
500KHZ
43.49
0.219
42.40
0.214
250KHZ
43.18
0.218
42.00
0.214
125KHZ
42.53
0.214
42.00
0.214
62.5KHZ
43.32
0.218
41.80
0.209

PRO MINI在5v电压下各个频率功耗如下(已经减去空载电流和功率):

时钟频率
运行电流mA
运行功率W
待机电流mA
待机功率W
0HZ----
16MHZ18.450.093 18.60 0.092
8MHZ14.330.071 13.50 0.066
4MHZ12.120.060 11.50 0.056
2MHZ10.310.051 9.90 0.051
1MHZ9.630.048 8.90 0.046
500KHZ8.760.043 8.40 0.041
250KHZ8.560.043 8.20 0.041
125KHZ8.050.039 7.20 0.036
62.5KHZ8.890.044 8.20 0.041



PRO MINI在3.3v电压下各个频率功耗如下(已经减去空载电流和功率)


时钟频率
运行电流mA
运行功率W
待机电流mA
待机功率W
0HZ----
16MHZ8.870.043 8.50 0.041
8MHZ6.590.033 6.10 0.031
4MHZ5.410.027 4.80 0.026
2MHZ4.270.021 3.80 0.015
1MHZ3.540.017 3.30 0.015
500KHZ3.550.018 3.00 0.015
250KHZ3.950.020 2.90 0.015
125KHZ3.180.016 2.80 0.015
62.5KHZ3.170.016 2.80 0.015


差不多了,最后来一个全家福:

全家福

全家福


第一次发帖,有不足的地方还请指正。




发表于 2017-8-25 09:15 | 显示全部楼层
我们做低功耗开发基本上模块到手就拆LED,一个20ma
发表于 2017-8-25 14:39 | 显示全部楼层
很好的研究啊
 楼主| 发表于 2017-8-25 21:13 | 显示全部楼层
NoComment 发表于 2017-8-25 09:15
我们做低功耗开发基本上模块到手就拆LED,一个20ma

为什么不重新设计一块电路板呢?专门电池供电充电的那种?
发表于 2017-8-26 10:22 | 显示全部楼层
酥糖 发表于 2017-8-25 21:13
为什么不重新设计一块电路板呢?专门电池供电充电的那种?

主要是我吃过很多次直接打最终PCB的亏,供电错了、电流不够、通讯协议对不上等等,所以有必要做一块原型板,先调通程序,再把万能板线路抄成PCB。
初期直接上PCB调试比较不经济,万一哪里有个小错这一批板子要么手工维修要么全部作废。
发表于 2017-8-28 15:20 | 显示全部楼层
应该再测测休眠模式和standby模式
发表于 2018-7-15 15:19 | 显示全部楼层
学习了。。。谢谢。。。。
发表于 2018-7-18 16:35 | 显示全部楼层
发现一个问题,时钟一变串口波特率,延时,pwm,tone()等与时间有关的都受影响
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:37 , Processed in 0.104772 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表