社区导航

 

搜索
查看: 2389|回复: 12

[秀作品] DIY自动控制电源开关的鼠标

[复制链接]

7987

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2018-10-16 13:52 | 显示全部楼层 |阅读模式
无线鼠标使用很方便,但是电池不太耐用,即使是充电电池,也需要充电。很多鼠标带有电源开关,可以关闭电源节省电池能量,但是使用后也会容易忘记关闭开关,造成浪费。虽说大部分鼠标都有自动休眠功能,但是看起来休眠的效果并不理想,试过多个2.4G无线、蓝牙鼠标,都经常被电池问题困扰,没有找到一个合适的,于是就想自己改造一下。

理想情况下,拿起鼠标就可以使用,放下鼠标一段时间后,就自动切换电源,这样无论鼠标的低功耗功能是否足够好,都不会损耗电池了,使用起来比较省心。正好有一个闲置的蓝牙鼠标,就动手进行了改造了一番。

010.jpg


这个鼠标是最常见的公模鼠标了,它使用1节14550锂电池供电,可能是电池容量小,加上通常没有关闭电源开关,所以一般情况下,充电一次可以使用7-15天(与使用频率有关)。

011.jpg


鼠标很容易拆,将电池取下后,就可以看到固定螺丝。这个鼠标只用1个螺丝固定,在鼠标脚垫下没有螺丝(有些鼠标可能有,后面两个鼠标脚垫处有螺丝柱)。取下螺丝后,就很容易将鼠标上盖和底部分离,看到里面的主板了。

要实现前面的想法,其实不难,只需要一个低功耗单片机(现在大部分单片机都可以),一个触摸按键芯片,一个P-MOS管就可以。使用触摸按键芯片检测手接触鼠标,当接触鼠标后就会输出信号,单片机检测到这个信号后,就控制MOS管导通,给鼠标供电;当信号消失(手离开),延时一段时间后切断电源,就可以自动节省电池能量。有的单片机支持大电流输出引脚(输出电流不小于50mA),那么MOS也可以省掉。

确定了基本方案,下一步就是选择合适的元件了。一节锂电池的电压范围在2.7-4.2V,因此需要选择一个支持2.7-5V的单片机,否则还需要增加一个LDO防止电压超出范围。MOS和触摸芯片也是如此,需要选择合适电压范围的。这些元件还是比较容易找到的,相信大家都有一些自己熟悉的。不过DIY的乐趣在于尽量使用少的成本和现有的东西,而不是花很多钱去买一个现成的,因此到杂物箱中找了找,找出了下面几个元件,正好可以满足要求:

  • ATTiny13V,8引脚的AVR单片机
  • TTP223,单触摸传感器
  • SI2301,P-MOS




012.jpg


ATTiny13V是8引脚的单片机,最大10M主频,1KB flash,64B ram和64B eeprom。休眠时功耗大约是5uA(看门狗使能)。
018.jpg   
TTP223是一个SOT23-6封装的芯片,支持多种方式输出和自校正。为了让程序简单,这里使用了直接输出方式,低电平有效。因此需要将TOG接地,而AHLB接VCC。

017.jpg

SI2301就是一个普通MOS,其它类似型号都可以使用。

019.jpg   

AVR单片机好几年没有用过了,顺便把编程器找出来,这还是以前DIY的,使用了AVRUSB方式。为此还把安装了XP的旧计算机找出来,因为win7以后的系统都不能直接使用AVRUSB。


013.jpg

014.jpg


因为没有(也不需要)仿真器,因此程序就使用了proteus,可以在proteus中仿真、编写代码、模拟运行、设置断点,模拟运行结果正常,一般就没有大问题了。

016.jpg


