jinglixixi 发表于 2025-8-23 11:26

【APM32F402R Micro-EVB开发板测评】+NTC温度检测与波形绘制

在多通道数据采集的基础上,通过添加NTC温度感知器件即可实现温度检测及波形绘制功能。为简化设计的这里仅以一个温度检测点为例加以介绍,在实际应用中,由于温度滞后现象的存在,是会采用多点温度检测的。实现多通道数据采集及波形绘制的主程序为:int main(void)
{
          BOARD_TFT_Config();
          tft_Init();
          LCD_Clear(RED);
          BACK_COLOR=RED;
          POINT_COLOR=YELLOW;
          LCD_ShowString(120,10,"APM32F402");
          POINT_COLOR=WHITE;
      LCD_DrawLine(0, 30, 319, 30);
          LCD_DrawLine(0, 210, 319, 210);
          LCD_Fill(0,31,319,209,BLACK);
          BACK_COLOR=BLACK;
          POINT_COLOR=YELLOW;
          BACK_COLOR=RED;
          LCD_ShowString(10,220,"ch0:      mV");
          LCD_ShowString(110,220,"ch1:      mV");
          LCD_ShowString(210,220,"ch2:      C");
      ADC_Init();
          ii=1;
          sp1=0;
          sp2=0;
          sp3=0;
          while (1)
      {
         ADC_MultiChannelPolling();                       
          Delay(1000);
    }
}

经程序的编译与下载,其运行效果如图2所示。
图1 显示屏连接

图2 波形绘制 实现NTC温度检测及波形绘制的功能函数为:void ADC_MultiChannelPolling(void)
{
    float voltage;
    uint8_t index;
        uint32_t k,V,u;
    for (index = 0; index < ADC_CH_SIZE; index++)
    {
            voltage = (adcData * 3300.0) / 4095.0;
                  u=voltage;
                        k=voltagev*180/3300;
                  if(k>180) sj=180;
                  else sj=k;       
                        if(index ==0)
                        {
                                          POINT_COLOR=WHITE;
                                          LCD_ShowNum(50,220,voltage,4);
                                          POINT_COLOR=GREEN;
                                          LCD_DrawLine(2+4*(ii-1),200-sp1, 2+4*ii,200-sj);
                              sp1=sj;
                        }
                        if(index ==1)
                        {               
                                          POINT_COLOR=WHITE;
                                          LCD_ShowNum(150,220,voltage,4);
                                          POINT_COLOR=BLUE;
                                          LCD_DrawLine(2+4*(ii-1),200-sp2, 2+4*ii,200-sj);
                              sp2=sj;                                  
                        }
                        if(index ==2)
                        {
                                          POINT_COLOR=WHITE;                                       
                                          V=0;
                          if((u<=1644) && (u>1268))
                      V=10+(1644-u)/37;
                      if((u<=1268) && (u>947))
                      V=20+(1268-u)/32;
                      if((u<=947) && (u>692))
                      V=30+(947-u)/25;
                                          LCD_ShowNum(250,220,V,4);
                                          V=V*2;
                                          POINT_COLOR=RED;
                                          LCD_DrawLine(2+4*(ii-1),200-sp3-1, 2+4*ii,200-V-1);
                              sp3=V;
                                          ii=ii+1;                                       
                                          if(ii>79)
                                          {
                                                        ii=1;
                                                        LCD_Fill(0,31,319,209,BLACK);
                                POINT_COLOR=WHITE;                                        
                                          }
                          }
    }
}

在连接NTC温感器件的情况下,检测与波形绘制相关如图4所示。
图3 连接NTC检测模块

图4 升温测试

永恒的一瞥 发表于 2025-8-25 14:36

好厉害啊!
要怎么实现这个动态曲线啊

jinglixixi 发表于 2025-8-25 22:34

永恒的一瞥 发表于 2025-8-25 14:36
好厉害啊!
要怎么实现这个动态曲线啊

参照函数void ADC_MultiChannelPolling()即可

空灵回声 发表于 2025-8-26 10:13

我理解着动态曲线是打点实现,为什么楼主在ADC_MultiChannelPolling()使用的是LCD_DrawLine(2+4*(ii-1),200-sp2, 2+4*ii,200-sj);画线的API啊

jinglixixi 发表于 2025-8-27 00:34

空灵回声 发表于 2025-8-26 10:13
我理解着动态曲线是打点实现,为什么楼主在ADC_MultiChannelPolling()使用的是LCD_DrawLine(2+4*(ii-1),200 ...

那不成散点图了?

和谐智者 发表于 2025-8-27 19:38

这个还能这么玩呀!
还是楼主高级

jinglixixi 发表于 2025-8-29 09:12

和谐智者 发表于 2025-8-27 19:38
这个还能这么玩呀!
还是楼主高级

哈哈。。。

永恒的一瞥 发表于 2025-9-8 19:40

jinglixixi 发表于 2025-8-27 00:34
那不成散点图了?

我理解错了。
还是需要画线才对

jinglixixi 发表于 2025-9-9 10:31

永恒的一瞥 发表于 2025-9-8 19:40
我理解错了。
还是需要画线才对

实际也不算错,当画线密度比较大时,为了展示更宽的分为,用点也是可以取代线段的,但属极端情况下的处理方法。

分形梦想家 发表于 2025-9-10 19:35

这个GUI看着舒服。
动态曲线图的用户体验太棒了

蚊子的噩梦 发表于 2025-9-11 21:03

NTC温度传感器的多点检测确实很重要,可以更准确地捕捉温度变化

jinglixixi 发表于 2025-9-11 10:50

分形梦想家 发表于 2025-9-10 19:35
这个GUI看着舒服。
动态曲线图的用户体验太棒了

感谢支持!!!

涡流远见者 发表于 2025-9-11 16:12

楼主厉害
我还只会使用串口打印出来。
楼主已经通过LCD屏画曲线,而且是动态的。

jinglixixi 发表于 2025-9-11 17:06

涡流远见者 发表于 2025-9-11 16:12
楼主厉害
我还只会使用串口打印出来。
楼主已经通过LCD屏画曲线,而且是动态的。


多是积累的结果

神话编织者 发表于 2025-9-12 17:31

ADC没有使用滤波处理吗?
还想看看滤波算法呢

jinglixixi 发表于 2025-9-13 08:26

神话编织者 发表于 2025-9-12 17:31
ADC没有使用滤波处理吗?
还想看看滤波算法呢

没使用滤波处理在室内环境下影响不大,但在工业环境下就必不可少了。滤波算法可深可浅,简单的各种平均算法即可,高级的算法在微控器上也会受限。
页: [1]
查看完整版本: 【APM32F402R Micro-EVB开发板测评】+NTC温度检测与波形绘制