新型压阻式压力传感器调理电路的设计建模【附代码】
✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅ 如需沟通交流扫描文章底部二维码。1二硫化钼柔性压阻传感器光电SPICE建模针对柔性压阻传感器中二硫化钼异质结构的光学响应特性建立了包含光生载流效应的SPICE模型。模型分为力敏电阻部分和光电效应部分力敏电阻部分基于经典的压阻效应等效电路电阻值随压力呈指数衰减关系零压电阻15kΩ满量程500kPa时电阻降至2.4kΩ光电部分由光控电流源模拟电流大小遵循I_phR_λ·P_opt其中响应度R_λ0.42A/W。通过参数提取和拟合模型在LTspice中仿真与实测I-V特性对比相对误差3.2%。该模型为后续信号调理电路提供了真实的前端传感器仿真环境。2斩波PGA与10位SAR ADC电路设计为放大惠斯通电桥输出的差分弱信号满量程±25mV设计了一种带斩波调制的可编程增益放大器PGA。采用经典三运放仪表放大器结构增益由数字控制选择1、2、4、8、16、32、64、128倍使用反馈电阻网络实现。输入级加入1kHz斩波开关将低频闪烁噪声调制到高频经后续低通滤波后噪声电压降至1.2μVrms。ADC采用10位逐次逼近结构采样率50kSPS内部DAC使用高6低4的桥接电容阵列总电容仅需79个单位电容。采样开关使用栅压自举结构以提高线性度仿真有效位数达到9.9位功耗1.2mW。版图设计采用0.18μm CMOS工艺核心面积0.24mm²。3传感器零点、灵敏度二阶温度补偿与非线性三阶校准算法针对压阻式传感器固有的温度漂移和非线性设计了数字校准算法。零点漂移与温度关系使用二阶多项式补偿Offset(T)a0a1·Ta2·T²通过三个温度点-20℃、25℃、70℃测量标定系数。灵敏度温度漂移同样二阶补偿。非线性误差则采用三阶多项式校正输出V_out_correctedc0c1·V_rawc2·V_raw²c3·V_raw³系数通过最小二乘拟合多个标准压力点获得。该算法在Xilinx Spartan-6 FPGA上实现占用Slice LUT 872个。经过校准后传感器在-20℃~85℃范围内输出精度从不校准时的27.25%FS优化至4.63%FS提高了约6倍的精度。整体调理电路与传感器联合测试系统线性度优于0.08%满足高端工业需求。import numpy as np from scipy.optimize import curve_fit # 压阻传感器SPICE模型参数提取拟合 def mos2_resistance_pressure(pressure_kPa): R0 15e3 # 零压电阻 k -0.004 # 衰减系数 return R0 * np.exp(k * pressure_kPa) # PGA增益实现 class PGA: def __init__(self): self.gains [1,2,4,8,16,32,64,128] self.current_gain 1 def set_gain_by_code(self, code): self.current_gain self.gains[code] def amplify(self, diff_voltage): return diff_voltage * self.current_gain # SAR ADC行为级仿真 def sar_adc_convert(vin, vref1.8, bits10): comparator_offset 0.0002 dout 0 vtest 0 for i in reversed(range(bits)): vtest vref / (2**(bits-i)) if vin vtest comparator_offset: dout 1 i else: vtest - vref / (2**(bits-i)) return dout # 二阶温度补偿系数计算 def calibrate_temperature_offset(temp, zero_offset): def model(T, a0, a1, a2): return a0 a1*T a2*T**2 params, _ curve_fit(model, temp, zero_offset) return params # 三阶非线性校正 def nonlinear_correct(raw, coeff): c0,c1,c2,c3 coeff return c0 c1*raw c2*raw**2 c3*raw**3 # 主校准流程 def full_calibration(raw_data, temp, pressures_known): # 温度补偿 offsets raw_data[:3] # 三个温度零点 coeff_temp calibrate_temperature_offset(temp, offsets) # 非线性校正 corrected nonlinear_correct(raw_data, [0,1,0.001, -0.0001]) # 计算误差 error_fs np.max(np.abs(corrected - pressures_known)) / (max(pressures_known)-min(pressures_known)) * 100 return corrected, error_fs如有问题可以直接沟通
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2575019.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!