惠斯通电桥与热电阻的实际应用 您所在的位置:网站首页 二线制测电阻 惠斯通电桥与热电阻的实际应用

惠斯通电桥与热电阻的实际应用

2024-05-20 11:27| 来源: 网络整理| 查看: 265

  本文讨论的是惠斯通电桥与热电阻的实际应用,不讨论理论知识,关于惠斯通电桥的理论知识请看这篇文章:https://zhuanlan.zhihu.com/p/267085334

1. 四分之一桥

  使用Multisim仿真,搭建一个电桥,其中R2,R3,R4都为120Ω,R1是阻值随温度变化的电阻,假设R1的电阻为250Ω(因为温度变化导致电阻增加了130Ω),假设Vs为2.5V,此时根据公式Vo = Vs * (R2 / (R1 + R2) - R4 / (R3 + R4))计算得出,Vo ≈ -439mV,仿真结果如下:

  

  仿真结果与计算值相同。意思就是如果我们知道Vo的电压为-439mV,那么我们就知道R1增加了130Ω,进而可以算出温度变化。

  但是实际情况往往是R1会拉很长的线连出去,线上也是有电阻的,并且线上的电阻也是随温度变化的(任何材料的电阻都会随温度变化而变化),那么实际的模型就会变成下面的模型:

  

  a等效线上的电阻,此时Vo为-461mV,我们认为R1的电阻增加了140Ω,而实际上只增加了130Ω,有10Ω是导线引入的,这样就带来了误差。

  有一个方法可以减小这种误差,在R1的其中一端引出2根导线,按照下图的接法连接:

  

  这样得到的Vo是-428mV,当R2=R3=R4时,这3种情况Vo的计算方法分别为:

  

   结果是:

  

   并且通过仿真也验证了,当R1=3R2时,2根线和3根线的误差相同,如下图:

  

  如果传感器接到R2的位置,用同样的方法计算得出,当R2≤3R1时,接3根线的误差才会比接2根线的误差更小,R3,R4同理。

  也就是说,“使用四分之一桥,3根线的接法误差比2根线的接法误差更小”这句话是有前提条件的,前提条件就是变化的电阻不能比其他电阻的3倍要大,因此必须根据温度的变化范围去选择合适的阻值,否则效果会更差。

  在实际使用时按照理想情况去计算,无论将变化的电阻接到R1还是R2的位置,Vo的值与可变电阻之间的关系都是反比例函数,并且接R1和接R2时他们的导数互为相反数,结论就是将任何一个电阻充当可变电阻,它们的精度都是相同的。因此不需要考虑到底将桥中哪个电阻充当可变电阻,因为它们都是一样的。

  并且根据反比例函数的性质可以知道,当电阻的值越大时,导数的绝对值越小,意味着电桥(Vo)对电阻的变化越不敏感(电桥中任何一个电阻都是如此)。因此如果想要电桥的精度更高,那么电阻的选取要尽可能小,但同时要满足可变电阻最大值的3倍比其他固定电阻的值要大。

2. 热电阻温度与阻值计算

  先说一下热电阻的型号定义,以PT100举例,PT指的是铂,100指的是该电阻在0℃时呈现的阻值为100Ω,那么CU50指的就是该电阻的材料是铜,在0℃时的阻值为50Ω。

  铂热电阻(常见的如PT100,PT1000等)温度与阻值的关系为 RT = R0(1 + AT + BT² + C(T-100)T³) ,铜热电阻(常见的有CU50等)温度与阻值的关系为 RT = R0(1 + AT + BT(T-100) + C(T-100)T²),其中R0表示该电阻在0℃时的阻值,单位Ω,对于不同的电阻A,B,C的值会不同,如下:

  PT100 PT1000 CU50 R0 100 1000 50 A 0.0039083 0.0038623139728 0.00428 B -0.0000005775 -0.00000065314932626 -0.0000000931 C

当T≤0时 -0.000000000004183

当T>0时,0

0 0.00000000123

  网上的那些分度表都是用这个公式生成的,下面的程序可以直接生成这3种型号的分度表:

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 /* 定义热电阻的型号 */ 9 //char RES_TYPE[16] = "PT100"; 10 //char RES_TYPE[16] = "PT1000"; 11 char RES_TYPE[16] = "CU50"; 12 13 /** 14 * \brief 铂热电阻温度与阻值的关系为 RT = R0(1 + AT + BT² + C(T-100)T³) 15 * 铜热电阻温度与阻值的关系为 RT = R0(1 + AT + BT(T-100) + C(T-100)T²) 16 * 其中R0表示该电阻在0℃时的阻值,单位Ω 17 * 对于不同的电阻A,B,C的值会不同 18 */ 19 20 int main(int argc, const char *argv[]) 21 { 22 double R0, A, B, C; 23 double min_t, max_t, step; /* min_t是最小测量温度,max_t是最大测量温度,step是温度步长 */ 24 double result = 0; 25 double i, j; 26 27 int k; 28 int fd; 29 char buff[256] = { 0 }; 30 char acc[16] = { 0 }; /* 打印精度 */ 31 32 if (argc == 2) { 33 strcpy(RES_TYPE, argv[1]); 34 } 35 36 if (!strcmp(RES_TYPE, "PT100")) { 37 R0 = 100; 38 A = 0.0039083; 39 B = -0.0000005775; 40 C = -0.000000000004183; 41 min_t = -200; 42 max_t = 660; 43 step = 1; 44 strcpy(acc, "%.02f,"); /* 保留2位小数 */ 45 } else if (!strcmp(RES_TYPE, "PT1000")) { 46 R0 = 1000; 47 A = 0.0038623139728; 48 B = -0.00000065314932626; 49 C = 0; 50 min_t = -50; 51 max_t = 300; 52 step = 0.1; 53 strcpy(acc, "%.03f,"); /* 保留3位小数 */ 54 } else if (!strcmp(RES_TYPE, "CU50")) { 55 R0 = 50; 56 A = 0.00428; 57 B = -0.0000000931; 58 C = 0.00000000123; 59 min_t = -50; 60 max_t = 150; 61 step = 1; 62 strcpy(acc, "%.03f,"); /* 保留3位小数 */ 63 } else { 64 printf("暂不支持该型号!\n"); 65 return 0; 66 } 67 68 //printf("A = %f\nB = %f\nC=%f\n", A, B, C); //可以看浮点数有截断误差 69 70 strcpy(buff, RES_TYPE); 71 strcat(buff, "热电阻常用阻值对应表.csv"); 72 fd = open(buff, O_CREAT | O_RDWR | O_TRUNC, 0666); 73 if (fd < 0) { 74 printf("open failed\n"); 75 return 0; 76 } 77 memset(buff, 0, sizeof(buff)); 78 79 /* 写入横轴 */ 80 strcpy(buff, "温度℃,"); 81 write(fd, buff, strlen(buff)); 82 for (k = 0; k < 10; k++) { 83 sprintf(buff, "%f,", k*step); 84 write(fd, buff, strlen(buff)); 85 } 86 write(fd, "\r\n", 2); 87 88 for (i = min_t; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有