[开发工具] 【新定义MCU开发板测评】 + ADC数据采集与温度检测

[复制链接]
 楼主| jinglixixi 发表于 2022-11-22 22:02 | 显示全部楼层 |阅读模式
<
本帖最后由 jinglixixi 于 2022-11-22 22:04 编辑

#申请原创#

新定义NBK-RD8x3x 开发板内部具有ADC数据采集功能,将它与LCD屏相结合就可进行电压测量。
以检测通道2的电压为例,其程序如下:
  1. void main(void)
  2. {
  3.     unsigned int ADCValue = 0x0000;
  4.          P0CON = 0xFF;
  5.          P0PH  = 0x00;
  6.          P1CON = 0x00;
  7.          P1PH  = 0x00;
  8.          P2CON = 0xFF;
  9.          P2PH  = 0x00;
  10.          P3CON = 0xFF;
  11.          P3PH  = 0x00;
  12.          P4CON = 0xFF;
  13.          P4PH  = 0x01;
  14.          P5CON = 0xFF;
  15.          P5PH  = 0x00;
  16.          GPIO_Init(GPIO0, GPIO_PIN_4 | GPIO_PIN_5 |GPIO_PIN_6, GPIO_MODE_OUT_PP);
  17.          GPIO_Init(GPIO2, GPIO_PIN_2, GPIO_MODE_OUT_PP);
  18.          GPIO_Init(GPIO5, GPIO_PIN_3, GPIO_MODE_OUT_PP);
  19.          GPIO_Init(GPIO4, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5, GPIO_MODE_OUT_PP);
  20.          Delay(100);
  21.          Lcd_Init();
  22.          LCD_Clear(RED);
  23.          BACK_COLOR=RED;
  24.          LCD_Picturea();
  25.          LCD_ShowChinese(80,10,0,16,YELLOW);
  26.          LCD_ShowChinese(96,10,1,16,YELLOW);
  27.          LCD_ShowChar(112,10,':',0,YELLOW);
  28.          LCD_ShowChinese(80,30,2,16,YELLOW);
  29.          LCD_ShowChinese(96,30,3,16,YELLOW);
  30.          LCD_ShowChar(112,30,':',0,YELLOW);
  31.          LCD_ShowChinese(80,50,4,16,YELLOW);
  32.          LCD_ShowChinese(96,50,5,16,YELLOW);
  33.          LCD_ShowChar(112,50,':',0,YELLOW);
  34.          SC_ADC_Init();
  35.          while(1)
  36.          {
  37.                      ADCValue = ADC_GetConversionAverageValue(ADC_SamplesNum_EightTimes);
  38.                      LCD_ShowNum(120,10,ADCValue,4,YELLOW);
  39.                      Delay(1000);
  40.          }
  41. }

经程序的编译与下载,其满量程的采集结果如图1所示。
1.jpg
1 满量程检测
此外,在配置NTC热敏电阻的情况下,还可进行温度的检测。由于手头没有相应的功能模块,只好临时搭建了一个功能板,其这个硬件构成如图2所示。
2.jpg
2 硬件构成
使用NTC热敏电阻进行温度检测的方法有2种,一是采用查表法,另一个是采用公式法。
这里采用的是一种混合的处理方式,即基于关键点的差值处理法。因为查表法比较专用存储空间,而公式法则需要。
在电压检测电路的基础上,实现温度检测的主要程序为:
  1. while(1)
  2. {
  3.           ADCValue = ADC_GetConversionAverageValue(ADC_SamplesNum_EightTimes);
  4.           u=5.0*ADCValue/4095;
  5.         ...
  6.           if((u<=1.922)&&(u>1.435)) u=20+(1.922-u)/0.048;
  7.           if((u<=1.435)&&(u>1.050)) u=30+(1.435-u)/0.038;
  8.         ...
  9.           sd=u;
  10.           LCD_ShowNum(120,10,sd,4,YELLOW);
  11.           Delay(1000);
  12. }
在室温情况下,使用微控器的检测值如图3所示,而使用开发板所检测的结果则如图4所示。
3.jpg
3 室温检测值
4.jpg
4 实际检测值

在测量体感温度时,微控器的检测值见图5所示,而开发板的检测结果则如图6所示。
5.jpg
5体温检测值
6.jpg
6实际检测值


通过比对,其检测结果基本相近,是可以采用的。


belindagraham 发表于 2023-3-10 16:36 | 显示全部楼层
这个ADC的分辨率是多少?              
earlmax 发表于 2023-3-10 18:04 | 显示全部楼层
采集的是热电偶的数据吗?              
 楼主| jinglixixi 发表于 2023-3-10 22:04 | 显示全部楼层
earlmax 发表于 2023-3-10 18:04
采集的是热电偶的数据吗?

NTC热敏电阻的
 楼主| jinglixixi 发表于 2023-3-10 22:05 | 显示全部楼层
belindagraham 发表于 2023-3-10 16:36
这个ADC的分辨率是多少?

12位ADC
您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部