·
教程大全 ·
145498
简要
之所以要单独测试一下STC8的ADC,主要有两个问题。
- STC8手册里的ADC输入阻抗极低,需要实测是否影响正常使用。
- ADC的测量电压范围受Vref影响,0<Vin<Vref。
STC8手册中的ADC输入阻抗:
可以看到 ,输入阻抗仅有几百欧,低到变态。
如果真的只有几百欧,拿运放检波后的输出为例:
信号经过检波,接入STC8的ADC以后,检波的RC滤波中的R,由原来的R3=51k,变为R3与ADC的等效输入电阻并联,即51k*500/(51k+500) ≈ 500
这会直接导致剑波后的信号纹波增大,影响电磁信号的采集。
所以我会倾向于在检波之后加入一级电压跟随器,让输出阻抗减小,避免上述问题:
关于这个输入阻抗的问题,有问过卓大大:
下面就实测一下STC8的ADC。
STC8 单片机ADC测试
测试平台:
测试代码:
这里不贴了,stc-isp里有例程
输入阻抗测试
电源输出几乎为0A,说明输入阻抗并没有手册里写的那么不堪,是可以正常使用的。
ADC精度测试
ADC测量值有大概100mV的跳动幅度。
分析
这块板子的Vref接的是2.5V的稳压管输出端(TL431),怀疑是Vref的电压不稳定,测了一下Vref:
波动很厉害,峰峰值240mV,基本可以确定问题了。
在Vref端增加了一颗10uF电容,平稳了很多
改进后再测试ADC:
ADC数值平稳很多,波动幅值大概在10mV(要求高的话,还需对Vref的输入端进行滤波)
ADC的测量范围受Vref限制
硬件设计的时候一定要注意这一点,如果Vref直接接VCC,没什么问题,但如果使用稳压管/稳压芯片输出的电压接Vref,需要注意ADC的输入电压范围。
例如我使用TL431产生2.5V的电压接入Vref引脚,那么ADC采集的电压最大就只能到2.5V。
由于STC官方手册里给出的参考接线方案就是2.5V接Vref,并且没说明ADC输入电压跟Vref的关系,所以很容易忽略这一点。
测试
将Vref接2.5V:
可以看到输入电压是3.3V,但测量的电压最大只能到2.5V.
将Vref接5V:
可以正常测量5V以内的电压。
本文地址:https://blog.csdn.net/weixin_44578655/article/details/107287419
os.environ在asyncio中只读安全,协程内修改会导致全局污染;.env文件须在事件循环启动前加载;环境变量应于模块导入时读取为常量,避免运行时修改。 asyncio里直接用os.environ没问题,但别在协程里改它 异步代码中读取环境变量完全可以用os.environ,它本身是线程安全...
在http/1.1中,同一tcp连接上的请求与响应严格串行化传输,客户端发出的多个请求不会被tcp层乱序或混合;服务端按接收顺序处理即可保证逻辑一致性——无需额外排序,但需正确解析消息边界。 在http/1.1中,同一tcp连接上的请求与响应严格串行化传输,客户端发出的多个请求不会被tcp层乱序或混...
Python模块重载需用importlib.reload(),仅适用于已成功导入的非内置、非C扩展模块;重载不更新已有对象类型和引用,易致状态不一致,应手动重建对象或重启解释器。 Python中的模块重载(reload)主要用于开发调试阶段,当修改了已导入模块的源码,又不想重启解释器时,可以用imp...
snakemake本身不直接锁定整个输出目录,但可通过将目录声明为output:directory("path")实现逻辑级互斥;需注意该操作会触发目录递归清理,可能破坏动态生成的中间文件。 snakemake本身不直接锁定整个输出目录,但可通过将目录声明为output:directory("pat...
Snakemake本身不直接“锁定目录”,但将目录声明为rule的output(使用directory())可间接实现排他性访问;需注意该操作会触发目录及其全部内容在执行前被清空,存在数据丢失风险。 snakemake本身不直接“锁定目录”,但将目录声明为rule的`output`(使用`direc...
python多进程死锁主因是模块顶层执行不兼容初始化操作,尤其spawn模式下需将queue、lock等对象创建及process启动置于ifname=='__main__':块内,并规避第三方库隐式全局初始化。 Python多进程启动时出现死锁,多数情况源于在主模块顶层(或if__name__=='...
python跨环境运行需控制依赖、规避平台差异、统一执行上下文:用pip-compile锁定版本,pathlib处理路径,纯python替代系统命令,显式声明python版本并矩阵测试。 Python代码跨环境运行不难,但容易因细节疏忽导致失败。核心在于控制依赖、规避平台差异、统一执行上下文。 依赖...
pandas.merge()需明确指定on或left_on/right_on以避免静默错误;how参数可能导致行数膨胀;须统一键列数据类型并处理nan;慎用suffixes和索引合并。 用pandas.merge()合并数据时,看似简单,但容易因参数理解偏差或数据隐含特征导致结果出错、丢失行、重复行...