好长时间不用AVR,一些用法都忘记了。好在有以前写的通用驱动层,不看手册也很快就完成了功能。使用一个IO做触摸检测,一个IO做MOS控制。单片机平时休眠,通过WDG定时唤醒,休眠时功耗应该低于20uA。以前还体会不深,现在就越来越感到一个好的HAL是非常重要的。


  1. #define F_CPU   4800000L

  2. #include <inttypes.h>
  3. #include <avr/io.h>
  4. #include <avr/interrupt.h>
  5. #include <avr/sleep.h>
  6. #include <util/delay.h>
  7. #include "uhd.h"

  8. #define V_OUT  B, 3
  9. #define T_IN1  B, 4

  10. void init()
  11. {
  12.     IO_dir(V_OUT, IO_OUTPUT);
  13.     IO_set(V_OUT);
  14.     //IO_pullup(T_IN1, PULLUP_ENABLE);
  15.     IO_dir(T_IN1, IO_INPUT);
  16.     WDT_sleep(40);
  17. }

  18. uint8_t cnt = 0;
  19. uint8_t mode = 0;

  20. int main()
  21. {
  22.     init();

  23.     while (1)
  24.     {
  25.         WDT_sleep(8);
  26.         if(IO_in(T_IN1) == 0)
  27.         {
  28.             IO_clr(V_OUT);
  29.             mode = 1;
  30.             cnt = 60;
  31.         }
  32.         else
  33.         {
  34.             if(mode)
  35.             {
  36.                 cnt--;
  37.                 if(cnt == 0)
  38.                 {
  39.                     mode = 0;
  40.                     IO_set(V_OUT);
  41.                 }
  42.             }
  43.         }
  44.     }

  45.     return 0;
  46. }
复制代码




将程序先下载到单片机,然后将信号线焊接上去,就完成了。使用了一个长导线作为触摸感应,并将它固定到上盖下方位置。


020.jpg

021.jpg

安装电池后运行,效果不错,灵敏度也很高。就是使用中发现延时关闭电源的时间稍短了一点,程序中设计的是5秒,有时拿东西是电源就关闭了,以后改为10-30秒可能更好。


后记:

  • 第一次安装后运行发现了一个问题,TTP223输出不能拉到0V,只有2.8V。检查发现程序中使能了IO的上拉电阻,关闭上拉后就正常了。
  • 如果要更好的防止干扰,可以使用多路触摸信号进行控制,在多个信号同时有效时,才打开电源,这样效果更好。
  • 对于1节AA电池供电的鼠标,因为电压范围是0.9-1.5V,上面的元件就不能使用了。因此需要选择合适的元件,或者使用升压方式。




完整的proteus8程序 touch_mouse_power.zip (34.12 KB, 下载次数: 5)

评分

1

查看全部评分



回复

使用道具 举报

651

TA的帖子

3

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-10-16 14:38 | 显示全部楼层
很好的想法。手上有套罗技MK240,它的鼠标貌似重来不休眠,一动就会唤醒电脑。
鼠标背面还有个物理拨动开关,真是醉了,那道越是品牌厂的产品,方案越烂吗?

点评

有些鼠标是可以通过运动唤醒的,其实就是定期检查运行情况,有运动就进入工作模式,否则就休眠。理论上应该是不错的,但是有些鼠标设计的确就不行。  详情 回复 发表于 2018-10-16 14:47
京微齐力HME-M7——单片机开发者的进阶之选


回复

使用道具 举报

7987

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

 楼主| 发表于 2018-10-16 14:47 | 显示全部楼层
le062 发表于 2018-10-16 14:38
很好的想法。手上有套罗技MK240,它的鼠标貌似重来不休眠,一动就会唤醒电脑。
鼠标背面还有个物理拨动开 ...

有些鼠标是可以通过运动唤醒的,其实就是定期检查运行情况,有运动就进入工作模式,否则就休眠。理论上应该是不错的,但是有些鼠标设计的确就不行。


回复

使用道具 举报

715

TA的帖子

2

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2018-10-16 14:47 | 显示全部楼层
这个想法很有意思,做起来也不难,谢谢分享!
徐建
20091127


回复

使用道具 举报

12

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-10-16 14:59 | 显示全部楼层
不错的想法


回复

使用道具 举报

773

TA的帖子

1

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2018-10-16 16:36 | 显示全部楼层
感觉并不是一个很好的设计,首先,用一根线作为感应,灵敏度是一个问题,其次,在使用鼠标的时候,电路一直在工作,无形中增加了耗电量,而且AVR单片机并不是一个低功耗的单片机,感觉这个设计还没有改装以前省电,仅仅是个人看法,不喜勿喷

