把阻值直接算成对应的ADC值,查表法,一步出结果!
这让我想起了在昨天调研中发现的问题
网上的资料通常是:
均匀步长生成温度数据,存储此时的ADC值。单片机通过二分迭代查表,搜索到匹配的ADC值,进而确定温度值左右两点,内插得到更准确的温度
而我最初的想法是:
生成均匀步长的ADC值(例如256个),记录每个值对应的温度数据。单片机通过数组直接访问温度值,或者提取ADC值左右的两点,内插得到更准确的温度
这两种,在应用上,孰优孰劣呢? VCC 发表于 2024-11-4 00:38
这让我想起了在昨天调研中发现的问题
网上的资料通常是:
Both work fine.
Usually a programmer might choose the one with the smallest table.
If your sensor is non-linear, you may take a 12b ADC value, but only want a 0-100'C display, so a table of 100 words can be searched to give nearest to temperature.
这是我的查表法,就是浪费空间。以前也是1度一个值,然后两度计算温度。
#include "config.h"
int code table_zuwen[]=
{
-98 , // 157
-97 , // 158
-96 , // 159
-94 , // 160
-93 , // 161
-92 , // 162
-90 , // 163
-89 , // 164
-88 , // 165
-86 , // 166
-85 , // 167
-84 , // 168
-82 , // 169
-81 , // 170
-80 , // 171
-78 , // 172
-77 , // 173
-76 , // 174
-74 , // 175
-73 , // 176
-72 , // 177
-71 , // 178
-69 , // 179
-68 , // 180
-67 , // 181
-66 , // 182
-64 , // 183
-63 , // 184
-62 , // 185
-61 , // 186
-59 , // 187
-58 , // 188
-57 , // 189
-56 , // 190
-54 , // 191
-53 , // 192
-52 , // 193
-51 , // 194
-50 , // 195
-48 , // 196
-47 , // 197
-46 , // 198
-45 , // 199
-44 , // 200
-43 , // 201
-41 , // 202
-40 , // 203
-39 , // 204
-38 , // 205
-37 , // 206
-36 , // 207
-34 , // 208
-33 , // 209
-32 , // 210
-31 , // 211
-30 , // 212
-29 , // 213
-28 , // 214
-26 , // 215
-25 , // 216
-24 , // 217
-23 , // 218
-22 , // 219
-21 , // 220
-20 , // 221
-19 , // 222
-17 , // 223
-16 , // 224
-15 , // 225
-14 , // 226
-13 , // 227
-12 , // 228
-11 , // 229
-10 , // 230
-9 , // 231
-8 , // 232
-6 , // 233
-5 , // 234
-4 , // 235
-3 , // 236
-2 , // 237
-1 , // 238
0 , // 239
0 , // 240
1 , // 241
2 , // 242
3 , // 243
4 , // 244
5 , // 245
6 , // 246
7 , // 247
8 , // 248
9 , // 249
11 , // 250
12 , // 251
13 , // 252
14 , // 253
15 , // 254
16 , // 255
17 , // 256
18 , // 257
19 , // 258
20 , // 259
21 , // 260
22 , // 261
23 , // 262
24 , // 263
25 , // 264
26 , // 265
27 , // 266
28 , // 267
29 , // 268
30 , // 269
31 , // 270
32 , // 271
33 , // 272
34 , // 273
35 , // 274
36 , // 275
37 , // 276
38 , // 277
39 , // 278
40 , // 279
41 , // 280
42 , // 281
43 , // 282
44 , // 283
45 , // 284
46 , // 285
47 , // 286
48 , // 287
49 , // 288
50 , // 289
51 , // 290
52 , // 291
53 , // 292
54 , // 293
55 , // 294
56 , // 295
56 , // 296
57 , // 297
58 , // 298
59 , // 299
60 , // 300
61 , // 301
62 , // 302
63 , // 303
64 , // 304
65 , // 305
66 , // 306
67 , // 307
68 , // 308
69 , // 309
70 , // 310
71 , // 311
72 , // 312
73 , // 313
74 , // 314
75 , // 315
75 , // 316
76 , // 317
77 , // 318
78 , // 319
79 , // 320
80 , // 321
81 , // 322
82 , // 323
83 , // 324
84 , // 325
85 , // 326
86 , // 327
87 , // 328
88 , // 329
88 , // 330
89 , // 331
90 , // 332
91 , // 333
92 , // 334
93 , // 335
94 , // 336
95 , // 337
96 , // 338
97 , // 339
98 , // 340
99 , // 341
99 , // 342
100 , // 343
101 , // 344
102 , // 345
103 , // 346
104 , // 347
105 , // 348
106 , // 349
107 , // 350
108 , // 351
109 , // 352
109 , // 353
110 , // 354
111 , // 355
112 , // 356
113 , // 357
114 , // 358
115 , // 359
116 , // 360
117 , // 361
118 , // 362
118 , // 363
119 , // 364
120 , // 365
121 , // 366
122 , // 367
123 , // 368
124 , // 369
125 , // 370
126 , // 371
127 , // 372
127 , // 373
128 , // 374
129 , // 375
130 , // 376
131 , // 377
132 , // 378
133 , // 379
134 , // 380
135 , // 381
135 , // 382
136 , // 383
137 , // 384
138 , // 385
139 , // 386
140 , // 387
141 , // 388
142 , // 389
143 , // 390
143 , // 391
144 , // 392
145 , // 393
146 , // 394
147 , // 395
148 , // 396
149 , // 397
150 , // 398
150 , // 399
151 , // 400
152 , // 401
153 , // 402
154 , // 403
155 , // 404
156 , // 405
157 , // 406
158 , // 407
158 , // 408
159 , // 409
160 , // 410
161 , // 411
162 , // 412
163 , // 413
164 , // 414
165 , // 415
165 , // 416
166 , // 417
167 , // 418
168 , // 419
169 , // 420
170 , // 421
171 , // 422
172 , // 423
172 , // 424
173 , // 425
174 , // 426
175 , // 427
176 , // 428
177 , // 429
178 , // 430
178 , // 431
179 , // 432
180 , // 433
181 , // 434
182 , // 435
183 , // 436
184 , // 437
185 , // 438
186 , // 439
186 , // 440
187 , // 441
188 , // 442
189 , // 443
190 , // 444
191 , // 445
192 , // 446
192 , // 447
193 , // 448
194 , // 449
195 , // 450
196 , // 451
197 , // 452
198 , // 453
199 , // 454
199 , // 455
200 , // 456
201 , // 457
202 , // 458
203 , // 459
204 , // 460
205 , // 461
206 , // 462
206 , // 463
207 , // 464
208 , // 465
209 , // 466
210 , // 467
211 , // 468
212 , // 469
213 , // 470
213 , // 471
214 , // 472
215 , // 473
216 , // 474
217 , // 475
218 , // 476
219 , // 477
220 , // 478
220 , // 479
221 , // 480
222 , // 481
223 , // 482
224 , // 483
225 , // 484
226 , // 485
227 , // 486
227 , // 487
228 , // 488
229 , // 489
230 , // 490
231 , // 491
232 , // 492
233 , // 493
234 , // 494
235 , // 495
235 , // 496
236 , // 497
237 , // 498
238 , // 499
239 , // 500
240 , // 501
241 , // 502
242 , // 503
242 , // 504
243 , // 505
244 , // 506
245 , // 507
246 , // 508
247 , // 509
248 , // 510
249 , // 511
250 , // 512
250 , // 513
251 , // 514
252 , // 515
253 , // 516
254 , // 517
255 , // 518
256 , // 519
257 , // 520
258 , // 521
258 , // 522
259 , // 523
260 , // 524
261 , // 525
262 , // 526
263 , // 527
264 , // 528
265 , // 529
266 , // 530
267 , // 531
267 , // 532
268 , // 533
269 , // 534
270 , // 535
271 , // 536
272 , // 537
273 , // 538
274 , // 539
275 , // 540
276 , // 541
276 , // 542
277 , // 543
278 , // 544
279 , // 545
280 , // 546
281 , // 547
282 , // 548
283 , // 549
284 , // 550
285 , // 551
286 , // 552
286 , // 553
287 , // 554
288 , // 555
289 , // 556
290 , // 557
291 , // 558
292 , // 559
293 , // 560
294 , // 561
295 , // 562
296 , // 563
297 , // 564
297 , // 565
298 , // 566
299 , // 567
300 , // 568
301 , // 569
302 , // 570
303 , // 571
304 , // 572
305 , // 573
306 , // 574
307 , // 575
308 , // 576
309 , // 577
309 , // 578
310 , // 579
311 , // 580
312 , // 581
313 , // 582
314 , // 583
315 , // 584
316 , // 585
317 , // 586
318 , // 587
319 , // 588
320 , // 589
321 , // 590
322 , // 591
323 , // 592
324 , // 593
325 , // 594
326 , // 595
327 , // 596
327 , // 597
328 , // 598
329 , // 599
330 , // 600
331 , // 601
332 , // 602
333 , // 603
334 , // 604
335 , // 605
336 , // 606
337 , // 607
338 , // 608
339 , // 609
340 , // 610
341 , // 611
342 , // 612
343 , // 613
344 , // 614
345 , // 615
346 , // 616
347 , // 617
348 , // 618
349 , // 619
350 , // 620
351 , // 621
352 , // 622
353 , // 623
354 , // 624
355 , // 625
356 , // 626
357 , // 627
358 , // 628
359 , // 629
360 , // 630
361 , // 631
362 , // 632
363 , // 633
364 , // 634
365 , // 635
366 , // 636
367 , // 637
368 , // 638
369 , // 639
370 , // 640
371 , // 641
372 , // 642
373 , // 643
374 , // 644
375 , // 645
376 , // 646
377 , // 647
378 , // 648
379 , // 649
380 , // 650
381 , // 651
382 , // 652
383 , // 653
384 , // 654
385 , // 655
386 , // 656
387 , // 657
388 , // 658
389 , // 659
390 , // 660
392 , // 661
393 , // 662
394 , // 663
395 , // 664
396 , // 665
397 , // 666
398 , // 667
399 , // 668
400 , // 669
401 , // 670
402 , // 671
403 , // 672
404 , // 673
405 , // 674
406 , // 675
408 , // 676
409 , // 677
410 , // 678
411 , // 679
412 , // 680
413 , // 681
414 , // 682
415 , // 683
416 , // 684
417 , // 685
418 , // 686
420 , // 687
421 , // 688
422 , // 689
423 , // 690
424 , // 691
425 , // 692
426 , // 693
427 , // 694
429 , // 695
430 , // 696
431 , // 697
432 , // 698
433 , // 699
434 , // 700
435 , // 701
436 , // 702
437 , // 703
438 , // 704
439 , // 705
440 , // 706
441 , // 707
442 , // 708
444 , // 709
445 , // 710
446 , // 711
448 , // 712
449 , // 713
450 , // 714
452 , // 715
453 , // 716
454 , // 717
455 , // 718
456 , // 719
458 , // 720
459 , // 721
460 , // 722
461 , // 723
462 , // 724
464 , // 725
465 , // 726
466 , // 727
467 , // 728
468 , // 729
470 , // 730
471 , // 731
472 , // 732
473 , // 733
475 , // 734
476 , // 735
477 , // 736
478 , // 737
480 , // 738
481 , // 739
482 , // 740
483 , // 741
485 , // 742
486 , // 743
487 , // 744
488 , // 745
490 , // 746
491 , // 747
492 , // 748
494 , // 749
495 , // 750
496 , // 751
498 , // 752
499 , // 753
500 , // 754
502 , // 755
503 , // 756
504 , // 757
505 , // 758
507 , // 759
508 , // 760
510 , // 761
511 , // 762
512 , // 763
514 , // 764
515 , // 765
516 , // 766
518 , // 767
519 , // 768
520 , // 769
522 , // 770
523 , // 771
525 , // 772
526 , // 773
527 , // 774
529 , // 775
530 , // 776
532 , // 777
533 , // 778
535 , // 779
536 , // 780
537 , // 781
539 , // 782
540 , // 783
542 , // 784
543 , // 785
545 , // 786
546 , // 787
548 , // 788
549 , // 789
551 , // 790
552 , // 791
554 , // 792
555 , // 793
557 , // 794
558 , // 795
560 , // 796
561 , // 797
563 , // 798
564 , // 799
566 , // 800
567 , // 801
569 , // 802
571 , // 803
572 , // 804
574 , // 805
575 , // 806
577 , // 807
578 , // 808
580 , // 809
582 , // 810
583 , // 811
585 , // 812
587 , // 813
588 , // 814
590 , // 815
591 , // 816
593 , // 817
595 , // 818
597 , // 819
598 , // 820
600 , // 821
602 , // 822
603 , // 823
605 , // 824
607 , // 825
608 , // 826
610 , // 827
612 , // 828
614 , // 829
616 , // 830
617 , // 831
619 , // 832
621 , // 833
623 , // 834
625 , // 835
626 , // 836
628 , // 837
630 , // 838
632 , // 839
634 , // 840
636 , // 841
638 , // 842
639 , // 843
641 , // 844
643 , // 845
645 , // 846
647 , // 847
649 , // 848
651 , // 849
653 , // 850
655 , // 851
657 , // 852
659 , // 853
661 , // 854
663 , // 855
665 , // 856
667 , // 857
669 , // 858
671 , // 859
673 , // 860
675 , // 861
677 , // 862
680 , // 863
682 , // 864
684 , // 865
686 , // 866
688 , // 867
690 , // 868
693 , // 869
695 , // 870
697 , // 871
699 , // 872
702 , // 873
704 , // 874
706 , // 875
708 , // 876
711 , // 877
713 , // 878
715 , // 879
718 , // 880
720 , // 881
723 , // 882
725 , // 883
727 , // 884
730 , // 885
732 , // 886
735 , // 887
737 , // 888
740 , // 889
743 , // 890
745 , // 891
748 , // 892
750 , // 893
753 , // 894
756 , // 895
758 , // 896
761 , // 897
764 , // 898
766 , // 899
769 , // 900
772 , // 901
775 , // 902
778 , // 903
780 , // 904
783 , // 905
786 , // 906
789 , // 907
792 , // 908
795 , // 909
798 // 910
};
int R_WENDU(unsigned int ADC)
{
// ADC=ADC>>2;
//ADC=1024-ADC;
if(ADC>10)//判断AD值是否在温度范围内
{
return table_zuwen;
}
else
{
return -99;
}
}
VCC 发表于 2024-11-3 14:49
后来想到,能不能用一个3次或4次函数来拟合这个曲线,从而大幅减轻CPU的计算工作量?
用Excel趋势线功能 ...
高次函数用这个拟合
NTC 发表于 2024-11-5 08:22
高次函数用这个拟合
本来一个对数就已经很让单片机吃力了,你居然要用4个对数{:5_290:} VCC 发表于 2024-11-5 09:50
本来一个对数就已经很让单片机吃力了,你居然要用4个对数
闲着也是闲着,吃干榨净 {:4_245:} NTC 发表于 2024-11-5 12:03
闲着也是闲着,吃干榨净
哈哈哈,确实,只要算力有富余,就可以使用
不过热敏电阻的公式确实只需要一个对数,不需要3个这么多
所以你的C和D都是0哈哈哈
感谢各位大佬帮助{:4_174:} 看起来还很复杂。。。。。。。。。。。。。。。 本帖最后由 13655175864 于 2024-11-13 19:31 编辑
一开始走进误区了,找了好多转换工具都不实用。研究了下前面的留言,其实根据温度阻值表(网上容易搜到),自己又写个函数转换下就可以{:4_167:} 这样换成其他的热敏电阻或上下拉电阻不是标准阻值时也能方便的得出结果。这是搞出来的两种简单的查表法数据。
// /*************************************
// 分辨率4096,B值 3950
// NTC接地时 插值运输xx-1,要改为xx+1
// NTC阻值与温度关系表
// 5v---NTC(±1%) ---R(10K±1%) ---GND
// **************************************/
const unsigned int code RT10K3950_Htab[] = {
219,232,246,260,275,291,308,325,343,362, //-30-21
382,402,424,446,469,493,544,570,598,626, //-20-11
656,686,717,749,782,816,851,886,922,960, //-10-1
998,1036,1076,1116,1157,1198,1240,1283,1326,1369, //0— 9
1413,1458,1502,1547,1593,1638,1684,1729,1775,1821, //10 19
1866,1912,1957,2002,2048,2092,2137,2181,2225,2268, //20 29
2311,2353,2395,2436,2477,2517,2557,2596,2634,2672, //30 39
2709,2745,2781,2816,2850,2884,2916,2949,2980,3011, //40 49
3041,3070,3099,3127,3154,3180,3206,3231,3255,3279, //50 59
3303,3325,3348,3368,3390,3409,3429,3448,3467,3485, //60 69
3502,3519,3536,3552,3567,3582,3597,3611,3625,3638, //70 79
3651,3664,3676,3688,3699,3710,3721,3732,3742,3752, //80 89
3761,3770,3779,3788,3797,3805,3813,3820,3828,3835, //90 99
3842,3849,3855,3862,3868, //100105
};
// /*************************************
// 分辨率4096,B值 3950
// NTC接地时 插值运输xx-1,要改为xx+1
// NTC阻值与温度关系表
// 5v---R(10K±1%)---NTC(±1%)---GND
// |
// ADC端子
// **************************************/
const unsigned int code RT10K3950_Ltab[] = {
3876,3863,3849,3835,3820,3804,3787,3770,3752,3733, //-30-21
3713,3693,3671,3649,3626,3602,3577,3551,3525,3497, //-20-11
3469,3439,3409,3378,3346,3313,3279,3244,3209,3173, //-10-1
3135,3097,3059,3019,2979,2938,2897,2855,2812,2769, //0— 9
2726,2682,2637,2593,2548,2502,2457,2411,2366,2320, //10 19
2274,2229,2183,2138,2093,2048,2003,1958,1914,1870, //20 29
1827,1784,1742,1700,1659,1618,1578,1538,1499,1461, //30 39
1423,1386,1350,1314,1279,1245,1211,1179,1146,1115, //40 49
1084,1054,1025,996,968,941,915,889,864,840, //50 59
816,792,770,747,727,705,686,666,647,628, //60 69
610,593,576,559,543,528,513,498,484,470, //70 79
457,444,431,419,407,396,385,374,363,353, //80 89
343,334,325,316,307,298,290,282,275,267, //90 99
260,253,246,240,233,227, //100105
};
页:
1
[2]