最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 最新DIY >

魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制

时间:2017-07-22 22:02来源:数码之家 作者:在线2545889167 点击:
WKTCH = 0x80; //开掉电定时器 EX1 = 1; } } else {//开表状态 30ua power_on--; power_ctrl=1; WKTCL = 0xff; //488us*(255+1) = 125ms WKTCH = 0x80; //开掉电定时器 } if(light_time)//关灯控制 { light_time--;
前两天刚刚用到手了UT61E
简单测评看这里:http://bbs.mydigit.cn/read.php?tid=1949197
于是乎本着喜新厌旧的心里,之前的主力UT33D就退居二线了(降格为炮灰)
作为炮灰,肯定是逃脱不了被改造的命运哈。新表暂时舍不得改,先炮灰练手
上一个炮灰改造帖:垃圾移动电源板+pos机电池做个超级mini的9v升压电源供万用表|http://bbs.mydigit.cn/read.php?tid=1812965
既然是改造呢,就改的有新意点,就换个锂电感觉有点low哈
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
先拆开
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
好早之前就给加了个10A保险丝了,没座子就直接焊上去的,给个特写哈
注意加保险要隔断走线
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
日期还是蛮新的哈,也没用多久呢
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
表盘拨片备份,以防搞乱了还能复原,不过没用上这备份哈
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
正面
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
拆下屏幕
这牛屎不圆啊,差评,屏幕下面没什么要改的,所以又装回去了
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
按照设计,要先改开关。背光开关原装是自锁的,改造成点动
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
镊子扒开两边的锁扣,取下白帽子
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
去掉自锁钩子,其他的原样复合,合上盖子,现在已经不能锁定了
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
讲解下怎么改造
为了发个贴,这波还浪费了个开关,有点亏哈
就是箭头指着这货,锁定状态
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
弹起状态
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
全部拆解开,就是红圈里面那货决定了自锁还是点动。
(图里还少了两个至关重要接触片,因为拆的时候不小心,弹飞了,落地就找不到了,2333),所以说这个开关费了
所以说大家拆的时候也要加倍小心,那两个小东西弹飞了,这个开关就废了
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
然后隔断各种走线
红色的隔断,紫色的飞线连起来
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
这边全隔断
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制
灯旁边还要割一个
魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制

未完,楼下继续哈。
这楼继续改造,弄电池充电。
电池和充电芯片,当然是取自一元pos机拉。除了了高性能的mcu、蓝牙,不错的运放外,列在末流的电池还是多多少少有点用处的
两个150mah的电池
一个从pos上拆充电芯片焊好的充电小板


充电小板特写。当初考虑方便塞进用得到的壳子里,所以就画了个1*1cm的迷你体积的板子哈

背面ldo,用不上就不焊了哈

充电电流150ma,对单个电池有点大了,两个并联冲还行

在后外壳上打个孔,感觉是稍微有点歪

做一对接头线


装进壳子

外面正好合适,没有突出来

充电没问题

控制方面,用了片STC15W201单片机(本来15W104就足够了,但是找了下库存,没有15W104,只能用个带串口的了)
装一个震动开关
左边的三个针是下载接口

背面两个nmos,两个poms座两路控制输出。全是pos机上拆的

开始飞线
在电路板上贴了点胶带绝缘,后面电池要方那儿

接上控制板

接两个电池


这楼放下功耗测试结果
1、万用表本身功耗在测试中不计入,只看单片机和后加的控制电路
2、实际和万用表接一起后,功耗可能会有变化,但是变化不会太大,不细究
3、选用器件不同也会有影响
4、测试时电池电压是4v
5、测试可能有方法错误或者什么的,欢迎讨论,勿喷

如果开关带一个灯,对应万用表开机状态(也就是灯亮状态)(此时包含灯的功耗)

状态不变,还是开机状态,但是吧负载(灯)断开,现在只看单片机和控制电路自耗
开机状态相当于自耗30ua+万用表自身耗电(考虑背光更多)

休眠模式(此时可以通过摇晃来开机)
2ua

掉电模式,不能靠摇晃开机了,靠长按背光键或者重启电源可以开机
0.03ua

