历史上的今天
今天是:2024年10月30日(星期三)
2019年10月30日 | 基于pic16f1503单片机的电源电压不足检测和指示方法
2019-10-30 来源:51hei
原理:
利用单片机内部的FVR稳压电源,ADC进行检测判断单片机的VDD电压是否足够,不足进行输出显示。
应用:
当单片机的供电是由电池供电时,可以测量单片机的供电是否足够,指示电池电量不足。
实际电路测试功能可行,已经应用在具体电路上。
软件:
MPLAB X IDE v4.15 proteus 8.6.
1、仿真电路图;
2、源程序加注释。
说明:
1、利用PIC16F1501内部的FVR,ADC可以测量VDD电压,判断单片机是否供电电压不足。
2、将ADC的基准设为Vdd,通过FVR使能并稳定到1.024V后,用ADC测量值。
3、有公式ADC读值=(1.024/VDD)*1024。设置Vdd参考为3.3V,则(1.024/VDD)*1024=318.
4、VDD越大,FVR的ADC读值越小,所以只要判断读值小于318,说明VDD 大于3.3V
5、图中左边VDD=3.3V.输出指示灯亮,正常,右边VDD=3.29V输出指示灯灭。
6、两个芯片的程序相同,电压基准是3.3V,3.3V以下指示输出灯不亮。
仿真原理图如下
单片机源程序如下:
#include"sys.h"
#include #include #include #include #include #include #define POWER_LED PORTCbits.RC0 //RC0 为系统电源指示灯, //电源大于3.3V时,灯亮; //电源小于3.3V时,灯灭; void sys_init() //系统初始化 { OSCCON=0x7F; //16M 内部晶振 FVRCON=0B01010001; //FVREN,ADCFVR=01(1.024V) ADCON0=0B01111100; //FVR channel,ADCON ADCON1=0B10000000; //right 对齐 ANSELC=0; //PORTC是IO口 PORTC=0; TRISC=0; //PORTC是输出 } void main() { sys_init(); //系统初始化 while(1) { FVRCONbits.FVREN=1; //FVR 使能 while(!FVRCONbits.FVRRDY); //FVR 是否稳定 ADCON0bits.ADON=1; //ADC 使能 __delay_ms(1); //delay ADCON0bits.GO=1; //ADC 转换开始 while(ADCON0bits.GO); //等待ADC 转换结束 uint16_t adc_result=(uint16_t)ADRESH<<8 |ADRESL; //得到ADC 读数 if(adc_result<318) POWER_LED=1; //(1.024/3.3)*1024=318 else POWER_LED=0; FVRCONbits.FVREN=0; //FVR 使能关闭,节能 __delay_ms(5000); } }
史海拾趣
|
观察了一些企业的产品技术情况,比较普遍的一个现象是:研发人员无一例外的同声谴责采购和工艺部门,对元器件控制不严,致使电路板入检合格率低、到客户现场后频频出毛病。 举几个简单例子: 一个电解电容紧挨着散热片焊接的,与电解电容相关联 ...… 查看全部问答> |
|
芯片会损坏,这是不争的事实。至于损坏的原因,大致有两个方面,一是内因——芯片工艺缺陷;二是外因——使用不当。下面两个例子,都是在工厂里形成的故障,属于芯片或机器的固有缺陷,照理说,都是应该召回的。 【制作环境潮湿,芯片爆米花】 ...… 查看全部问答> |
|
EVC4中有类似于stl中的map或hash_map的东东可以用吗? 本想在evc4中用 std::map, 发现evc4不支持,又不想用网上其它的stl库, 因此,想问一下,在evc4中有类似于map的类吗?本来想这样用的:std::map 我要用到的数据如下,想实现快速查询,想用现成的类: 姓名 地址 AA 广 ...… 查看全部问答> |
|
自MSP430系列单片机99年进入中国市场以来,以其超低功耗,高性能深得广大工程师青睐。 2011年MCU DAY研讨会我们更注重MCU技术前沿,重点对value line,low voltage MCU以及FRAM MCU等新技术进行研讨。研讨会共巡回20个城市,以16位超低功耗MSP430 ...… 查看全部问答> |
|
从TI官网下的launchpad触摸板例程 编译时无错误,MAKE时出现如下错误,用的是IAR软件,不知道那个库没设置好,还是路径问题,求解答。Error[e46]: Undefined external \"wheel_buttons\" referred in main ( E:\\430itouch\\Getting_Started_Pr ...… 查看全部问答> |
|
求救下万能的网友。 我采用打点程序,打出来的竟然是几条线。 之前看看到网上有人说是因为没有开扩展指令集,但是我开了 求救 PS:附上我的打点子程序 unsigned char Row,Tier,Tier_bit ,Tier_y,i; unsigned char ReadOldH=0x0 ...… 查看全部问答> |
|
【LPC54100】+ LPC54102双核套件固件库SPI的用法 本帖最后由 强仔00001 于 2015-3-8 22:36 编辑 最近进度有点慢。现在把我SPI这部分分享下吧。这次我使用SPI0和I2C2这两个模块,I2C2负责采集MPU6050的数据,然后用OLED刷新数据。 SPI是串行外设接口(Serial Periphera ...… 查看全部问答> |




