本项目原本设计的是一个毫欧表,为了测试C8051F350的24bit ADC,顺便兼容了一个电压表功能。一个直流电压表最关键的有3个部分:模拟前端、ADC和基准电压。这里就做简短描述,详解附件的更详细的图文讲解。
五位半电压表参数特性:
- 100mV/1000mV/10V/100V四个档位,大概有50%超量程余量
- 五位半显示,最大150000 count
- 支持任意值校正,通过面板按钮即可校正。精度保守一点吧,0.01% Reading+4 LSB,后面有测试图
- Fast/Slow两档速度,Fast:10次/秒,Slow:1次/秒
- 数据从USB UART输出,波特率115200(目前只输出,不能从上位机控制)
- 默认5分钟自动关机,可以关闭该功能
- 使用一节锂电池供电,支持从USB充电
- 支持背光,可以关闭
- 工作电流:17mA(背光关闭);44mA(背光打开)。一节14500(5号)锂电池可以连续工作1.5~2天(背光关闭)
五位半电压表实物截图:
模拟前端
模拟前端肩负了几个重要任务:输入信号的衰减或者放大/低通滤波/阻抗变换/防护。
大家都知道一般来说ADC只有一个量程,台式的一般是10/20V,手持的三位半或者四位半是200mV,这个称为基本量程,也是精度最高的量程,其他的量程都要把输入信号放大或者衰减到这个量程再来测量。这个表的基本量程是1V,而且由于MCU内置了PGA,因此模拟前端仅需要考虑衰减。
ADC
使用C8051F350内置的24bit ADC,这个在毫欧表里面已经说的比较多了。这个表再重温一下,在PGA=1,10Hz的条件下,RMS noise是2.38uV,峰峰值 noise为2.38*6.6=15.7uV,也就是1V档的1.5个LSB(五位半),大概看到两个数在跳(极端情况可能3个),在Slow模式下,把10个读数平均,提升log(10)/log(4)=1.66bit,2^1.66=3.16LSB,因此在Slow模式基本上不会跳数了(当然,由于舍入问题导致的最后一位跳是不能避免的)。
基准电压
这里可以使用C8051F350的内置基准(最大15ppm温度系数),或者外部基准可以用REF5025(工业级:2.5ppm(典型)/3ppm(最大)温度系数;商业级:3/8ppm)或者MAX6192(A级:2/5ppm;B级:4/10ppm;C级8/25ppm)。
使用内置和外置基准的frimware是不一样的,不能搞错。
1