最好装盖前的样子,最终改造完毕

电路图(15w201左边两个脚为5.4,5.5||15w104左边两个脚为3.4,3.5)注意在电路和程序上做注意和处理



总体功能如下:(里面的所有时间都可以改,长短随喜欢)
1、hold键兼具并联充电,串联放电功能和系统物理关机功能(关端后单片机也没电了,终极省电)
2、5min计时自动休眠(3ua),自动休眠后,30min内为休眠,休眠时间内无动作,则超过30min,为掉电休眠(0.03ua)
3、背光键原装为自锁,改造为点动,具备一下功能
开机状态下,短按一下,hold,再按一下,解除hold(hold和背光不会冲突)
开机状态下,长按,背光开启亮5秒。5秒从放手开始计时,一直按着不放,就会亮按着的时间+5s。亮了就不能取消了,等着会自己关
开机状态下,只要按了这个键(无论长短),(从松开的那一刻)定时关机重新从5min开始计时自动休眠
休眠状态下,只要按了这个键(无论长短),开机,并从5min开始计时自动休眠。
掉电休眠状态下,长按按了这个键,开机,并从5min开始计时自动休眠。
4、震动开关
开机状态下,只要触发了震动(摇晃之类的),定时关机重新从5min开始计时自动休眠
休眠状态下,只要触发了震动(摇晃之类的),开机,并从5min开始计时自动休眠。
掉电休眠状态下,不对震动做任何反应

可以同时背光和hold,也可以分开






干货楼:改造电路图、程序
#p#分页标题#e#
下载的时候这样勾选,时钟选最低的,能多低选多低,对精度没有要求


代码。。。注释够详细了吧

