聚豐項(xiàng)目 > 使用AB32VG1開發(fā)測(cè)溫系統(tǒng)
這是我第一次使用RT-Thread Studio也是第一次使用AB32VG1芯片,主要是之前我們公司因?yàn)閚ordic的nRF52832斷貨,有意讓我們選型國(guó)產(chǎn)藍(lán)牙芯片替代。因?yàn)槲覀冎饕囊笾笜?biāo)是8路以上ADC,6路PWM,總共32個(gè)IO以上,所以這個(gè)芯片是比較合適的。這個(gè)芯片也剛好是48PIN封裝。所以再適合不過了。 本次開發(fā)板的使用,因?yàn)闀簳r(shí)沒有項(xiàng)目直接使用,但是需要開發(fā)一些測(cè)試工具還是需要板子的,所以本次板子設(shè)計(jì)最開始的時(shí)候,預(yù)先設(shè)想是使用來開發(fā)一款可以測(cè)試溫度,把溫度數(shù)據(jù)從USB或者藍(lán)牙發(fā)送到電腦或者手機(jī)中,然后通過APP對(duì)被測(cè)物體進(jìn)行溫度調(diào)整。所以下面就是我使用過程的體驗(yàn)。
塵子
分享塵子
團(tuán)隊(duì)成員
龍智 軟件工程師
本次使用到的除了開發(fā)板上的資源外,外面的資源比較少,就一個(gè)分壓電阻加上一個(gè)溫感電阻(NTC)。當(dāng)溫度升高之后,NTC的阻值會(huì)降低。雖然不是直線的,但是可以查表就直接得到NTC直接對(duì)應(yīng)的溫度值。通過讀取ADC的分壓值就可以計(jì)算當(dāng)前NTC的值就可以直接查表算出當(dāng)前測(cè)試到的溫度值。原理圖如下
其中總體電路包含如下功能部分:
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測(cè)溫
{
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;
}
程序流程圖如下:
通過本次嘗試使用,主要是熟悉了RT-Thread這個(gè)系統(tǒng),所以設(shè)計(jì)了一個(gè)比較簡(jiǎn)單的應(yīng)用。下一步熟悉了之后,會(huì)加入溫度自動(dòng)矯正等功能。
通過模擬串口示波器可以讀取溫度值的變化曲線。如下圖:
上圖中的左邊圖是被測(cè)設(shè)備內(nèi)部的溫度曲線以及運(yùn)算的一些邏輯數(shù)據(jù),右邊圖是我們使用AB32VG1讀取到的溫度曲線。通過對(duì)比我們可以知道內(nèi)部配置的溫度和外部實(shí)際得到的溫度是有差異的。找到規(guī)律之后我們就可以在軟件上進(jìn)行矯正。
(1.10 MB)下載