找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 997|回复: 6
打印 上一主题 下一主题
收起左侧

单片机比较器的外围电路解法?

[复制链接]
跳转到指定楼层
楼主
大家好,用单片机的比较器与外围的电池电压做比较,然后做出反应,外围电路应该怎样搭建?

3.jpg (111.32 KB, 下载次数: 22)

3.jpg

4.jpg (492.86 KB, 下载次数: 24)

这样接对否?

这样接对否?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1085441 发表于 2023-7-20 00:06 | 只看该作者
不如将电池电压送到ADC,得到电压值,然后根据电压值判断,这样的好处是,比较的电压门限可以设置,比较灵活。
回复

使用道具 举报

板凳
ID:401564 发表于 2023-7-20 00:17 | 只看该作者
STC的比较器就跟它的PWM一样,数据手册洋洋洒洒一大堆,你啃半天都不一定知道它在说什么
电池供电还是用带ADC的单片机好一点,可以精确处理,也可以知道电池的实际电压
关键是STC带ADC的单片机并没有比不带ADC的单片机贵多少,有的型号甚至是更便宜
回复

使用道具 举报

地板
ID:213173 发表于 2023-7-20 07:14 | 只看该作者

回复

使用道具 举报

5#
ID:123289 发表于 2023-7-20 08:56 | 只看该作者
谈到比较,必须有两个量。一个是标准,一个是对象。
标准取什么?可以外部分搭建,也可以从内部获取。即然CPU嵌入了比较器,设计者必会给出一个内部的标准。建议你使用。
比较的对象:电池,必须将它映射到标准附近,否则如何比较呢?最简单的方法就是用电阻分压至标准附近。
但这会浪费电池的能量。
节能:如果不需要时时刻刻检测,可以加控制开关,只在检测时接入分压电阻(不是主题,不在此讨论细节)。
如果必须时时刻刻检测,可以加大电阻的阻值。或其它更高级的方案(不在此讨论)。
回复

使用道具 举报

6#
ID:427868 发表于 2023-7-20 11:06 | 只看该作者
Y_G_G 发表于 2023-7-20 00:17
STC的比较器就跟它的PWM一样,数据手册洋洋洒洒一大堆,你啃半天都不一定知道它在说什么
电池供电还是用带AD ...

STC8H的比较器比PWM好懂多了;
/*********比较器初始化函数****************/
Void CMPint(Void)
{
    CMPCR2 = OX00;//清零
    CMPCR2 &=0xBF; //1011 1111, 开启0.1us滤波
CMPCR2 |= 0x3F;//0001 1111, 比较器结果经过63个去抖时钟后输出
CMPCR1 = 0x00; //清零
CMPCR1 |= 0x10; //0001 0000,开启比较器下降沿中断(根据需要修改)
CMPCR1 &= 0XF7; //1111 0111,P3.7为CMP+输入脚
CMPCR1 &= 0xFB; //1111 1011,内部1.19V为CMP-输入脚
CMPCR1 &= 0xFD; //1111 1101,禁止比较器输出(根据需要是否输出)
CMPCR1 |= 0x80; //开启比较器模块
}
此函数在main主函数中作初始化函数,去抖可根据自己需要修改。
需要执行的任务放在比较器中断函数内
/******比较器中断函数,级别在初始化中设置为最高级3*********/
void CMP_Isr() interrupt 21
{
    CMPCR1 &= 0xBF;//1011 1111,使CMPIF=0,清中断标志
    想要执行的任务;//要简洁明了,不要占用过多步骤,如多可执行一个标志位,由标志位触发执行相关复杂任务。
}

回复

使用道具 举报

7#
ID:1034262 发表于 2023-7-20 16:53 | 只看该作者
就是一个比较器,负输入端选择内部的1.19V基准,从P3.7输入比较电压。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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