忙中之余,还是挤挤了点点时间,在没有实物的条件下,用张纸在上边涂鸦涂鸦,出的 STC-AD采集中由于使用VCC作为电压基准带来的不便(数据飘阿飘),
STC的 AD 采样转换公式为 (10位下):1024*Vin/Vcc //Vin 输入电压 //Vcc MCU 电源电压
也就是这个改死的 Vcc 电源电压作为 AD的采样参考电压在般小应用的电源线根本就不能满足稳定性的要求,之前作过软件,使用算法,降低了,灵敏度来过滤这个数据发飘。
忙中找乐子就YY一个,假设有了一路基准电压之后求出电源电压,在求出其它几路AD的实际电压
我把一开始注意力集中在,1024*vin/vcc 整体上 得出一个 0.00488281 这样的数 之后在安基准反求出来的比例补偿回去
用Excel 例出数据, 看看样子可行是可行,但是这么长的小点点估计弱浮点运算能力的STC要跑得吐血了
| | | | | | |
1024.00000000 | * | vin | / | Vcc | | |
| | | | | | |
| | 1.25000000 | | 5.00000000 | | |
| | | | | | |
| | | | | | |
1024/5= | 204.80000000 | = | | | | |
5/1024= | 0.00488281 | | | | | |
| | | | | | |
5.00000000 | 1024.00000000 | 0.00488281 | | 0.00488281 | 0.00000000 | 0.00000000 |
5.00000000 | 1023.00000000 | 0.00488759 | | 0.00488281 | 1.00000000 | 0.00488281 |
5.00000000 | 1022.00000000 | 0.00489237 | | 0.00488281 | 2.00000000 | 0.00976562 |
5.00000000 | 1021.00000000 | 0.00489716 | | 0.00488281 | 3.00000000 | 0.01464843 |
5.00000000 | 1020.00000000 | 0.00490196 | | 0.00488281 | 4.00000000 | 0.01953124 |
这个数据没什么用还是上一点就算了···又长又乱 |
|
|
|
|
|
|
于是走简化方程式避开不必要的计算和:
基准电压结果重复的计算去中和结果的反求的计算
把 1024 *vin/Vcc 方程化 A*B/C=D
A=1024
B=Vin
C=vcc
D=采样结果
基准: A1*B1/C1=D1 反求C1 推出 A1*B1/D1=C1
待求: A2*B2/C2=D2 反求B1 推出 D2*C2/A2=B2
合为: D2*(A1*B1/D1)/A2=B2
因: A1=A2=A=1024 ,
中和为: D2*B1/D1=B2
从而大大的简化的MCU 的计算时间
D2*B1/D1=B2
D2=基准电压采样结果
B1=已知基准电压值(2.5V)
D1=目标AD采样结果
对于B1=2.5V 还可以 先放大10倍去除小数点,结果在除小或直接显示时处理小数点的显示位(处理小数点的显示位置更省MCU时间)
其实结果还是可预见到范围的,作了一个可能出现的结果表,直接先把数放大上去,就完全避开了MCU(STC)进入浮点运算。
又一次使用了仅为初中水平的数学解决了问题。
200字以内,仅用于支线交流,主线讨论请采用回复功能。