聚丰项目 > 使用AB32VG1开发测温系统

使用AB32VG1开发测温系统

这是我第一次使用RT-Thread Studio也是第一次使用AB32VG1芯片,主要是之前我们公司因为nordic的nRF52832断货,有意让我们选型国产蓝牙芯片替代。因为我们主要的要求指标是8路以上ADC,6路PWM,总共32个IO以上,所以这个芯片是比较合适的。这个芯片也刚好是48PIN封装。所以再适合不过了。 本次开发板的使用,因为暂时没有项目直接使用,但是需要开发一些测试工具还是需要板子的,所以本次板子设计最开始的时候,预先设想是使用来开发一款可以测试温度,把温度数据从USB或者蓝牙发送到电脑或者手机中,然后通过APP对被测物体进行温度调整。所以下面就是我使用过程的体验。

尘子 尘子

分享
0 喜欢这个项目
团队介绍

尘子 尘子

团队成员

龙智 软件工程师

分享
项目简介
这是我第一次使用RT-Thread Studio也是第一次使用AB32VG1芯片,主要是之前我们公司因为nordic的nRF52832断货,有意让我们选型国产蓝牙芯片替代。因为我们主要的要求指标是8路以上ADC,6路PWM,总共32个IO以上,所以这个芯片是比较合适的。这个芯片也刚好是48PIN封装。所以再适合不过了。 本次开发板的使用,因为暂时没有项目直接使用,但是需要开发一些测试工具还是需要板子的,所以本次板子设计最开始的时候,预先设想是使用来开发一款可以测试温度,把温度数据从USB或者蓝牙发送到电脑或者手机中,然后通过APP对被测物体进行温度调整。所以下面就是我使用过程的体验。
硬件说明

本次使用到的除了开发板上的资源外,外面的资源比较少,就一个分压电阻加上一个温感电阻(NTC)。当温度升高之后,NTC的阻值会降低。虽然不是直线的,但是可以查表就直接得到NTC直接对应的温度值。通过读取ADC的分压值就可以计算当前NTC的值就可以直接查表算出当前测试到的温度值。原理图如下

NTC.jpg

其中总体电路包含如下功能部分:

功能电路图.jpg

软件说明

NTC的温度值表:

const uint16_t list_N_V[316] =

{

2993, 2993, 2992, 2992, 2992, 2991, 2991, 2990, 2990, 2989,//10

2988, 2988, 2987, 2987, 2986, 2985, 2984, 2983, 2983, 2982,//20

2981, 2980, 2979, 2978, 2977, 2975, 2974, 2973, 2972, 2970,//30

2969, 2967, 2966, 2964, 2963, 2961, 2959, 2957, 2955, 2953,//40

2951, 2949, 2946, 2944, 2942, 2939, 2936, 2934, 2931, 2928,//50

2925, 2921, 2918, 2914, 2911, 2907, 2903, 2899, 2895, 2890,//60

2886, 2881, 2876, 2871, 2866, 2860, 2855, 2849, 2843, 2837,//70

2831, 2824, 2818, 2811, 2803, 2796, 2788, 2781, 2773, 2764,//80

2756, 2747, 2738, 2729, 2719, 2709, 2699, 2689, 2679, 2668,//90

2657, 2645, 2634, 2622, 2610, 2598, 2585, 2572, 2559, 2545,//100

2532, 2518, 2504, 2489, 2474, 2459, 2444, 2429, 2413, 2397,//110

2380, 2364, 2347, 2330, 2313, 2295, 2277, 2259, 2241, 2223,//120

2204, 2185, 2165, 2145, 2125, 2105, 2085, 2064, 2044, 2023,//130

2002, 1981, 1960, 1938, 1917, 1895, 1874, 1852, 1830, 1809,//140

1787, 1765, 1743, 1721, 1699, 1677, 1655, 1633, 1612, 1590,//150

1555, 1520, 1499, 1478, 1457, 1436, 1415, 1395, 1374, 1354,//160

1333, 1313, 1293, 1273, 1254, 1234, 1215, 1196, 1177, 1158,//170

1139, 1121, 1102, 1084, 1067, 1049, 1031, 1014, 997 , 980 ,//180

964 , 948 , 932 , 916 , 900 , 885 , 870 , 855 , 840 , 826 ,//190

811 , 797 , 783 , 769 , 756 , 743 , 729 , 716 , 704 , 691 ,//200

679 , 667 , 655 , 643 , 631 , 620 , 609 , 598 , 587 , 576 ,//210

566 , 556 , 546 , 536 , 526 , 516 , 507 , 498 , 489 , 480 ,//220

471 , 462 , 454 , 445 , 437 , 429 , 422 , 414 , 406 , 399 ,//230

392 , 384 , 378 , 371 , 364 , 357 , 351 , 345 , 338 , 332 ,//240

326 , 320 , 314 , 309 , 303 , 298 , 293 , 287 , 282 , 277 ,//250

272 , 268 , 263 , 258 , 254 , 249 , 245 , 240 , 236 , 232 ,//260

228 , 224 , 220 , 216 , 212 , 209 , 205 , 202 , 198 , 195 ,//270

191 , 188 , 185 , 182 , 179 , 176 , 173 , 170 , 167 , 164 ,//280

161 , 159 , 156 , 153 , 151 , 148 , 146 , 143 , 141 , 139 ,//290

136 , 134 , 132 , 130 , 128 , 126 , 124 , 122 , 120 , 118 ,//300

116 , 114 , 112 , 110 , 109 , 107 , 105 , 104 , 102 , 100 ,//310

99 , 97 , 96 , 94 , 93 , 91 ,//316

};

查表算法:

int uGetHeaterTemperature(uint8_t ch)//NTC测温

{

int data_len,x=0;

static uint16_t Adcn;

data_len=316;

Adcn = userADC_var.ADC_uDATA[ch+2];

if((Adcn<=list_N_V[0])&&(Adcn>=list_N_V[data_len-1]))

{

for(x=0;x<data_len;x++)

{

if(Adcn>list_N_V[x])

{

break;

}

}

}

return x;

程序流程图如下:

image.png

通过本次尝试使用,主要是熟悉了RT-Thread这个系统,所以设计了一个比较简单的应用。下一步熟悉了之后,会加入温度自动矫正等功能。

演示效果

通过模拟串口示波器可以读取温度值的变化曲线。如下图:

微信图片_20211213225101.jpg

上图中的左边图是被测设备内部的温度曲线以及运算的一些逻辑数据,右边图是我们使用AB32VG1读取到的温度曲线。通过对比我们可以知道内部配置的温度和外部实际得到的温度是有差异的。找到规律之后我们就可以在软件上进行矫正。

附件

(1.10 MB)下载

评论区(0 )