复制代码
  1. #include <STC15F2K60S2.H>
  2. stc15w201s
  3.  
  4. #include "intrins.h"
  5. sbit power_ctrl=P5^4;
  6. sbit hold_ctrl=P5^5;
  7. sbit key1=P3^3;//震动开关
  8. sbit key2=P3^2;//按键(点动背光键)短按hold,长按开启背光
  9. sbit led_ctrl=P3^1;//背光
  10. //一个时间基数约为125ms//
  11. #define power_on_time 2400 //5min
  12. #define system_on_time 14400 //30min
  13. #define light_on_time 40 //5s
  14. unsigned long int power_on=power_on_time;//开机时间
  15. unsigned long int system_on=system_on_time;//系统待机时间
  16. unsigned int light_key_hold_time=0;//灯按键的保持时间
  17. unsigned long int light_time=0;//亮灯时间
  18.  
  19. void Delay_ms(unsigned int time)        //@6.000MHz
  20. {
  21.     unsigned char i, j;
  22.     while(time--)
  23.     {
  24.         i = 6;
  25.         j = 211;
  26.         do
  27.         {
  28.             while (--j);
  29.         } while (--i);
  30.     }
  31. }
  32.  
  33.  
  34. void main()
  35. {
  36.     CLK_DIV=CLK_DIV|0x07;//128分频
  37.     led_ctrl=0;
  38.     P3M1|=0x02;
  39.     P3M0&=0xfd;//高阻
  40.     hold_ctrl=0;        
  41.  
  42.     Delay_ms(10);
  43.  
  44.     //WKTCL = 49;                       //488us*(49+1) = 24.4ms    
  45.     //WKTCH = 0x80; //开掉电定时器  
  46.     
  47.     
  48.     INT_CLKO |= 0x40;//开中断4
  49.     EA = 1;    
  50.     EX1 = 1;//开中断1,震动开关
  51.     IT1 = 1;//仅下降沿
  52.     
  53.     EX0 = 1;//开中断0,点动开关
  54.     IT0 = 1;//仅下降沿
  55.     
  56.     while(1)
  57.     {
  58.         if(light_key_hold_time)
  59.         {    
  60.             WKTCL = 0x09;     //488us*(9+1) = 4.8ms    
  61.             WKTCH = 0x80; //开掉电定时器  每隔4.8ms检测一次按键。检测之间掉电休眠
  62.             light_key_hold_time++;
  63.             if(light_key_hold_time==65535)light_key_hold_time=101;#p#分页标题#e#
  64.             if(light_key_hold_time>80&&system_on==0)//表关的时候,按一下不会触发hold,而是开机//后期增大此时间,意味着,长按才能开表,在休眠下
  65.             {
  66.                 power_ctrl=1;//开表
  67.                 power_on=power_on_time;
  68.                 system_on=system_on_time;
  69.                 light_key_hold_time=0;
  70.                 EX1 = 1;
  71.                 WKTCL = 0xff;     //488us*(255+1) = 125ms    
  72.                 WKTCH = 0x80; //开掉电定时器                  
  73.             }
  74.             if(light_key_hold_time>100)//长按开灯
  75.             {                
  76.                 light_time=light_on_time;//灯倒计时
  77.                 P3M0|=0x02;
  78.                 P3M1&=0xfd;//推挽
  79.                 led_ctrl=1;//开灯
  80.             }        
  81.             if(key2==1)//抬键
  82.             {
  83.                 if(light_key_hold_time>2&&power_on>0&&light_key_hold_time<100)
  84.                 {
  85.                         hold_ctrl=~hold_ctrl;//hold取反        
  86.                 }
  87.                 if(light_key_hold_time>5)//按键操作使时间归零重新计算,待机回到最长
  88.                 {
  89.                     power_ctrl=1;//开表
  90.                     power_on=power_on_time;
  91.                     system_on=system_on_time;
  92.                     EX1 = 1;
  93.                     WKTCL = 0xff;     //488us*(255+1) = 125ms    
  94.                   WKTCH = 0x80; //开掉电定时器  
  95.                 }
  96.  
  97.                 light_key_hold_time=0;
  98.             }
  99.         }
  100.         else
  101.         {
  102.             if(power_on==0)
  103.             {
  104.                 power_ctrl=0;//关表        
  105.                 light_time=0;//关灯
  106.                 led_ctrl=0;
  107.                 P3M1|=0x02;
  108.                 P3M0&=0xfd;//高阻
  109.                 hold_ctrl=0;            
  110.                 if(system_on==0)
  111.                 {//彻底休眠// 0.03ua
  112.                     WKTCH = 0;//关定时器
  113.                     EX1 = 0;//关闭震荡中断,晃也不能亮表了,次状态下要开表,长按背光键,或者重新断电重启
  114.                 }
  115.                 else
  116.                 {//关表但是还可以唤醒状态//3-4ua
  117.                     system_on--;
  118.                     WKTCL = 0xff;     //488us*(255+1) = 125ms    
  119. #p#分页标题#e#                    WKTCH = 0x80; //开掉电定时器
  120.                     EX1 = 1;
  121.                 }
  122.             }
  123.             else
  124.             {//开表状态 30ua
  125.                 power_on--;
  126.                 power_ctrl=1;
  127.                 
  128.                 WKTCL = 0xff;     //488us*(255+1) = 125ms    
  129.                 WKTCH = 0x80; //开掉电定时器  
  130.             }
  131.             if(light_time)//关灯控制
  132.             {
  133.                 light_time--;
  134.                 if(light_time==0)
  135.                 {
  136.                     led_ctrl=0;//高阻
  137.                     P3M1|=0x02;
  138.                     P3M0&=0xfd;//高阻
  139.                 }
  140.             }
  141.         }
  142.  
  143.         PCON |= 0x02; //STOP    掉电
  144.  
  145.         _nop_();        
  146.         _nop_();  
  147.         _nop_();
  148.  
  149.     }
  150. }
  151.  
  152. void exint4() interrupt 16
  153. {
  154.     IAP_CONTR = 0x60;//外部中断连串口rx,有下降沿的时候,意味着有下载命令(平时用不到串口,rx悬空),到isp区,不需要断电,不用自动下载器,可在任何模式下近isp
  155. }
  156.  
  157. void exint0() interrupt 0//点动开关
  158. {
  159.     if(light_key_hold_time==0&&key2==0)light_key_hold_time=1;//开启开关计时
  160. }
  161.  
  162. void exint1() interrupt 2 //震动开关
  163. {
  164.     power_on=power_on_time;//时间归零
  165.     system_on=system_on_time;

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
相关文章
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容