STC15F单片机RC充放电测量电压方法

需积分: 15 10 下载量 46 浏览量 更新于2024-09-13 收藏 146KB DOC 举报
"STC15F104W单片机通过RC充放电方式利用IO口测量外部电压的方法及应用" STC15F104W是一款1T的单片机,它拥有OPEN-DRAIN模式的IO口,这使得在没有内置模拟数字转换器(ADC)的情况下,可以通过RC充放电技术来测量外部电压。这种技术具有成本低且易于实现的优势。 在RC充放电测量电压的过程中,主要涉及以下步骤: 1. 初始化阶段:设置P3.2(INT0)引脚为OPEN-DRAIN模式,将其输出设为0以对电容进行放电,并配置INT0为上升沿中断。同时,将Timer0配置为16位自动重装定时器,时钟源设置为12T,并开启中断功能。 2. 测量阶段:清除Timer0的计数值(TH0和TL0),将P3.2置为1,开始对电容充电,接着启动Timer0。当INT0检测到上升沿中断时,停止Timer0的计数,将P3.2置为0进行放电。此时,Timer0的计数值就代表了RC充电时间。 MCU在5V供电下,IO口识别“1”的阈值电压约为2V,因此输入电压需高于2V才能有效测量。例如,在4至12.4V的测试范围内,输入电压与RC充电时间的关系可通过以下公式计算: \[ T = -R \cdot C \cdot \ln\left(1 - \frac{2}{U_x}\right) \] 其中,\( U_x \)为输入电压,\( R \)为电阻值,\( C \)为电容值。以10V为例,RC充电时间预计为446uS,实际测量值为447uS。 值得注意的是,由于RC时间与电阻和电容值相关,电阻的温度漂移通常较小,但普通电容器的温度漂移可能较大,因此推荐使用温漂小、漏电流低的电容以提高测量稳定性。 由于电压与RC时间之间的关系是非线性的,实际应用中需要针对特定电路进行校准,以获得更精确的测量结果。在附录1中,列出了不同输入电压下Timer0的读数和对应的时间,可以观察到随着电压增加,充电时间减小的非线性趋势。 这种方法适用于那些对测量精度要求不非常高的应用场景。通过这种方法,开发者可以在不具备内置ADC的单片机上实现基本的电压测量功能,从而扩展了MCU的适用范围。
2021-04-21 上传
本文介绍的是带电压电流表的多功能STC免冷启动自动下载器,功能如下: 由于常用的STC自动下载器没有电流检测功能,没法判断实验板的工作电流大小,怕电流过大,不方便,所以自己动手DIY个带电压电流表的下载器。主要功能有自动下载、各接口的电压、输出的工作电流、及4路电压表。4路电压表用于实验板特定点的电压监测,充分利用单片机的资源,不浪费。对于自动下载器的原理网上有,就是监测串口是否连续输出0X7F的值,有就说明要断电重启下载数据,本下载器支持1200-115200b的常用波特率,程序是采用每0.1S改变一下串口的波特率(由于采用先判断收到不是7F值就改变波特率的方法会出现有时不响应。所以改为这种方式。),然后检查是否有7F的值,如有就停止改变波特率,如连接接收到7F值,就关电0.4S再开电。 STC自动下载器制作器件清单: 这个制作电压检测最大为25V,电流最大为2A,它的受控输出接有1A的保险的,所以采控电流不能过大,它的输出接口有专门USB供电的直出口,可以利用这个接口外接USB座,可以把这东东变身成USB电压电流表。 工作界面如下,分2页显示,下图为第一页,显示有输出5V的电压值及输出的3.3V的值、输出电流值、外接输入的值、单片机的供电,如当USB电压电流表时,跳线短接USB供电,CPU的电压为USB输出电压。 PCB截图: 说明:由于上图PCB制作是没找到表贴LED的封装,用二极管的封装,所以尺寸大了,而且有一线布不过去,用跳线跳过的,如下图右上角接口那条红线,它是连接两个焊盘。电路板设计是采用表贴47U电容,实际使用中出现向外供电时,单片机出现重启的情况,加表贴电容的方法也解决不了问题,后来只加个普通的100U的电解就解决了,这个有可能是表贴电容性能有问题,所以电路板上多了2个电解电容。 以下是装上元件的图,焊工一般,能用。 接口的图,由于内部单片机及输出有多个输入源可选择,所以有跳线,分别选择USB供电,外接5V供电,外接12V转5V供电,由于板过小,三端稳压散热位小,所以如用12V转5V稳压供电时,电流不能过大,会出现过热的情况。