点评

DIY本来就是折腾,喜欢和不喜欢都正常,没有关系。 AVR的功耗和现在单片机相比的确不算低,不过休眠功耗也足够用了,开启看门狗5uA也可以接受了,大部分外设的功耗都是远高于内核的。  详情 回复 发表于 2018-10-16 17:07


回复

使用道具 举报

7987

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

 楼主| 发表于 2018-10-16 17:07 | 显示全部楼层
本帖最后由 dcexpert 于 2018-10-16 17:10 编辑
曹伟1993 发表于 2018-10-16 16:36
感觉并不是一个很好的设计,首先,用一根线作为感应,灵敏度是一个问题,其次,在使用鼠标的时候,电路一直 ...

DIY本来就是折腾,喜欢和不喜欢都正常,没有关系。

AVR的功耗和现在单片机相比的确不算低,不过休眠功耗也足够用了,开启看门狗5uA也可以接受了,大部分外设的功耗都是远高于内核的。
灵敏度方面,实测的效果是不错的。

点评

可以考虑一下找一些低功耗的MCU,这样才能做到省电,因为如果长时间使用鼠标的话,MCU一直会工作,反而起不到省电的效果  详情 回复 发表于 2018-10-16 17:25


回复

使用道具 举报

773

TA的帖子

1

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2018-10-16 17:25 | 显示全部楼层
dcexpert 发表于 2018-10-16 17:07
DIY本来就是折腾,喜欢和不喜欢都正常,没有关系。

AVR的功耗和现在单片机相比的确不算低,不过休眠功 ...

可以考虑一下找一些低功耗的MCU,这样才能做到省电,因为如果长时间使用鼠标的话,MCU一直会工作,反而起不到省电的效果

点评

mcu是间歇工作的啊,通过WDG唤醒,15ms唤醒一次,功耗不高的。  详情 回复 发表于 2018-10-16 21:04


回复

使用道具 举报

7987

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

 楼主| 发表于 2018-10-16 21:04 | 显示全部楼层
曹伟1993 发表于 2018-10-16 17:25
可以考虑一下找一些低功耗的MCU,这样才能做到省电,因为如果长时间使用鼠标的话,MCU一直会工作,反而起 ...

mcu是间歇工作的啊,通过WDG唤醒,15ms唤醒一次,功耗不高的。

点评

那你这个触摸是做什么用的?摆设吗?都有了看门狗了,不管有没有触摸,都会唤醒,我觉得你应该是用触摸来唤醒单片机才对的,用看门狗来唤醒,我没有太明白有什么好处  详情 回复 发表于 2018-10-17 08:52


回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-10-16 23:50 | 显示全部楼层
腻害


回复

使用道具 举报

773

TA的帖子

1

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2018-10-17 08:52 | 显示全部楼层
dcexpert 发表于 2018-10-16 21:04
mcu是间歇工作的啊,通过WDG唤醒,15ms唤醒一次,功耗不高的。

那你这个触摸是做什么用的?摆设吗?都有了看门狗了,不管有没有触摸,都会唤醒,我觉得你应该是用触摸来唤醒单片机才对的,用看门狗来唤醒,我没有太明白有什么好处

点评

说明你没有看懂啊。唤醒了然道就不会休眠吗  详情 回复 发表于 2018-10-17 09:15


回复

使用道具 举报

7987

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

 楼主| 发表于 2018-10-17 09:15 | 显示全部楼层
本帖最后由 dcexpert 于 2018-10-17 09:20 编辑
曹伟1993 发表于 2018-10-17 08:52
那你这个触摸是做什么用的?摆设吗?都有了看门狗了,不管有没有触摸,都会唤醒,我觉得你应该是用触摸来 ...

说明你没有看懂啊。唤醒了然道就不会休眠吗。平均系统功耗是工作时的功耗和整体时间,计算工作占空比得到的,整体其实很低的。触摸的功耗也很低的


回复

使用道具 举报

253

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-10-24 12:11 | 显示全部楼层
不错不错,很实用。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-5-27 19:51 , Processed in 0.359749 second(s), 22 queries , Gzip On, MemCache On.

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